Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android - Gradle架構中使用的“.so”庫

Android - Gradle架構中使用的“.so”庫

編輯:關於Android編程

Gradle架構中使用的.so庫

 

 

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()
            pkgTask.jniFolders.add(new File(buildDir, 'native-libs'))
    }

即可,//noinspection all可以去除warning

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved