2015-06-23 3 views
5

У меня есть приложение для Android, которое использует собственную библиотеку JNI. Я положил его в app/src/main/jniLibs/armeabi-v7a без какой-либо конфигурации градиента, и студия Android радостно связывает ее с APK.Android Studio создает вариант сборки/тип, исключая jniLibs?

У меня есть требование, когда все родные библиотеки не могут быть связаны с определенным дистрибутивом. Возможно ли создать вариант сборки или тип сборки, который просто исключает все собственные библиотеки (возможно, даже по имени .so).

Тот факт, что родная библиотека отсутствует в этом дистрибутиве, не имеет значения, потому что она не используется. Альтернативой является физическое удаление файлов, запуск сборки, их возврат. Однако это болезненно и подвержено ошибкам.

+0

pls post your 'build.gradle' – user2450263

ответ

2

С вашего build.gradle, возможно, мы сможем узнать, что нужно делать точно.

Я использовал productFlavours в сочетании с flavorDimensions для реализации сборок, которые могут включать или не включать библиотеки jni.

Из того, что я понял, суть в нем: productFlavors позволяет вам иметь n вариантов x, y ... type, добавив flavorDimensions, чтобы вы имели n вариантов xy-типа.

Например. Внутри build.gradle,

flavorDimensions "abi", "version" //this is what can help you build with/w/o jni libraries 

    productFlavors { 
     devel { 
      flavorDimension "abi" //keep a dimension common with arm, armv7 
      applicationId "com.packagename.dev" 
     } 
     prod { 
     flavorDimension "version" 
    // this would be your build w/o the ndk support then 
      applicationId "com.packageName" 
     } 
     armv7 { 
      ndk { 
       flavorDimension "abi" 
       abiFilter "armeabi-v7a" 
      } 
     } 
     arm { 
      ndk { 
       flavorDimension "abi" 
       abiFilter "armeabi" 
      } 
     } 

    }  

Как вы можете видеть, вы будете иметь несколько вариантов сборки, ароматизаторов продукта в зависимости от flavorDimension.

prod вкус будет вариант сборки или построить тип, который просто исключает все собственные библиотеки

Источники темы НДК, jniLibs, buildFlavours ...:
- Mastering "Product Flavors" on Android
- ndk-with-android-studio
- multi flavor setup

+0

Это идеальный ответ (и работает). К сожалению, просто стало ясно, что нам нужно 'libxwalkcore.so', но не' libeposprint.so'. Могу ли я выборочно исключать файлы? –

+0

рад, что это помогло, из того, что я увидел, я не знаю, как это сделать. Не кажется вероятным, если это можно сделать, надеюсь, что есть способ! – user2450263

+0

@ user2450263 - Можно ли обменять ресурсы jniLibs на основе сбоев сборки? http://stackoverflow.com/questions/31687547/gradle-swap-jnilibs-resources-based-on-build-flavor .. Очень ценим !! – user2511882

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