Android用Gradle实现一行命令全自动混淆加固签名渠道包的生成

本文介绍了如何使用Gradle自动化构建过程,结合360加固服务,实现一键混淆、加固和签名,生成多渠道Android应用包。通过自定义Gradle插件,实现了从编译apk到打渠道包的全程自动化,大大提高了打包效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处:https://blog.youkuaiyun.com/binbinqq86/article/details/81033796

最终效果

根据标题,我们直接上最终效果图,如果不符合您的需求,您可以绕过,如果能帮助到您,笔者将深感荣幸,谢谢您的支持~

这里写图片描述

打包完成,来看看我们最终的渠道包:
这里写图片描述

整个过程实现一行命令,全自动出混淆加固签名渠道包,而且一次性快速全部输出到指定目录,就问你想不想了解一下呢~

背景

由于运营人员需要对不同android市场上投放的渠道包做一些统计分析,用来更加精准的去控制业务方向,所以产生了渠道包一说,原来打渠道包都是打一个包,更换一下manifest里面的meta-data的值,如果项目很大,构建速度将会非常慢,那么打几十上百个市场的渠道包可想而知,是非常耗时耗力,非常痛苦的,我们决不容忍这种浪费时间的操作存在,于是乎就有了各种多渠道打包的技术方案,比如美团一代打包工具(只支持v1签名),美团二代(瓦力,支持v2签名),360加固等等,如此一来,就轻松了解决了这些痛点。

实现原理

这里我们不去深入研究他们的实现原理,只是简单介绍一下几种不同方案:

  • 原生代码:
    其实就是采用gradle去配置不同的productFlavor,然后用manifestPlaceholder占位符去解析manifest文件里面的meta-data的value,来进行打包,耗时耗力,原理就是一个一个包去打,虽然免去了手动,但是很耗时。

  • 美团一代:
    这种只有在v1签名的时候才可以这么做,它将APK直接当做zip解压,目录里会有一个META-INF目录而此目录是不参与签名校验的。因此在META-INF目录内添加不同渠道名的空文件,可以唯一标识一个渠道。采用这种方式,每打一个渠道包只需复制一个apk,在META-INF中添加一个使用渠道号命名的空文件即可。

  • 美团二代:
    由于7.0之后的签名机制都是v2了,所以美团一代的打包方式已经不可行了,于是美团出了新的打包方案,就是通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的升级网络请求。打包一次即可完成几百个包的生成

  • 360
    360打渠道包也是修改manifest中的meta-data值,但是不区分v1,v2,因为它是先打渠道包,然后再进行签名的,所以没有上述签名引起的问题

本文将以360为例,去讲解今天的内容。

开始编码

首先是去创建我们的打包插件,怎么创建gradle插件,可以参考我的另外一篇文章:自定义Android Gradle插件,本文不再赘述。这里我们新建buildSrc工程,然后去360加固官网下载需要的工具,放到我们的源码目录,当然你也可以放其他任何目录:
这里写图片描述

我们新建了三个groovy文件,PackageExtension是用来扩展gradle配置属性的:

package com.tb.plugin
class PackageExtension{
   
   
    /**
     * app版本号
     */
    def appVersion
}
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值