Android 使用 Gradle 打包--签名配置

 

一.打包输出路径及名称

gradle3.0.0之前:

//修改生成的apk名字
android{
        applicationVariants.all { variant ->
            if (variant.buildType.name.equals('release')) {
                variant.outputs.each { output ->
                    def parent = './apk/'
                    def buildName
                    def releaseApkName
                    def type = variant.buildType.name;
                    releaseApkName = buildName + '_' + type + "_" + versionName + '_' + getDate() + '.apk'
                    output.outputFile = new File(parent, releaseApkName)
                }
            }
      }
}

3.0+之后

android{
  applicationVariants.all { variant ->
        if (variant.buildType.name.equals('release')) {//防止AS无法安装debug包(apk)
            variant.outputs.all { output ->
                //打包名字
               outputFileName = 'unite_v' + variant.versionName + '_' + variant.productFlavors[0].name + '_' + buildType.name + '.apk'
                //outputFileName  = "${cfg.applicationId}_${variant.mergedFlavor.versionName}_debug_${getTime()}.apk"
                //打包路径
               variant.packageApplication.outputDirectory=new File("./apk" + defaultConfig.versionName)
                //variant.packageApplication.outputDirectory = new File(project.rootDir.absolutePath + "/apk" + defaultConfig.versionName)
            }
        }
    }
}

设置打包时间

def getTime() {
    return new Date().format("yyyyMMddHHmm");
}
def appName() {
    return "App名称"
}

APP名称:????

project.archivesBaseName

 

二.自动化签名配置

Android studio会生成的dubug包使用默认的签名,release包需要我们自行配置。我们可以进行配置,实现自动签名。

1.在项目的App目录下的build.gradle中,配置如下:

android {
    signingConfigs {
        release {
            keyAlias 'myalias'
            keyPassword 'password'
            storeFile file('D:/mykeystore_release.jks')
            storePassword 'password'
        }
        debug {
            keyAlias 'myalias'
            keyPassword 'password'
            storeFile file('D:/mykeystore_debug.jks')
            storePassword 'password'
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }
}

2.编译方式:

1.双击Gradle中的assembleDebug或者assembleRelease就可以开始编译

2.或者在Terminal命令行中输入gradlew assembleRelease或者gradlew assembleDebug,然后回车开始编译。

3.配置v1,v2

查看Android的DefaultSigningConfig会发现,默认的mV1SigningEnabled和mV2SigningEnabled为true,对应打包时选择V1和V2,我们也可以通过signingConfigs在自动化编译阶段实现V1和V2签名

android {
    signingConfigs {
        release {
            keyAlias '******'
            keyPassword '******'
            storeFile file('../release.keystore')
            storePassword '******'
 
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }
 
   
}

../表示当前文件目录再往上一层级,release.keystore文件需要放在项目的根目录下,而不是App这个module根目录

4.隐藏签名信息

1.创建属性文件(如“keystore.properties”),可以在项目目录下创建一个属性文件用来存放钥匙的信息:

keystore.properties:

storeFile=../key.jks
storePassword=123
keyAlias=keyalias
keyPassword=123

2.build.gradle配置如下

def keystorePropertiesFile = file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

}

5.查看结果

编译成功后可以在如下路径找到编译后的apk安装包

如果自定义了输出路径到对应的文件夹下寻找。

 

 

https://blog.csdn.net/u012958716/article/details/54138601

https://www.jianshu.com/p/8dc154f0f89f

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值