【问题标题】:Cannot add .so lib in Android Studio无法在 Android Studio 中添加 .so lib
【发布时间】:2016-08-08 10:23:45
【问题描述】:

这是我得到的错误:

08-08 12:05:37.198 3680-3680/? E/AndroidRuntime: FATAL EXCEPTION: main
                                             Process: com.vidyo.VidyoClient, PID: 3680
                                             java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.vidyo.VidyoClient-1/base.apk"],nativeLibraryDirectories=[/data/app/com.vidyo.VidyoClient-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libVidyoClientApp.so"
                                                 at java.lang.Runtime.loadLibrary(Runtime.java:367)
                                                 at java.lang.System.loadLibrary(System.java:1076)
                                                 at com.vidyo.VidyoClientLib.LmiAndroidAppJni.<clinit>(LmiAndroidAppJni.java:692)
                                                 at java.lang.Class.newInstance(Native Method)
                                                 at android.app.Instrumentation.newApplication(Instrumentation.java:996)
                                                 at android.app.Instrumentation.newApplication(Instrumentation.java:981)
                                                 at android.app.LoadedApk.makeApplication(LoadedApk.java:573)
                                                 at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)
                                                 at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:148)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

这就是我的 build.gradle 的样子:

 apply plugin: 'com.android.application'

android {
compileSdkVersion 19
buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "com.vidyo.VidyoClient"
    minSdkVersion 11
    targetSdkVersion 19
    ndkConfig.abiFilters "armeabi-v7a"
}

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        res.srcDirs = ['res']
        jni.srcDirs = []
        jniLibs.srcDirs = ['libs']
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}

}

dependencies {
compile project(':Libraries:drag-sort-listview:library')
compile project(':Libraries:BoxAndroidLibraryV2')
compile 'com.android.support:support-v4:19.1.0'
compile 'com.google.android.gms:play-services-base:7.3.0'

compile 'com.google.api-client:google-api-client:1.20.0'
compile 'com.google.api-client:google-api-client-android:1.20.0'
compile 'com.google.apis:google-api-services-drive:v2-rev165-1.20.0'
compile 'com.google.http-client:google-http-client:1.20.0'
compile 'com.google.http-client:google-http-client-gson:1.20.0'


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

这是我项目的结构。 https://s3.amazonaws.com/uploads.hipchat.com/39260/829560/lBv9TVa4GG0FiiF/upload.png

我尝试设置:jniLibs.srcDirs = ['libs'] as jniLibs.srcDirs = ['jni/lib'] 但我得到了同样的错误。 我错过了什么?我需要声明/运行其他东西吗?

【问题讨论】:

  • 在这里阅读我的答案以导入 *.SO 库,试试stackoverflow.com/a/33164947/3626214
  • 如果你用结构检查图片,你会发现我在 src 中没有主文件夹。它是否正确?我似乎无法用选项 1 修复它。并且不知道如何执行选项 2 和 3 没有 src/main 文件夹
  • 显示你的 AndroidStudio 文件夹树
  • 检查此链接:s3.amazonaws.com/uploads.hipchat.com/39260/829560/…@Aspicas 如您所见。 src 文件夹里面只有包。没有 MAIN,并且 res src、libs 文件夹直接在项目文件夹中,我猜他们在 Eclipse 上从事这个项目:-?不确定
  • 嗯,这很奇怪...证明它是创建一个新的 Android Studio 项目并检查 main 文件夹是否出现在此项目中,并显示 Android Studio 树屏幕截图而不是 finder。

标签: android java-native-interface shared-libraries build.gradle .so


【解决方案1】:

我从 jni 再次构建了我的 .so 库,然后它就可以工作了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多