我們使用不同的.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']} –