打包签名路径隐藏配置

1.build.gradle 文件下配置

//这里是读取local.properties文件,提供给下方代码用来提取keystroe_storeFile等key的值
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
signingConfigs {

    config {
        storeFile file(properties.getProperty("keystroe_storeFile"))
        storePassword properties.getProperty("keystroe_storePassword")
        keyAlias properties.getProperty("keystroe_keyAlias")
        keyPassword properties.getProperty("keystroe_keyPassword")
    }
}

在local.properties 文件下
keystroe_storeFile=xxxxx.jks //签名文件路径
keystroe_storePassword=*****
keystroe_keyAlias=xxxxxx
keystroe_keyPassword=*****
buildTypes {
     
release{
          ......
// 使用config签名
signingConfig signingConfigs.config
...}


第二种:
Properties props = new Properties()
props.load(new FileInputStream(file("signing.properties")))

config {//发布版本的签名配置
    storeFile file(props['KEYSTORE_FILE'])
    keyAlias props['KEY_ALIAS']
    storePassword props['KEYSTORE_PWD']
    keyPassword props['KEY_PWD']
}
在App项目下新建文件 signing.properties
KEYSTORE_FILE = xxxx.jks  //签名文件路径
KEY_ALIAS = xxxx   别名
KEYSTORE_PWD= ****
KEY_PWD= *****

// 使用config签名
signingConfig signingConfigs.config

多版本打包:
AndroidManifest文件下配置
<!--打包区分-->
<meta-data
    android:name="CHANNEL"
    android:value="${CHANNEL_VALUE}" />

productFlavors {
    //测试
    TestApp {
        versionCode 3
        versionName "1.0.3"

        buildConfigField "String", "IP", '"192.168.2.2"'//会自动生成BuildConfig文件,引用BuildConfig.PORT

        buildConfigField "String", "PORT", '"100"'
        manifestPlaceholders = [CHANNEL_VALUE: "TestApp"]
    }
  //测试
    TestApp2 {
        versionCode 5
        versionName "1.0.1"

        buildConfigField "String", "IP", '"192.168.2.5"'//会自动生成BuildConfig文件,引用BuildConfig.PORT

        buildConfigField "String", "PORT", '"12"'
        manifestPlaceholders = [CHANNEL_VALUE: "TestApp2"]
    }

}

def releaseTime() {//时间构造函数
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
release {
    // release模式下,不显示log
    buildConfigField("boolean", "LOG_DEBUG", "false")
    // 为版本名添加后缀
    versionNameSuffix "-relase"
    // 开启混淆
    minifyEnabled true
    // 开启ZipAlign优化
    zipAlignEnabled true
    // 移除无用的resource文件
    shrinkResources true
    // 使用config签名
    signingConfig signingConfigs.config
    // 混淆文件位置
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

   // 批量打包
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                //输出apk名称为:渠道名_版本名_时间.apk
                def fileName = "${variant.productFlavors[0].name}_v${variant.versionName}_${releaseTime()}.apk"
                output.outputFile = new File(outputFile.parent, fileName)
            }
        }
    }

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值