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.
- Importar proyecto de gradle para eclipsar
- Gradle segunda generación falla después de modificar styles.xml
- Ionic Gradle failure "No se pudo encontrar com.android.tools.build:gradle:2.2.3"
- Google Play "Plataformas nativas" que muestra commons-io-2.4.jar
- Proyecto Android a Cordova plugin - R.java no encontrado / creado
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?
- Clase no encontrada en aar
- Gradle: añadir dependencia para un sabor específico de la biblioteca
- Error: no se puede encontrar el símbolo en Android gradle library module unit test
- Gradle assembleDebug y preDexDebug fallan con CircleCI
- AndroidStudio (0.8.9 Mac) No se pudo sincronizar el nuevo proyecto Gradle
- Gradle Artifactory Plugin - ¿Cómo publicar artefactos de múltiples módulos en un proyecto?
- Cómo definir y utilizar una constante en el script de compilación de Gradle (Android)?
- Utilizar interfaces AIDL entre módulos / subproyectos en Gradle
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 } } } } }
- Conectar android a dos redes inalámbricas simultáneamente
- SavedInstanceState vs getIntent (). GetExtras ()