Uso de las divisiones de APK para el tipo de generación Release pero no Debug
He implementado con éxito APK Splits para que se generen APKs separados para diferentes ABI.
Sin embargo, para la eficiencia (y como no tengo necesidad de APKs no-armeabi-v7a en depuración), me gustaría limitar las compilaciones de depuración para generar sólo APK armeabi-v7a.
- NoClassDefFoundError en Runtime en clase dentro de .AAR en Android Studio
- Mover a construir herramientas 1.3.0 rompió nuestra construcción con proguard habilitado
- Appcompat v7 no se introduce en el proyecto
- Wear App y con tipo de compilación personalizado con applicationIdSuffix
- Excepción inesperada de nivel superior en android-support-v4.jar
¿Cómo se puede hacer esto?
Una idea es con esto:
abi { enable true reset() include 'x86', 'armeabi-v7a', 'mips' universalApk false }
Tal vez hay alguna manera de establecer enable
basado en el tipo de construcción?
- El complemento de Android Studio es demasiado antiguo
- Android studio 1.2 gradle es muy lento
- No puede instalar el repositorio y el proyecto de sincronización - no puede utilizar las bibliotecas de soporte 25.2.0
- ¿Por qué no agregar mavenLocal () en todas las aplicaciones de Android?
- Gradle: No se ha encontrado ningún identificador de recurso para el atributo cuando se usan sabores y packageName
- Gradle issue inusual
- Android Studio: las variantes de la generación no aparecen
- Pasar parámetros -P a gradle desde android studio
Puede establecer enable
basado en el argumento de la línea de comandos. He resuelto algo similar problema cuando quería utilizar splits sólo para la versión de lanzamiento, pero no para compilaciones regulares de depuración.
splits { abi { enable project.hasProperty('splitApks') reset() include 'x86', 'armeabi-v7a' } }
Y luego ./gradlew -PsplitApks assembleProdRelease
(prod es un sabor en mi caso).
Puede probar una variación en la respuesta de @ Geralt_Encore, que evita el comando gradlew
separado. En mi caso, sólo me importó usar la división APK para reducir el tamaño del archivo APK liberado, y quería hacerlo completamente en Android Studio.
splits { abi { enable gradle.startParameter.taskNames.contains(":app:assembleRelease") reset() include 'x86', 'armeabi-v7a', 'mips' universalApk false } }
Es posible que deba reemplazar el prefijo :app
por el nombre de su módulo de aplicación si no tiene literalmente nombre de app
.
Por lo que he visto, el Build | Generar elemento de menú APK firmado en Android Studio genera el APK utilizando el objetivo assemblRelease Gradle.
Tenga en cuenta que si está generando un APK utilizando los sabores de compilación, o su versión de lanzamiento no se denomina release
, deberá cambiar el objetivo assembleRelease
acuerdo, por ejemplo, assemblePaidRelease
si se paid
su sabor de construcción.
De hecho, todavía necesita habilitar Splits, de lo contrario su APK incluirá libs para todos los ABI y eso probablemente no es lo que quiere.
Esto debería funcionar para sus necesidades:
buildTypes { debug { splits { abi { enable true reset() include 'armeabi-v7a' universalApk false } } ... } release { splits { abi { enable true reset() include 'x86', 'armeabi-v7a', 'mips' universalApk false } } ... } }
- Volea Android MalformedURLException URL incorrecta
- Android: FragmentPagerAdapter: método getItem llamado dos veces Primera vez