首页 文章

Android Studio / Gradle - 为Flavor特定的Jni库配置

提问于
浏览
2

我正在使用Android studio 1.0.1和Gradle 1.0.0 .

我正在尝试使用具有相同名称的特定于风味的JNI库(和相同的入口点,只有内部代码不同) .

我有两种口味“完整”和“精简”,目前仍然指向相同的jni lib“my-lib.so” .

我有以下项目树:

app\
  src\
    main\
      jniLibs\
        armeabi-v7a\
           my-lib.so
    full\
    lite\

我希望每个风格都有一个不同的“my-lib.so”lib . 风味之间的所有变化都是图书馆内部的 .

我尝试过这样的事情:

app\
  src\
    main\
      jniLibs\
        armeabi-v7a\
           my-lib.so
    full\
      jniLibs\
        armeabi-v7a\
           my-lib.so
    lite\
      jniLibs\
        armeabi-v7a\
           my-lib.so

但是这会引发以下错误消息:

错误:在打包APK%path%\ app \ build \ outputs \ apk \ app-lite-debug-unaligned.apk期间重复文件存档中的路径:lib / armeabi-v7a / my-lib.so原点1:%path% \ app \ src \ main \ jniLibs \ armeabi-v7a \ my-lib.so原点2:%path%\ app \ src \ lite \ jniLibs \ armeabi-v7a \ my-lib.so

我得到了以下Gradle构建:

apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "xxxxxxxxx"
    minSdkVersion 15
    targetSdkVersion 19
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

productFlavors {
    lite {
        applicationId "xxxxxxxxxxLite"
        minSdkVersion 16
        targetSdkVersion 19
        ndk {
            abiFilter "armeabi-v7a"
        }
    }
    full {
        applicationId "xxxxxxxxxxxFull"
        minSdkVersion 18
        targetSdkVersion 19
        ndk {
            abiFilter "armeabi-v7a"
        }
    }
}

}

Gradle有可能做到这一点吗?我错过了重要的事吗?谢谢你的帮助 :-)

1 回答

  • 1

    您不能在产品flavor目录(此处为 fulllite )中具有与 main 中的文件相同的文件 .

    你必须删除 main 中的文件才能使其正常工作 .

相关问题