gpt4 book ai didi

Android Studio/gradle 动态 apk 名称不同步

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:08 27 4
gpt4 key购买 nike

我希望在每个构建中使用日期/时间 (yyMMddHHmm) 动态命名 APK。我已经完成了这个并且 gradle 构建并正确命名了 APK,但是 Android Studio 不会选择正确的名称来尝试推送到设备。

关于此主题的问题有一些很好的信息,确认了问题并且在每次构建之前都需要手动同步。 Android Studio uploads sterile APK to device when Gradle has custom logic changing APK names

完整的图片是我的build.gradle

android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

// grab the date/time to use for versionCode and file naming
def date = new Date();
def clientBuildDate = date.format('yyMMddHHmm')

// for all client files, set the APK name
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, "myapp-" + versionName.replace(".","_") + "-" + clientBuildDate + ".apk")
}
}
....
defaultConfig{...}
buildTypes{...}
compileOptions{...}
signingConfigs{...}
}

以上将生成如下输出:

myapp-1_0_0-1507021343.apk
myapp-1_0_0-1507021501.apk
myapp-1_0_0-1507021722.apk

但 Android studio 将始终尝试将第一个版本加载到手机,因为它不同步并且不知道每次构建后的名称更改。

有没有关于如何在每次构建/运行 Android Studio 时强制同步的建议?在构建之前手动进行同步是一种阻碍,并且需要我回到默认的 APK 命名方案。

使用:AS 1.2.1.1 & 'com.android.tools.build:gradle:1.2.3'

最佳答案

另一种选择是让您的外部发布构建由 CI 服务器提供(无论如何它们应该是),然后将以下内容添加到您的 build.gradle

apply plugin: 'com.android.application'
...
def isCIBuild() {
return System.getenv('CI_BUILD') != null || hasProperty('CI_BUILD');
}
...
android {
...

if(isCIBuild()){
def clientBuildDate = new Date().format('yyMMddHHmm')
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, "myapp-" + versionName.replace(".","_") + "-" + clientBuildDate + ".apk")
}
}
}
...
}

然后您可以在 CI 服务器上设置全局环境变量 CI_BUILD,这将触发 APK 重命名,但 Android Studio 会使用正常命名的 APK。

如果您想运行本地构建并重命名 APK,则通过命令行构建并添加 -PCI_BUILD=true

./gradlew clean assemble -PCI_BUILD=true

关于Android Studio/gradle 动态 apk 名称不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com