我正在撰写Google Glass应用程序。我正在使用第三方库,其中包含一些资产(以及将它们放在assets / dir中的说明),一些罐子(以及将它们放在libs / dir中的说明)和.so(以及放置的说明)它在libs / armenabi-v7a /).
当我运行应用程序时,我得到一个UnsatisfiedLinkError,看起来没有包含.so。解压缩这个证实了这一点,我没有在任何地方看到.so。
java.lang.UnsatisfiedLinkError: Couldn't load nameofsofile_jni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.package.demo-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.package.demo-1, /vendor/lib, /system/lib]]]: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:358)
at java.lang.System.loadLibrary(System.java:529)
at <Calls inside the external library>
我的build.gradle:
apply plugin: 'com.android.application'
repositories {
jcenter()
flatDir {
dirs 'prebuilt-libs'
}
}
android {
compileSdkVersion "Google Inc.:Glass Development Kit Preview:19"
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.package.demo"
minSdkVersion 19
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: new File(buildDir, 'libs'), include: '*.jar')
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('src/main/libs/jarone.jar')
compile files('src/main/libs/jartwo.jar')
compile files('src/main/libs/jarthree.jar')
}
如何让它包含.so?
答案 0 :(得分:1)
默认情况下,Android Studio中的.so文件应放在src/main/jniLibs/
而不是src/main/libs/
。我没有理由让您更改此设置,但可以将以下代码添加到android{}
文件的build.gradle
部分。
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
}