我正在开发特定的sdk,为其他android应用程序提供一些功能。
我的sdk项目依赖项的一个库项目有一些.so lib文件。在用gradle将我的sdk项目组装到aar包时,我发现不包括.so文件。
如何将.so lib文件组装到aar包中?
以下是sdk项目的build.gradle:

apply plugin: 'com.android.library'

android {
    signingConfigs {
        debug {
            keyAlias 'debug.keystore'
            keyPassword 'ssdebug'
            storeFile file('release-tools/debug.keystore')
            storePassword 'ssdebug'
        }
        release {
            keyAlias 'release.keystore'
            keyPassword 'dddd'
            storeFile file('../seedstore/release.keystore')
            storePassword 'dddd'
        }
    }
    compileSdkVersion 22
    buildToolsVersion "22.0.1"
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 22
        signingConfig signingConfigs.release
    }

    sourceSets {
        main {
            jniLibs.srcDir file('jni/')
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),      'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.debug
            }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile project(':alisdk')
    compile project(':jdsdk')
}

最佳答案

我只是千方百计做了同样的事情,终于通过了。
-
我用android studio创建了一个android库模块。
在这个模块中,创建包名与jni接口完全匹配的xxx.java接口文件。
/modulename/src/main/创建文件夹“jnilibs”
将所有带平台名的*.so文件复制到…/jnilibs中
它看起来像:
/JNILBS/
->/阿姆拉比/->libxxx.so
->/x86/->libxxx.so文件

无需更改构建脚本,构建库模块
.arr文件应该在
/模块名/build/outputs/xxx.aar
使用提取器工具解压final xxx.aar,*.so文件应该在.aar/jni下/
//注释:
我试图将*.so文件添加到xxx.jar中,将其添加到模块的libs下,添加其编译依赖性。aar把它打包成libs。但是,当用户使用this.aar时,本机函数调用存在链接错误。

07-24 09:47
查看更多