安卓多渠道打包(五)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--------------------…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
