【发布时间】:2019-06-09 08:13:21
【问题描述】:
我今天将我的 Android Studio 更新到了 Gradle 插件版本 4.10.1 附带的 3.3 版本。
以前,我的 build.gradle 使用此代码将我的 apk 重命名为以下结构:
app-{buildType[release|debug]}-{flavor[prod|stage]}-{versionName[1.2.4]-{versionCode[43]}.apk
app-release-prod-1.1.4-45.apk。
applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = output.outputFile.name.replace(".apk", "-${variant.versionName}-${variant.versionCode}.apk").replace("-unsigned", "")
}
}
但更新后出现此错误。
警告:API 'variantOutput.getPackageApplication()' 已过时,已替换为 'variant.getPackageApplicationProvider()'。 它将在 2019 年底被删除。 有关详细信息,请参阅https://d.android.com/r/tools/task-configuration-avoidance。 要确定调用 variantOutput.getPackageApplication() 的内容,请在命令行上使用 -Pandroid.debug.obsoleteApi=true 以显示堆栈跟踪。 受影响的模块:app
问题在于 output.outputFile.name,因为您无法访问此插件版本的输出数据。
到目前为止,我已经尝试过这种方法,但没有成功。
applicationVariants.all { variant ->
variant.flavors*.name.all { flavor ->
outputFileName = "${flavor}-${variant.buildType.name}-${variant.versionName}-${variant.versionCode}.apk".replace("-unsigned", "")
}
}
有什么想法吗?
================================================ ========
更新
我重新考虑了这个问题,我尝试了以下 sn-p,但我在检索该变体的味道时遇到了问题。
android.applicationVariants.all { variant ->
def flavor = variant.flavorName
variant.outputs.all { output ->
def builtType = variant.buildType.name
def versionName = variant.versionName
def versionCode = variant.versionCode
outputFileName = "app-${flavor}-${builtType}-${versionName}-${versionCode}.apk"
}
}
outputs: app--release-1.0.4-88.apk
谢谢
【问题讨论】:
-
你试过
${variant.getFlavorName()}.apk或variant.baseName吗? -
variant.baseName 与 variant.buildType.name 相同,打印“release”。但是 variant.getFlavorName() 完成了这项工作。此外, variant.flavorName 也可以工作,但是 gradle 文件的其他部分有一点问题并且没有工作,现在可以了。谢谢。
-
@GensaGames 如果你发布答案,我很乐意给你赏金
-
@axierjhtjz 很抱歉忙于工作场所变动)很高兴您解决了问题)
标签: android gradle gradle-plugin android-studio-3.3