4

谁能解释我如何将 Dropbox SDK 包含到 Android Studio 中?在 Dropbox 的站点上,我找到了 Eclipse IDE 的信息。我已经尝试将它包含到 Android Studio 中,但没有结果。IDE 找不到类com.dropbox.sync

/错误当我想创建时我创建链接 mDbxAcctMgr = DbxAccountManager.getInstance(getApplicationContext(), appKey, appSecret); /

    09-02 12:38:46.297    1133-1133/? E/AndroidRuntime: Uncaught handler: thread main exiting due to uncaught exception
09-02 12:38:46.307    1133-1133/? E/AndroidRuntime: java.lang.ExceptionInInitializerError
        at com.dropbox.sync.android.CoreAccountManager.initNativeLib(CoreAccountManager.java:111)
        at com.dropbox.sync.android.CoreAccountManager.<init>(CoreAccountManager.java:91)
        at com.dropbox.sync.android.DbxAccountManager.getInstance(DbxAccountManager.java:132)
        at com.dropbox.sync.android.DbxAccountManager.getInstance(DbxAccountManager.java:100)
        at com.example.dropbox.MainActivity.onCreate(MainActivity.java:43)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
        at android.app.ActivityThread.access$2200(ActivityThread.java:119)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4363)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:521)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.ExceptionInInitializerError
        at com.dropbox.sync.android.NativeLib.<init>(NativeLib.java:33)
        at com.dropbox.sync.android.NativeLib.<clinit>(NativeLib.java:11)
        ... 18 more
        Caused by: java.lang.UnsatisfiedLinkError: Library DropboxSync not found
        at java.lang.Runtime.loadLibrary(Runtime.java:489)
        at java.lang.System.loadLibrary(System.java:557)
        at com.dropbox.sync.android.NativeHttp.<clinit>(NativeHttp.java:411)
        ... 20 more
4

3 回答 3

5

我以前从未使用过 Android Studio,所以我不得不查找它......这些是向 Android Studio 项目添加外部库的好说明:如何将库项目添加到 Android Studio?

libs在使用 Dropbox Android Sync SDK 之后,我将 Android SDK 中的内容粘贴到libs我的 Android 项目中,然后将这一行添加到build.gradle(内部dependencies):

compile files('libs/dropbox-sync-sdk-android.jar')

这似乎对我有用。如果您尝试过但没有成功(或者如果您尝试过其他方法),请提供一些详细信息。

编辑从Android 和 DropboxSync 库中粘贴我的答案以确保完整性:

我发现这个答案很有帮助:Include .so library in apk in android studio

我的build.gradle文件的一部分现在看起来像这样,我的应用程序成功启动:

dependencies {
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    compile fileTree(dir: 'libs', include: '*.jar')
}

task nativeLibsToJar(
        type: Zip,
        description: 'create a jar archive of the native libs') {
    destinationDir file("$buildDir/native-libs")
    baseName 'native-libs'
    extension 'jar'
    from fileTree(dir: 'libs', include: '**/*.so')
    into 'lib/'
}

tasks.withType(Compile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
于 2013-09-01T21:16:04.967 回答
2

官方解决方案对我不起作用。我注意到 tasks.withType(Compile) 中的“编译”有一个已弃用的警告。

build.gradle 中的以下行有效:

dependencies {
    compile files('libs/dropbox-sync-sdk-android.jar')
}

android {
    tasks.withType(com.android.build.gradle.tasks.PackageApplication) {
        pkgTask -> pkgTask.jniFolders = new HashSet<File>();
            pkgTask.jniFolders.add(new File(projectDir, 'libs'));
    }
}

将 Dropbox sdk 中的“libs”文件夹与“build”和“src”文件夹放在同一级别。

于 2013-12-31T19:59:12.253 回答
1

您在 Dropbox 开发者博客中有官方答案:

https://www.dropbox.com/developers/blog/57/using-the-sync-api-with-android-studio

有趣的是,一个足以让自己的 api 开发人员回答的有趣问题被评为否定......

于 2013-09-24T10:23:07.913 回答