我正在尝试在我现有的 Android 应用程序中实现 DropboxSync
API。
我已经下载了 DropboxSync
API 并将所有库复制到我的应用程序的库文件夹中。
我还将 Native Library 位置指向 libDropboxSync.so 所在的 libs 文件夹。
list .xml
....
<!-- Dropbox Activities -->
<activity android:name="com.dropbox.sync.android.DbxAuthActivity" />
<activity
android:name="com.dropbox.client2.android.AuthActivity"
android:launchMode="singleTask" >
<intent-filter>
<data android:scheme="db-intentionally-hidden-app-key" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service
android:name="com.dropbox.sync.android.DbxSyncService"
android:enabled="true"
android:exported="false"
android:label="Dropbox Sync" />
Main_Activity.java
public class Activity_Main extends Activity implements OnClickListener,
OnItemClickListener, OnTouchListener {
....
....
....
private DbxAccountManager mDbxAcctMgr;
onCreate(....)
{
//Application giving FATAL EXCEPTION on the line below.
mDbxAcctMgr = DbxAccountManager.getInstance((Activity)Activity_Main.this, DROPBOX_APP_KEY, DROPBOX_APP_SECRET);
....
}
....
}
Logcat 日志
12-06 10:10:25.362: E/AndroidRuntime(8110): FATAL EXCEPTION: main
12-06 10:10:25.362: E/AndroidRuntime(8110): Process: com.***.***, PID: 8110
12-06 10:10:25.362: E/AndroidRuntime(8110): java.lang.UnsatisfiedLinkError: Couldn't load DropboxSync from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/data/app/com.***.***-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.***.***-1, /vendor/lib, /system/lib]]]: findLibrary returned null
12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.Runtime.loadLibrary(Runtime.java:358)
12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.System.loadLibrary(System.java:526)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.NativeHttp.<clinit>(NativeHttp.java:447)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.NativeLib.<init>(NativeLib.java:33)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.NativeLib.<clinit>(NativeLib.java:11)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.CoreAccountManager.initNativeLib(CoreAccountManager.java:155)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.CoreAccountManager.<init>(CoreAccountManager.java:126)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.DbxAccountManager.getInstance(DbxAccountManager.java:149)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.DbxAccountManager.getInstance(DbxAccountManager.java:115)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.***.***.activities.Activity_Main.onCreate(Activity_Main.java:459)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.Activity.performCreate(Activity.java:5243)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.access$700(ActivityThread.java:135)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.os.Handler.dispatchMessage(Handler.java:102)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.os.Looper.loop(Looper.java:137)
12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.main(ActivityThread.java:4998)
12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.reflect.Method.invokeNative(Native Method)
12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.reflect.Method.invoke(Method.java:515)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-06 10:10:25.362: E/AndroidRuntime(8110): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-06 10:10:25.362: E/AndroidRuntime(8110): at dalvik.system.NativeStart.main(Native Method)
12-06 10:10:25.532: W/ActivityThread(8110): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());
我已经尝试过这个解决方案:Error in dropboxSync: findlibrary returned null
但这对我不起作用。
所以请不要将此问题标记为重复。
非常感谢任何帮助,谢谢。
最佳答案
libs
目录下的 armeabi-v7a
文件夹中缺少
libDropboxSync.so
。
我将 libDropboxSync.so
从 armeabi-v7
文件夹复制到 libs
目录下的 armeabi-v7a
文件夹,然后库加载成功。
由于我使用 Google-Nexus-7
第二代进行调试,因此 armeabi-v7a
文件夹中的 DropboxSync
库是必须的。
关于android - Dropbox Sync API - 不满意的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20417027/