Android Studio crear una variante de construcción / tipo excluyendo jniLibs?
Tengo una aplicación de Android que utiliza una biblioteca nativa JNI. Lo puse en app/src/main/jniLibs/armeabi-v7a
sin ninguna configuración de gradle y Android studio felizmente lo agrupa en el APK.
Tengo un requisito en el que todas las bibliotecas nativas no pueden ser agrupadas con una determinada distribución. ¿Es posible crear una variante de construcción o tipo de compilación que simplemente excluye todas las bibliotecas nativas (tal vez incluso por nombre .so
).
- Cómo rellenar Spinner con ArrayList en Android
- ¿Cómo iterar este JSON Array usando Java y org.json en Android?
- ¿Cómo puedo convertir la cadena de const valor de clase int?
- Cómo cargar Android v7 soporte de la biblioteca en SBT Android Project?
- Método de ContentValues no se burla
El hecho de que la biblioteca nativa falta en esta distribución no importa porque no se usa. La alternativa es quitar físicamente los archivos, ejecutar la compilación, ponerlos de nuevo. Sin embargo, esto es doloroso y propenso a errores.
- Calcular la diferencia entre dos veces android
- La notificación de Android vuelve a la actividad incorrecta
- Faltan credenciales de autenticación de Twitter4j
- IllegalStateException en el servicio de juegos de Google Play no tiene sentido
- ¿Cómo obtener la versión SDK de la aplicación y no del dispositivo?
- Android Studio informa "Código inalcanzable" con comparación de enum
- Uso de expresiones lambda con interfaces no funcionales en Java
- NoClassDefFoundError - Eclipse y Android
De su build.gradle
, podemos ser capaces de saber qué se debe hacer con precisión.
He utilizado productFlavours
, combinado con flavorDimensions
para implementar compilaciones que pueden o no incluir bibliotecas jni.
De lo que he entendido, la esencia de ello es: productFlavors
permiten tener n variantes de x, y … tipo, la adición de flavorDimensions
le permitiría tener n variantes de tipo xy.
P.ej. Dentro de 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" } } }
Como puede ver, tendrá múltiples variantes de construcción, sabores de producto dependiendo de flavorDimension
.
prod
sabor sería una variante de construcción o tipo de construcción que simplemente excluye todas las bibliotecas nativas
Fuentes de temas ndk, jniLibs, buildFlavours …:
– Dominando "Flavors de productos" en Android
– ndk-con-android-estudio
– configuración multi sabor