Android – 在Gradle中更改APK文件名

默认情况下,Android Studio中的Gradle构建命名为.apk文件app-release.apk。对应用程序build.gradle文件进行了一些小的更改,可以将.apk名称更改为<app name>-release-<version>.apk。

需要在app的目录下面修改build.gradle文件。

第一步是将project.archivesBaseName设置为您的应用程序名称。

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    versionCode 1
    versionName "1.0.0"
    project.archivesBaseName = "AppName"
}

第二步是在该Gradle文件的buildTypes部分添加如下代码:

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            applicationVariants.all { variant ->
                variant.outputs.each{ output ->
                    output.outputFile = new File(output.outputFile.parent,output.outputFile.name.replace(".apk","-" + defaultConfig.versionName + ".apk" ))
                }
            }
        }
    }

之前上面那么写是没问题的,当我更新android studio 3.0的时候,再重新打包的时候,就出现了问题,就会报下面的错误;

Error:(23, 0) Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

简单来说就是我们之前用的outputFile属性是只读的,不能再使用了。所以这里我又换了一种写法:

applicationVariants.all{
     variant->variant.outputs.all{
//android studio3.0之前的写法
 //    output->output.outputFile=new File(output.outputFile.parent,output.outputFile.name.replace(".apk","-"+defaultConfig.versionName+".apk"))
//android studio3.0的写法
       outputFileName = "${project.archivesBaseName}-${defaultConfig.versionName}.apk"
     }
 }

这就是重命名.apk文件所需要的全部。

//多渠道打包
productFlavors{
  test{}
}
//打包类型
buildTypes{
  //debug版本
  debug{}

  //release版本
  release{}
}

这里需要注意一点就是,如果我们用了productFlavors{}属性,那咱们就不用去添加defaultConfig.versionName了,因为如果添加了,打出包的名称就会多一个versionName。 例如: 没有使用productFlavors{}情况下:AppName-1.0.0.apk 使用productFlavors{}情况下:AppName-test-release-1.0.0.apk,如果您加了defaultConfig.versionName,那打出的包就会是AppName-test-release-1.0.0-1.0.0.apk。

修改应用包名的全部内容就这么多了。

快乐生活!快乐工作!快乐编程!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

Android 开发必备知识:我和 Gradle 有个约会

0、讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太...

3394
来自专栏bboysoul

cve-2017-11882漏洞利用

这是一个潜伏了17年之久的远程代码执行漏洞,这个漏洞影响了目前所有的流行office软件,原理是利用了office的一个EQNEDT32.EXE组件,就是公式编...

564
来自专栏liulun

CEF C++环境搭建

第一步:下载CEF 到这里下载最新版本的CEF http://cefbuilds.com/ 下载解压之后,大概会看到如下图所示的文件 cefclien...

2207
来自专栏向治洪

studio多渠道打包

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Grad...

1818
来自专栏跟着阿笨一起玩NET

.NET加密配置文件connectionStrings节点

直接将语句拷贝到.BAT文件中,D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web 为相应的web.config所...

1022
来自专栏向治洪

gradle构建android项目详解

1、用Gradle构建 1.1 工程结构 ? 如图所示,这是一个不能更普通的Android的Gradle工程了。 根目录下面的settings.gradl...

2815
来自专栏Golang语言社区

Go 单元测试与接口

Good code and unit testing come hand in hand, and sometimes the bridge between t...

853
来自专栏开发之途

Gradle 常用配置总结

当项目逐渐演进的过程中,主工程依赖的 Module 可能会越来越多,此时就需要统一配置各个 Module 的编译参数了

653
来自专栏菩提树下的杨过

再谈web.config/app.config敏感数据加/解密的二种方法

转载请注明来自"菩提树下的杨过" 一.利用代码加解密 using System.Web.Configuration; ... //加密web.Config...

2428
来自专栏流柯技术学院

Maven pom.xml配置详解

<projectxmlns="http://maven.apache.org/POM/4.0.0"

752

扫码关注云+社区