美文网首页
Gradle多渠道打包动态修改apk文件名字

Gradle多渠道打包动态修改apk文件名字

作者: Coder蒋 | 来源:发表于2019-07-10 00:03 被阅读0次

背景

随着新版本Android studio的发布,与之配套使用的Gradle也有很多变化,下面主要列举对比新老版本自定义apk生成文件名的方式。

新版本Android studio 下载地址
Gradle3.0前后版本变更记录 详情

Gradle3.0修改apk文件名的方式

android {
    ...
    applicationVariants.all { variant ->
        //这个修改输出的APK路径
     if (variant.buildType.name != "debug") {//防止AS无法安装debug包(apk)
        variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/apk")
     }
        variant.getPackageApplication().outputScope.apkDatas.forEach { apkData ->
            //这个修改输出APK的文件名
            apkData.outputFileName = "AppName-" +
                    variant.versionName + "_" +
                    variant.flavorName + "_" +
                    variant.buildType.name + "_" +
                        releaseTime()+"_"+
                    ".apk"
        }
    }
    ...
}

3.0之后修改apk文件名的方式

android {
    ...
    android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${variant.flavorName}-v${versionName}-${variant.buildType.name}-build${versionCode}-${releaseTime()}.apk"
                }
            }
    ...
}

多渠道的配置注意事项

通常自定义apk文件名往往都跟多渠道打包相关联,这里就提一下Gradle3.0之后多渠道配置需要注意点。

  • 需要配置flavorDimensions
  • 配置的flavorDimensions 必须使用到,不然会报错
// Specifies a flavor dimension.
flavorDimensions "color"

productFlavors {
     red {
      // Assigns this product flavor to the 'color' flavor dimension.
      // This step is optional if you are using only one dimension.
      dimension "color"
      ...
    }

    blue {
      dimension "color"
      ...
    }
}

最终的完整脚本

def releaseTime() {
    return new Date().format("yyyy.MM.dd", TimeZone.getTimeZone("UTC"))
}
android {
    defaultConfig {
        
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            // 移除无用的resource文件
//            shrinkResources true
//            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${variant.flavorName}-v${versionName}-${variant.buildType.name}-build${versionCode}-${releaseTime()}.apk"
                }
            }
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "app"
    productFlavors {
        demo1 {
            dimension "app"
        }
        demo2 {
            dimension "app"
        }
        demo3 {
            dimension "app"
        }
    }
}

相关文章

  • Gradle多渠道打包动态修改apk文件名字

    背景 随着新版本Android studio的发布,与之配套使用的Gradle也有很多变化,下面主要列举对比新老版...

  • Android多渠道打包

    目录一、Python打包及优化(美团多渠道打包)二、Gradle打包三、其他打包方案:修改Zip文件的commen...

  • android studio 3.0 gradle 打包脚本配置

    修改输出的名字 保存输出的文件路径 通常多渠道打包后需要输出文件 并保存最新的apk在一个文件夹中build命令编...

  • Andrid配置脚本打包apk名称和密钥

    配置打包apk输出文件名(app.gradle): 配置apk打包签名(app.gradle):

  • 安卓打包命名

    打包的时候希望apk文件名是日期+版本号,修改app中的gradle文件即可

  • 使用Gradle动态配置资源

    关键词:Gradle 多渠道打包 动态更换资源 Eclipse中可以使用Ant动态替换文件中的字符串,或者替换文件...

  • 用python批量修改文件夹里的文件名

    背景:初入很火的python,想起了之前的一个需求,将打包的多渠道apk文件批量修改为复合要求的名字。 环境:ma...

  • Android 动态写入信息到 APK

    标签: 多渠道打包 , 动态写入APK , V2签名 如何实现快速多渠道打包?如何将 Git 的 SHA-1 值、...

  • Android 多渠道打包

    步骤:配置多渠道 -> 360加固助手多渠道打包加固 -> 批量修改生成的APK名称 1、在 AndroidMan...

  • Groovy

    groovy 面向对象 优势 灵活性上 粒度性上Tinker就是动态修改打包APk的打包过程,修改补丁文件. 复用...

网友评论

      本文标题:Gradle多渠道打包动态修改apk文件名字

      本文链接:https://www.haomeiwen.com/subject/kgsqkctx.html