安卓多渠道打包(五)360加固walle多渠道打包

news2025/10/29 4:54:51

在这里插入图片描述

背景:

1、360加固宝,签名收費了,脚本上传加固也针对特定帐号才可实现。

内容

本文将会分享安卓项目中,使用360加固,再用walle签名,产出多渠道加固包的全流程。

环境

win10
jdk11
as2022+
gradle7.5

最终效果

通过walle获取加固包的渠道名字正确。

实现思路

整体思路如下:
项目产出release包–360加固–对齐,签名–walle多渠道
四个步骤。
当然,实现多渠道加固的方式,千差万别,这里仅仅时其中一种方式而已,有更好的方式可以评论区留言。

开始实现

(1)引入walle依赖
整个多渠道的核心,是以walle展开的,再以360加固为辅助。
所以这里的第一步,就是引入walle的依赖。
而walle有两个较好的版本,一个是官方的版本,一个是民间大神升级适配gradle7.0+的版本,具体选择哪个,看项目。这里的demo,我选择的是民间版本。

https://github.com/Petterpx/walle(fork升级版)
https://github.com/Meituan-Dianping/walle (官方原版)

具体配置方法,上述两个链接都有,这里粗略提一下就算了。


//walle配置核心-start--------------------------

远程仓库地址
maven { url 'https://jitpack.io' }

classpath:
classpath 'com.github.Petterpx.walle:plugin:1.0.5'

主项目app,build.gradle中配置:

apply plugin: 'walle'

walle {
    def outputFile = new File("${rootProject.rootDir}/walle/")
    outputFile.deleteDir()
    outputFile.mkdirs()
    // 指定渠道包的输出路径
    apkOutputFolder = outputFile
    // 定制渠道包的APK的文件名称
    apkFileNameFormat = '${channel}-v${versionName}.apk'
    // 渠道配置文件
    channelFile = new File("${rootProject.rootDir}/channel")
}

implementation 'com.github.Petterpx.walle:library:1.0.5'

特别注意,一定要配置好项目的密钥,否则walle编译会报错

//walle配置核心-end-------------------------

对比官方,我这里重写了walle输出时候的目录构建方式,先删除,后创建。每次打包都是新的目录。

注意!!请认真阅读walle括号内的相关配置。

说这么多,上述的配置看看就行,跑通就行。因为不会用到官方原版的多渠道,这里只是配置一下而已。实际对多渠道包没有根本上的影响。

配置完成后,项目可安装,可打正式包,可以rebuild。即认为引入成功!

最后,在Activity中配置代码,用于查看后续的渠道信息:

val channel: String? = WalleChannelReader.getChannel(this.applicationContext)
Log.d("渠道", "当前渠道:${channel}")

(2)360加固
基于步骤(1)的情况下,点击项目的build–>signapk->打一个release包出来。
然后打开360加固宝进行加固。
在这里插入图片描述
点击添加,选择刚刚打好的release包,等待加固完成即可。
加固完成如下图:
在这里插入图片描述
这个时候下载的包,是没有签名的,仅仅是已经加固过了的。这个时候,我们要对这个包,进行签名,对齐。多渠道。

(3)重新签名
签名指令,相信做过发包的都已经知道了,下面举个代码例子:

jarsigner -verbose -keystore jiagu.jks -storepass 123456 -signedjar jiagu_signed.apk app-release_10_jiagu.apk jiagu

zipalign -p -f -v 4 jiagu_signed.apk jiagu_signed2.apk

apksigner sign --ks jiagu.jks --ks-key-alias jiagu --ks-pass pass:123456 --v1-signing-enabled true --v2-signing-enabled true -v --out .\jiagu_signed3.apk .\jiagu_signed2.apk

通过jarsigner,aipalign,apksigner进行签名和对齐,即可实现。这里值得一提的是,一定要先配置好windows系统环境,然后再去执行指令,否则会执行失败。
这里用到的jdk是11,sdk build-tools30。
具体就在window环境变量path添加对应的路径即可。

好了,环境配置好,执行完上述指令。那么,目录下,就会有一个apk_signed3.apk的包了。这个时候,就要对这个安装包,进行walle多渠道。

(3)walle多渠道
具体指令看官网:
https://github.com/Petterpx/walle/blob/main/walle-cli/README.md
这里用到的是walle-cli-all.jar进行打包,github可以找到然后下载。

具体指令如下:

java -jar wallejar/walle-cli-all.jar batch -f channel apk_signed3.apk

channel就是夺渠道的文件
具体要看你分发的市场配置,我这边的配置如下图:
在这里插入图片描述
这里就是单行文字进行渠道配置的。
最后,执行完指令,就可以看到目录下的渠道包了。然后安装,观察log具体输出是否符合预期即可。

注意注意注意!!!

在签名,对齐的情况,会有可能有很多问题,如:
(1)as jdk版本和系统环境jdk版本对不上,导致了签名失败,这个时候就要调整至一致的jdk环境,包括window中类似的Java_home变量,也要调整到和项目一致的jdk。
(2)保证生成的签名文件xxx.jks所使用的jdk环境和项目匹配。
一定要保证上述两个步骤的环境一致,签名才会执行成功,才能进行后续的多渠道打包。

that’s all-------------------------------------------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/996208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+emelenui实现前端分页功能—最简单

在一些后台管理系统或者博客管理系统中分页功能是很常见的一种服务,因为总不可能把很多数据放在一块,那样阅读起来很麻烦,所以需要分页。也是前后端中最为常见的一个功能 先看一下分页场景的模拟。 首先我们要去后端写点数据通过接口给前端&a…

ssm实现折线统计图

​ 方法1&#xff1a;单张数据表中的数据图表生成 图表统计&#xff0c;查看部门人数统计这里实现的时单张表中的数据实现部门人数折线统计图展示。 <script type"text/javascript">// 利用AjAx来获取后台传入的数据&#xff08;Responsebody注解传入的&…

日志平台搭建第五章:Linux安装Kafka

相关链接 http://kafka.apache.org/downloads 1.使用Docker安装zookeeper 下载镜像&#xff1a; docker pull zookeeper:3.4.14 创建容器&#xff1a; docker run --name zookeeper \ -v /opt/data/zksingle:/data \ -p 2181:2181 \ -e ZOO_LOG4J_PROP"INFO,ROLLINGFILE&q…

日志平台搭建第六章:logstash通过kafka通道采集日志信息

1.修改文件/opt/app/elk/logstash-7.5.1/config.d/config1.conf&#xff0c;在input下添加kafka采集配置 #192.168.128.130:9103:kafka地址 #topics:主题 kafka {bootstrap_servers > ["192.168.128.130:9103"]group_id > "logstash"topics > [&…

基于NAND存储的双分区OTA升级方案

系统启动&#xff1a;UBOOT--->KERNEL--->ROOTFS 分区分布&#xff1a;A1A2B1B2C1C2D结构&#xff1b; A1B1C1D为一组启动序列&#xff1b; A2B2C2D为另外 一组启动序列&#xff1b; 下面介绍一下有后悔药式的升级方案&#xff1a; 1.1 通过curl从服务器下载升级包…

电脑提示msvcp110.dll是什么意思?msvcp110.dll丢失修复办法分享

当我们使用电脑时&#xff0c;有时候会出现一些错误提示&#xff0c;其中就包括了“msvcp110.dll 丢失”的提示。那么&#xff0c;这个提示是什么意思呢&#xff1f;电脑提示找不到msvcr110.dll怎么办&#xff0c;我们在使用电脑的时候&#xff0c;总是会遇到很多的电脑难题。当…

python趣味编程-数独游戏

数独游戏是一个用Python编程语言编写的应用程序。该项目包含可以显示实际应用程序的基本功能。该项目可以让修读 IT 相关课程并希望开发简单应用程序的学生受益。这个Python 数独游戏是一个简单的项目,可用于学习tkinter库的实践。这个数独游戏可以提供Python编程的基本编码技…

PPT 生成整数序列字典序的r-组合算法

生成整数序列字典序的r-组合算法 一、PPT效果展示二、问题2.1 简述2.2 算法简述2.3 例子 三、PPT实现 一、PPT效果展示 二、问题 2.1 简述 给定一个整数序列 (1&#xff0c;2&#xff0c;3&#xff0c;…n)&#xff0c;输出其所有字典序的r-组合&#xff0c;注意事项&#xf…

KT142C-sop16语音芯片ic的功耗详细说明_实测_以及功耗机制

KT142C是一个提供串口的SOP16语音芯片&#xff0c;完美的集成了MP3的硬解码。内置330KByte的空间&#xff0c;最大支持330秒的语音长度&#xff0c;支持多段语音&#xff0c;支持直驱0.5W的扬声器无需外置功放 其中KT142C芯片的&#xff0c;功耗表现还是非常的好。芯片工作的时…

Vue中对于指令的介绍

Vue指令 文章目录 Vue指令1、介绍2、指令介绍2.1、v-html2.2、v-show和v-if3.2、v-else 和 v-else-if3.3、v-on3.4、v-bind3.5、v-for3.6、v-for 中的key3.7、v-model 3、指令修饰符3.1、 按键修饰符3.2、 监听v-model修饰符3.3、 事件修饰符 1、介绍 Vue 会根据不同的【指令】…

SQL Server2022安装教程

SQL Server 是一个关系数据库管理系统。它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的&#xff0c;于1988 年推出了第一个OS/2版本。在Windows NT 推出后&#xff0c;Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了&#xff0c;Microsoft 将SQL Server移…

Java中快速排序的优化技巧:随机取样、三数取中和插入排序

目录 快速排序基础 优化1&#xff1a;随机取样 优化2&#xff1a;三数取中 优化3&#xff1a;插入排序 总结&#xff1a; 快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;它的平均时间复杂度为O(n log n)。然而&#xff0c;在某些情况下&…

八)Stable Diffussion使用教程:MultiDiffusion

multidiffusion,它可以实现图片从 512 像素到 2K、4K 甚至 6K 画质的飞跃。 插件安装步骤: 1)选择扩展 2)选择可用,点击加载按钮 3)找到multidiffusion,点击右侧安装按钮 安装插件后可以在文生图和图生图的出图参数中看到多了两个区域,其实这个插件是由两部分组成的,…

openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库

文章目录 openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库65.1 前提条件65.2 背景信息65.3 注意事项65.4 操作步骤65.4.1 创建数据库65.4.2 查看数据库65.4.3 修改数据库65.4.4 删除数据库 openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库 65.1 前提…

Tailwind 练手项目 2

Tailwind 练手项目 2 这次换了个 up 又滚完了一遍 tailwind&#xff0c;算是拾遗补缺了&#xff0c;之前的笔记&#xff1a; Tailwind CSS 速成Tailwind 练手项目 代码在&#xff1a;https://github.com/GoldenaArcher/tailwind&#xff0c;这次偷懒了就没在线效果&#xff…

bs4库爬取天气预报

Python不仅用于网站开发&#xff0c;数据分析&#xff0c;图像处理&#xff0c;也常用于爬虫技术方向&#xff0c;最近学习了解下&#xff0c;爬虫技术入门一般先使用bs4库&#xff0c;爬取天气预报简单尝试下。 第一步&#xff1a;首先选定目标网站地址 网上查询&#xff0c…

6、Spring之依赖注入源码解析(上)

依赖注入底层原理流程图: Spring中Bean的依赖注入原理| ProcessOn免费在线作图,在线流程图,在线思维导图 Spring中到底有几种依赖注入的方式? 首先分两种: 手动注入自动注入手动注入 在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属性指定了值。 <bean n…

系统内存的探测

lab2 系统内存的探测 参考博客 主要涉及操作系统的物理内存管理。 操作系统为了使用内存&#xff0c;还需高效地管理内存资源。 这里我们会了解并且自己动手完成一个简单的物理内存管理系统。实验目的 理解基于段页式内存地址的转换机制 理解页表的建立和使用方法 理解物理内…

Python之线程Thread(一)

一、什么是线程 线程(Thread)特点: 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;…