Android-Gradle-自动化多渠道打包,阿里+头条+抖音+百度+蚂蚁+京东面经

这篇博客介绍了如何使用Gradle自动化执行Android应用的360加固、多渠道打包和签名过程。通过配置Gradle任务,实现了从打包、加固到上传服务器的完整流程,并提供了相关命令行工具的使用方法,包括360加固保和腾讯VasDolly。此外,还讨论了敏感信息的存储以及自动化构建的细节。
摘要由CSDN通过智能技术生成

gradle其实为我们提供了一系列相关的任务,如下图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们执行加固前是需要拿到一个release包的,所以我们可以利用assembleRelease在加固前先执行assembleRelease这个Task。

task packersNewRelease {
group ‘packers’
//可以利用task的依赖关系先执行打包
dependsOn ‘assembleRelease’
}

自动执行加固

所谓自动执行加固,无非就是几行命令,360加固保提供了一套命令行进行加固

特别提醒,此处360配置可选项的增强服务有bug,已经跟官方沟通,他们需要在下个版本修复,当前存在bug的版本3.2.2.3(2020-03-16),命令行目前无法只选择盗版监测

/**

  • 对于release apk 进行360加固
    */
    def packers360(File releaseApk) {
    println ‘packers=beginning 360 jiagu’
    def packersFile = file(app[“packersPath”])
    if (!packersFile.exists()) {
    packersFile.mkdir()
    }
    exec {
    // 登录360加固保
    executable = ‘java’
    args = [‘-jar’, packers[“jarPath”], ‘-login’, packers[“account”], packers[“password”]]
    println 'packers
    =import 360 login’
    }
    exec {
    // 导入签名信息
    executable = ‘java’
    args = [‘-jar’, packers[“jarPath”], ‘-importsign’, signing[“storeFile”],
    signing[“storePassword”], signing[“keyAlias”], signing[“keyPassword”]]
    println ‘packers=import 360 sign’
    }
    exec {
    // 查看360加固签名信息
    executable = ‘java’
    args = [‘-jar’, packers[“jarPath”], ‘-showsign’]
    println 'packers
    =show 360 sign’
    }
    exec {
    // 初始化加固服务配置,后面可不带参数
    executable = ‘java’
    args = [‘-jar’, packers[“jarPath”], ‘-config’]
    println ‘packers=init 360 services’
    }
    exec {
    // 执行加固,然后自动签名,若不采取自动签名,需要自己通过build-tools命令自己签名
    executable = ‘java’
    args = [‘-jar’, packers[“jarPath”], ‘-jiagu’, releaseApk.absolutePath, app[“packersPath”], ‘-autosign’]
    println 'packers
    =excute 360 jiagu’
    }
    println 'packers=360 jiagu finished’
    println "packers
    =360 jiagu path ${app[“packersPath”]}"
    }

自动签名

关于自动签名,其实360在加固的时候提供了自动签名的配置选项,如果你不想将签名文件上传给360,在加固后可以自己选择手动签名,因为这涉及到安全性的问题,此版本我采取的是360自动签名,如果大家想自己手动签名,下面我给出一套方案,主要是利用 zipalignapksigner命令 他们都是位于SDK文件中的build-tools目录中,我们执行自动化签名需要gradle配置好路径。

  • 对齐未签名的apk

zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk

  • 使用你的私钥为apk签名

apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk

  • 验证apk是否已经被签名

apksigner verify my-app-release.apk

基于加固Apk自动实现多渠道

关于多渠道打包,我们之前项目一直使用的是腾讯的VasDolly,故我们此次是采取VasDolly命令,但是需要先下载VasDolly.jar,至于放在什么位置没有要求,只需要gradle配置好路径即可,我直接是放在项目根目录。也可以使用360的多渠道加固,实际上整套都可以使用360加固提供的命令。

/**

  • 腾讯channel重新构建渠道包
    */
    def reBuildChannel() {
    File channelFile = file(“${app[“channelPath”]}/new”)
    if (!channelFile.exists()) {
    channelFile.mkdirs()
    }
    def cmd = “java -jar ${app[“vasDollyPath”]} put -c ${”…/channel.txt"} ${outputpackersApk()} ${channelFile.absolutePath}"
    println cmd
    cmd.execute().waitForProcessOutput(System.out, System.err)
    println ‘packers===excute VasDolly reBuildChannel’
    }

敏感信息存取

我们都知道,签名需要签名文件,密码、别名等等文件,360加固需要配置账号与密码,这些都属于敏感信息,google官方不建议直接放在gradle中,它是以纯文本记录在gradle中的,建议存储在properties文件中。

// 把敏感信息存放到自定义的properties文件中
def propertiesFile = rootProject.file(“release.properties”)
def properties = new Properties()
properties.load(new FileInputStream(propertiesFile))

ext {
// 签名配置
signing = [keyAlias : properties[‘RELEASE_KEY_ALIAS’],
keyPassword : properties[‘RELEASE_KEY_PASSWORD’],
storeFile : properties[‘RELEASE_KEYSTORE_PATH’],
storePassword: properties[‘RELEASE_STORE_PASSWORD’]
]

// app相关的配置
app = [
//默认release apk的文件路径,因为加固是基于release包的
releasePath : “ p r o j

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值