2

Я работаю с Android studio 1.0.1 & Gradle 1.0.0.Android Studio/Gradle - Конфигурация для специфичных для Flavor Jni libs

Я пытаюсь использовать специфические для JNI библиотеки, имеющие одно и то же имя (и те же точки входа, только внутренний код отличается).

У меня есть два аромата «полный» и «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% \ приложение \ построить \ выходы \ APK \ app-lite-debug-unaligned.apk Путь в архиве: lib/armeabi-v7a/my-lib.so Происхождение 1:% путь% \ app \ src \ main \ jniLibs \ armeabi-v7a \ my-lib.so Происхождение 2:% путь% \ приложение \ 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

Вы не можете иметь файл в каталоге продукт ароматизатора (здесь full и lite), который так же, как файл в main.

Вы должны удалить файл в main, чтобы заставить его работать.

Смежные вопросы