Android - Gradle架構中使用的“.so”庫
Gradle架構中使用的".so"庫
本文地址:http://blog.csdn.net/caroline_wendy
Android使用Gradle架構的Android應用,需要對.so庫做特殊的處理,因為會找不到,就會導致編譯正確,使用錯誤;
常見的使用情況是根據不同的cpu,有不同的庫,包括:armeabi,mips,x86等。
報錯:
java.lang.UnsatisfiedLinkError: Couldn't load weibosdkcore from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xxx.apk"],nativeLibraryDirectories=[/data/app-lib/xxx-2, /vendor/lib, /system/lib]]]: findLibrary returned null
有兩種方法可以解決:
1. 將“.so”庫生成jar
把jar引入項目即可,需要注意目錄的順序:
-lib --armeabi ---xxx.so命令:
jar cvf xxx_cpu.jar ./lib再加載到應用中,即可;
2. 使用gradle配置
在Android{}的范圍內,添加:
//noinspection all task copyNativeLibs(type: Copy) { // third party lib so from(new File(projectDir, 'libs')) { include 'armeabi/*.so' } into new File(buildDir, 'native-libs') } tasks.withType(JavaCompile) { compileTask -> //noinspection all compileTask.dependsOn copyNativeLibs } //noinspection all tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet<File>() pkgTask.jniFolders.add(new File(buildDir, 'native-libs')) }
即可,"//noinspection all"可以去除warning。
來自: http://blog.csdn.net//caroline_wendy/article/details/42246015
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!