【发布时间】:2015-11-02 22:31:51
【问题描述】:
我是根据 ABI 而不是密度拆分我的应用程序,如下所示:
splits {
abi {
enable true
reset()
include 'x86', 'armeabi', 'armeabi-v7a', 'mips', 'arm64-v8a'
universalApk true
}
}
我有多种风格和 2 种构建类型(调试和发布)。我想将具有适用于所有平台的本机库的通用 apk 文件放在 fabric beta 上。据我了解,这是通过 ext.betaDistributionApkFilePath 属性支持的。
我可以在 buildType 级别或风味级别定义它。问题是我需要构建类型和风格来选择我的变体 - 像这样:
android.applicationVariants.all { variant ->
variant.ext.betaDistributionApkFilePath = "${buildDir}/outputs/apk/app-${variant.productFlavors[0].name}-universal-${variant.buildType.name}.apk"
}
或
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);
}
}
}
不幸的是,这似乎不起作用 - 目前有什么方法可以做到这一点吗?
【问题讨论】:
-
这就像没有定义变量一样 - 警告我有多个 apk 文件,然后退出。
-
谢谢马克,只要知道通用 APK 的路径,这应该可以工作。构建时该路径是否正确填充?
-
如果我在配置中硬编码 ext.betaDistributionApkFilePath,没有变量,它会找到通用 apk 文件就好了,例如ext.betaDistributionApkFilePath="app/build/outputs/apk/app-flavor1-universal-debug.apk"。我要做的是根据构建风格(lite/pro)和构建类型(发布/调试)动态设置该路径。每个构建风格和类型组合都有一个唯一的 applicationId。
-
如果我在构建风格中设置 ext.betaDistributionApkFilePath,我可以使用变量引用风格名称,但我无法设置构建类型。如果我在 buildTypes 中设置变量,我可以将构建类型作为变量引用,但不能将风味名称作为变量引用。
-
名称的 productFlavor 部分不正确,但已在上面修复。 System.out.println() 指向一个存在的路径 - 似乎与上传任务无关。
标签: android android-gradle-plugin crashlytics crashlytics-beta crashlytics-android