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

背景:
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 jiaguzipalign -p -f -v 4 jiagu_signed.apk jiagu_signed2.apkapksigner 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-------------------------------------------------------------------------------------------------------------
相关文章:
安卓多渠道打包(五)360加固walle多渠道打包
背景: 1、360加固宝,签名收費了,脚本上传加固也针对特定帐号才可实现。 内容 本文将会分享安卓项目中,使用360加固,再用walle签名,产出多渠道加固包的全流程。 环境 win10 jdk11 as2022 gradle7.5 最…...
Jmeter 实现 mqtt 协议压力测试
1. 下载jmeter,解压 https://jmeter.apache.org/download_jmeter.cgi 以 5.4.3 为例,下载地址: https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip linux下解压: unzip apache-jmeter-5.4.3.zip 2. 下载m…...
蓝桥杯官网练习题(凑算式)
类似填空题: ①算式900: https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501 ②九宫幻方③七星填数④幻方填空:https:/…...
机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)
🌈🌈🌈机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 手撕线性回归1之线性回归类的实现 手撕线性回归2之单特征线性回归 手撕线性回归3之多特征线性回归 手撕线性回归4之非线性回归 1…...
【C语言基础】那些你可能不知道的C语言“潜规则”
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
android framework之Applicataion启动流程分析(三)
现在再回顾一下Application的启动流程,总的来说,虽然进程的发起是由ATMS服务发起的,但是进程的启动还是由AMS负责,所以需要调用AMS的startProcess()接口完成进程启动流程,AMS要处理的事情很多,它将事务交给…...
使用Scrapy框架集成Selenium实现高效爬虫
引言: 在网络爬虫的开发中,有时候我们需要处理一些JavaScript动态生成的内容或进行一些复杂的操作,这时候传统的基于请求和响应的爬虫框架就显得力不从心了。为了解决这个问题,我们可以使用Scrapy框架集成Selenium来实现高效的爬…...
Maven 和 Gradle 官方文档及相关资料的网址集合
文章目录 官方MavenGradle 笔者MavenGradle 官方 Maven Maven 仓库依赖包官方查询通道:https://mvnrepository.com/ Maven 插件官方文档:https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*:https://maven.google.com/web/ Gra…...
docker概念、安装与卸载
第一章 docker概念 Docker 是一个开源的应用容器引擎。 Docker 诞生于2013年初,基于 Go 语言实现,dotCloud 公司出品,后改名为 Docker Inc。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发…...
elasticsearch访问9200端口 提示需要登陆
项目场景: 提示:这里简述项目相关背景: elasticsearch访问9200端口 提示需要登陆 问题描述 提示:这里描述项目中遇到的问题: 在E:\elasticsearch-8.9.1-windows-x86_64\elasticsearch-8.9.1\bin目录下输入命令 ela…...
【深度学习】 Python 和 NumPy 系列教程(一):Python基本数据类型:1、数字(整数、浮点数)及相关运算;2、布尔值
目录 一、前言 二、实验环境 三、Python基本数据类型 1. 数字 a. 整数(int) b. 浮点数(float) c. 运算 运算符 增强操作符 代码整合 d. 运算中的类型转换 e. 运算函数abs、max、min、int、float 2. 布尔值(…...
无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务)
JavaSE,无框架实现贪吃蛇 文章目录 JavaSE,无框架实现贪吃蛇1.整体思考2.可能的难点思考2.1 如何表示游戏界面2.2 如何渲染游戏界面2.3 如何让游戏动起来2.4 蛇如何移动 3.流程图制作4.模块划分5.模块完善5.0常量优化5.1监听键盘服务i.输入存储ii.键盘监…...
HDD-FAT32 ZIP-FAT32 HDD-FAT16 ZIP-FAT16 HDD-NTFS
FAT32、FAT16指的是分区格式, FAT16单个文件最大2G FAT32单个文件最大4G NTFS单个文件大于4G HDD是硬盘启动 ZIP是软盘启动 U盘选HDD HDD-NTFS...
王道数据结构编程题 二叉树
二叉树定义 以下为本文解题代码的二叉树定义。 struct TreeNode {int val;TreeNode* left, *right;TreeNode(int val 0, TreeNode* left nullptr, TreeNode* right nullptr): val(val), left(left), right(right) {} };非递归后序遍历 题目描述 编写后序遍历二叉树的非递…...
登录怎么实现的,密码加密了嘛?使用明文还是暗文,知道怎么加密嘛?
在Java中登录功能的实现通常包括以下步骤,其中密码应该以加密形式存储在数据库中,而不以明文形式存储,以增强安全性: 登录功能的实现步骤: 用户输入: 用户在登录页面上输入用户名和密码。 传输到服务器&a…...
Nginx和Tomcat负载均衡实现session共享
以前的项目使用Nginx作为反向代理实现了多个Tomcat的负载均衡,为了实现多个Tomcat之间的session共享,使用了开源的Memcached-Session-Manager框架。 此框架的优势: 1、支持Tomcat6和Tomcat7 2、操作粘性或不黏性Session 3、没有单点故障 4、T…...
【算法题】210. 课程表 II
题目: 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。 例如,想要学习课程 0 ,…...
“数据类型不一致”会走索引吗?
分析&回答 字符串类型的索引 id_1 varchar(20) NOT NULL这样下面两条语句的结果是一样的: SELECT * FROM ix_test WHERE id_11; SELECT * FROM ix_test WHERE id_11;执行计划是不同的: mysql> explain select * from ix_test where id_11; | 1 …...
Leetcode 1572.矩阵对角线元素之和
给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线的和为ÿ…...
[PG]将一行数据打散成多行数据
原始数据 比如有如此表结构定义: 假如查询数据如下: select dt as "日期",bj_count as "北京", sh_count as "上海",gz_count as "广州", sz_count as "深圳" from city_stats order by dt--------------------…...
保姆级避坑指南:用Python处理泰坦尼克号数据时,90%新手都会犯的5个错误
保姆级避坑指南:用Python处理泰坦尼克号数据时,90%新手都会犯的5个错误泰坦尼克号数据集是Kaggle上最经典的机器学习入门项目之一,但看似简单的数据背后却暗藏无数新手陷阱。我曾辅导过数百名数据科学初学者,发现他们在处理这个数…...
量子机器学习与量子炼金术:加速化学空间探索的DFT数据驱动方法
1. 项目概述:当量子化学遇见机器学习在计算化学和材料科学的日常工作中,我们这些“算分子”的人,最核心也最头疼的任务之一,就是预测一个分子或材料的能量。这听起来简单,却是理解其稳定性、反应活性乃至所有物理化学性…...
科学边缘计算ML硬件可靠性设计:从比特精确验证到精细化容错
1. 项目概述:当科学实验遇上极端数据洪流想象一下,你面前有一台每秒产生数TB数据的超级显微镜,或者一个每时每刻都在进行数十亿次粒子对撞的探测器。这些并非科幻场景,而是高能物理、材料科学等前沿科学领域的日常。海啸般的数据从…...
机器学习地球系统模型评估:从物理一致性到标准化框架
1. 项目概述:为什么我们需要重新审视机器学习地球系统模型的评估? 作为一名长期从事气候模式开发与评估的研究者,我亲眼见证了机器学习(ML)技术如何以惊人的速度渗透到地球系统科学领域。从几年前Pangu-Weather、Graph…...
量子机器学习可解释性:从黑箱到透明决策的LRP与数字孪生方法
1. 量子机器学习可解释性:从黑箱到透明决策量子机器学习(QML)这几年火得不行,但说实话,很多从业者,包括我自己在内,最初接触时都有点“懵”。模型性能上去了,可它到底是怎么做决策的…...
C#中Activator的具体使用
Activator 是 C# 中用于动态创建对象实例的核心类,位于 System 命名空间。它通过**反射(Reflection)**机制,在运行时根据类型信息创建对象,而无需在编译时知道具体类型。🔍 一、Activator的核心作用在不知道…...
DRAGON框架:分布式RAG架构革新与隐私保护实践
1. DRAGON框架概述:分布式RAG的架构革新在当今边缘计算与隐私保护需求并重的时代,传统检索增强生成(RAG)技术面临两大核心挑战:一方面,完全依赖云端处理会暴露用户隐私数据;另一方面,…...
【Claude学术写作辅助应用】:教育部新文科AI赋能白皮书唯一推荐工具,附12所双一流高校实证数据
更多请点击: https://intelliparadigm.com 第一章:Claude学术写作辅助应用的政策定位与战略价值 Claude作为新一代大语言模型,在学术写作辅助领域已超越工具属性,成为支撑国家科研诚信建设、高等教育数字化转型与国际学术话语权提…...
统计学习赋能移动边缘计算:智能网络调度实战解析
1. 项目概述:当边缘计算遇上动态网络,我们如何“聪明”地调度?在移动互联网和物联网应用爆炸式增长的今天,你有没有遇到过这样的场景:在拥挤的地铁里刷短视频,画面却卡顿、加载缓慢;或者&#x…...
AI司法应用中的算法公平性:从数据偏见到保护属性选择的技术实践
1. 项目概述:当算法开始“断案”,公平性成了第一道坎最近几年,AI系统在司法领域的渗透速度远超很多人的想象。从辅助量刑建议、评估再犯风险,到自动化审阅海量卷宗,算法正试图将法官和检察官从繁重的重复性劳动中解放出…...
