我有一些外部共享库要添加一个jar文件。文件结构如下:
project
|---lib
|---armeabi-v7a/xxx.so
|---x86/xxx.so
|---libs
|---xxx.jar
|---xxx.jar
我的build.gradle是:
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 9
targetSdkVersion 22
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
jniLibs.srcDirs = ['lib']
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
}
task makeJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('../../releases/')
include('classes.jar')
rename ('classes.jar', 'myjar.jar')
}
makeJar.dependsOn(clearJar, build)
我使用命令查看jar:
$ jar tf myjar.jar
...
armeabi-v7a/
armeabi-v7a/xxx.so
x86/
x86/xxx.so
但它会导致崩溃:
java.lang.UnsatisfiedLinkError:无法从loader dalvik.system.PathClassLoader
加载xxx
如何正确完成?
答案 0 :(得分:1)
将jar路径添加到依赖项中,如下所示:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile files(‘libs/***.jar')
}
----编辑----
和
sourceSets {
main {
jni.srcDirs = [] // disable automatic ndk-build call
jniLibs.srcDirs = ['libs'] // add your jni .so file path
}
}
答案 1 :(得分:0)
重组文件结构:
project
|---lib
|---lib
|---armeabi-v7a/xxx.so
|---x86/xxx.so
|---libs
|---xxx.jar
|---xxx.jar
build.gradle像这样:
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/../lib'
}
}
}
task makeJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('../../releases/')
include('classes.jar')
rename ('classes.jar', 'myjar.jar')
}