2

我正在使用 Android Studio 1.0.1 和 Gradle 1.0.0。

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

我有两种口味“full”和“lite”,目前仍然指向同一个 jni lib“my-lib.so”。

我有以下项目树:

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

我想为每种口味使用不同的“my-lib.so”库。口味之间的所有变化都是图书馆内部的。

我试图做类似的事情:

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 可以做这种事情吗?我错过了什么重要的东西吗?谢谢你的帮助 :-)

4

1 回答 1

1

产品风味目录(此处fulllite)中的文件不能与main.

Si 您必须删除文件main才能使其正常工作。

于 2014-12-18T13:12:00.000 回答