Tela Beta y separaciones de APK

Estoy dividiendo mi aplicación basada en ABI, no en la densidad, así:

splits { abi { enable true reset() include 'x86', 'armeabi', 'armeabi-v7a', 'mips', 'arm64-v8a' universalApk true } } 

Tengo varios sabores, y 2 tipos de construcción (depuración y liberación). Quiero poner el archivo apk universal, que tiene bibliotecas nativas para todas las plataformas, en beta de la tela. Por lo que entiendo, esto es compatible con el atributo ext.betaDistributionApkFilePath.

Puedo definir esto ya sea en el nivel buildType, o en el nivel de sabor. El problema es que necesito tanto el tipo de construcción y el sabor para recoger mi variante – algo así:

 android.applicationVariants.all { variant -> variant.ext.betaDistributionApkFilePath = "${buildDir}/outputs/apk/app-${variant.productFlavors[0].name}-universal-${variant.buildType.name}.apk" } 

o

 gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /crashlyticsUploadDistribution.*/) { System.out.println("task name: ${task.name}"); android.applicationVariants.all { variant -> System.out.println("match: crashlyticsUploadDistribution${variant.name}"); if(task.name ==~ /(?i)crashlyticsUploadDistribution${variant.name}/){ ext.betaDistributionApkFilePath = "${buildDir}/outputs/apk/app-${variant.productFlavors[0].name}-universal-${variant.buildType.name}.apk" System.out.println(ext.betaDistributionApkFilePath); } } } 

Lamentablemente, esto no parece funcionar – ¿hay alguna manera de hacer esto actualmente?

Para cada variante existente puede agregar una acción que se ejecutará antes de las tareas de Crashlytics y establecer ext.betaDistributionApkFilePath acuerdo con el nombre de la variante. Así es como se ve:

 android.applicationVariants.all { variant -> variant.outputs.each { output -> // Filter is null for universal APKs. def filter = output.getFilter(com.android.build.OutputFile.ABI) if (filter == null) { tasks.findAll { it.name.startsWith( "crashlyticsUploadDistribution${variant.name.capitalize()}") }.each { it.doFirst { ext.betaDistributionApkFilePath = output.outputFile.absolutePath } } tasks.findAll { it.name.startsWith( "crashlyticsUploadSymbols${variant.name.capitalize()}") }.each { it.doFirst { ext.betaDistributionApkFilePath = output.outputFile.absolutePath } } } } } 
  • Android Studio NDK Error de compilación Error: Error de ejecución de la tarea ': app: buildNative'
  • ¿Cómo puedo ignorar los fallos de las pruebas con el complemento rolelectrico gradle?
  • Android Studio + Artifactory
  • Excluir BuildConfig.class de la biblioteca de Android jar en Gradle
  • Cómo utilizar Gradle para generar archivos de proyecto Eclipse e Intellij para proyectos de Android
  • Integración de dependencias de Android Studio y Gradle
  • Error de Android RecyclerView
  • Publicar un archivo aar en Maven Central con Gradle no trabajando
  • AS obligar a utilizar android SDK Build Tools 25.0.0 SDK herramientas de compilación revisión (23.0.3) es demasiado bajo para el proyecto
  • AndroidStudio / Gradle con powermock
  • ¿Qué errores se detectan en "build" en Android Studio - rol de Gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.