我们使用不同的.so文件集来调试和发布版本。 build.gradle
包含followign事情:Android单元测试和.so文件[链接器错误]
sourceSets {
debug {
main.jniLibs.srcDirs = ['libs/debug']
test.jniLibs.srcDirs = ['libs/debug']
}
release {
main.jniLibs.srcDirs = ['libs/release']
test.jniLibs.srcDirs = ['libs/release']
}
}
的.so文件是库/调试和库/ release文件夹内。应用程序正常工作与发布和调试模式下创建的apk。但是,Android单元测试用例失败并显示错误:
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.test.mapp/app_files/.???" has bad ELF magic
at java.lang.Runtime.load(Runtime.java:331)
可能是什么原因?如果我们通过在libs文件夹中添加子文件夹(调试/发布)来同时使用.so文件的调试版本和发行版本,那么它不起作用吗? 还有一件事在这里补充的是,它如果我使用.so文件的一组(调试/释放)在libs文件夹和的build.gradle
sourceSets {
main.jniLibs.srcDirs = ['libs']
test.jniLibs.srcDirs = ['libs']
}
更新使用以下格式[08-11工作正常-2016]: 当应用程序调试apk在设备或仿真器上运行时,甚至会观察到崩溃。 发布apk很好。 .so文件也适用于不同的文件夹,比如debug/arm64-v8a,debug/mips等。基于此,我猜测apk不会正确地从libs/debug子文件夹中选取.so文件。
的Andorid单元测试设备上运行。如果我在libs文件夹中使用一组(调试或释放).so文件,它工作正常。并使用以下格式:sourceSets {main.jniLibs.srcDirs = ['libs'] test.jniLibs.srcDirs = ['libs']} –