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.

¿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?

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 } } ... } } 
  • Definir buildconfigfield para un sabor específico AND buildType
  • Gradle assembleDebug y preDexDebug fallan incluso para nuevo proyecto
  • La importación de mi biblioteca de Android en una aplicación no se reconoce como una biblioteca
  • No se puede ejecutar el proyecto en Android Studio (libGDX)
  • Error: org.gradle.api.internal.changedetection.state
  • External AndroidManifest.xml no aparece en el panel de vista del proyecto
  • No se pudo resolver: com.github.PhilJay: MPAndroidChart: v2.1.4
  • Android Studio Gradle Configuración con nombre 'default' no encontrado
  • Error de Gradle: Android Studio, ActionbarSherlock y SlidingMenu
  • Error en la construcción con Gradle en la línea de comandos con un proyecto de estudio de Android: Xlint error
  • "Gradle Version 2.10 es necesario." Error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.