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.
- Android Gradle build resultante apk contiene clases ofuscadas y no ofuscadas
- Android gradle plugin multidex ZipException
- Utilice diferentes tipos de compilación de módulo de biblioteca en el módulo de aplicación de Android en Android Studio y Gradle
- Uso de Quasar Fibers en la aplicación para Android
- ¿Cómo gradle resolver conflictos cuando dos dependencias tienen una dependencia interna en la misma biblioteca, pero con diferentes versiones en Android?
¿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?
- Com.android.build.transform.api.TransformException
- Cómo cambiar a una versión anterior de Gradle
- Uso de SDK de Amazon Web Service para Android en Android Studio
- Error de compilación de Android; Java plugin se ha aplicado, no es compatible con Android
- ¿Cómo puedo resolver "los archivos duplicados copiados en APK META-INF / *"
- Android Studio en mac: no puedo encontrar el compilador del sistema
- Cómo establecer versionName en APK filename usando gradle?
- Cómo construir una biblioteca de Android con Android Studio y gradle?
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