首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android /gradle动态apk名称不同步

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

Stack Overflow用户
提问于 2015-07-02 18:21:34
回答 1查看 1.1K关注 0票数 7

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

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

这里的完整图片是我的build.gradle

代码语言:javascript
运行
复制
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{...}
  }

上面的输出如下所示:

代码语言:javascript
运行
复制
myapp-1_0_0-1507021343.apk
myapp-1_0_0-1507021501.apk
myapp-1_0_0-1507021722.apk

但是Android总是会尝试将第一个版本加载到手机上,因为它不同步,并且在每次构建后都不知道名称的变化。

对于如何在Android工作室的每次构建/运行中强制同步,有什么建议吗?在构建之前手动进行同步是一个显示停止,并且需要我回到默认的APK命名方案。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-04 19:24:40

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

代码语言:javascript
运行
复制
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将使用一个名为APK的APK。

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

./gradlew clean assemble -PCI_BUILD=true

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31191898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档