feat:完善混淆操作文档
This commit is contained in:
44
change_image_md5.sh
Executable file
44
change_image_md5.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 检查是否提供了文件夹路径作为参数
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Usage: $0 <folder_path>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 获取文件夹路径参数
|
||||
folder_path="$1"
|
||||
|
||||
# 检查所提供的路径是否为目录
|
||||
if [ ! -d "$folder_path" ]; then
|
||||
echo "Error: '$folder_path' is not a directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 获取指定目录的绝对路径
|
||||
folder_path=$(realpath "$folder_path")
|
||||
|
||||
# 检查是否尝试处理根目录
|
||||
if [ "$folder_path" = "/" ]; then
|
||||
echo "Error: Refusing to process root directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 递归遍历文件夹中的图片文件并修改其内容以更改 MD5 值
|
||||
find "$folder_path" -type f \( -iname \*.png -o -iname \*.jpg -o -iname \*.jpeg -o -iname \*.webp -o -iname \*.svg \) -print0 | while IFS= read -r -d '' img_file; do
|
||||
echo "Processing $img_file"
|
||||
|
||||
# 计算当前文件的MD5值
|
||||
original_md5=$(md5sum "$img_file" | awk '{print $1}')
|
||||
|
||||
# 生成一个随机字符串并附加到文件末尾
|
||||
random_string=$(date '+%s%N' | md5sum)
|
||||
echo "$random_string" >> "$img_file"
|
||||
|
||||
# 计算修改后的文件的MD5值
|
||||
modified_md5=$(md5sum "$img_file" | awk '{print $1}')
|
||||
|
||||
echo "Original MD5: $original_md5"
|
||||
echo "Modified MD5: $modified_md5"
|
||||
echo "---------------------------"
|
||||
done
|
@@ -27,5 +27,5 @@ COMPILE_SDK_VERSION=33
|
||||
MIN_SDK_VERSION=21
|
||||
TARGET_SDK_VERSION=33
|
||||
|
||||
version_name=20.0.0
|
||||
version_code=20001
|
||||
version_name=1.0.0
|
||||
version_code=20003
|
60
readme-混淆.md
Normal file
60
readme-混淆.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# 混淆打包
|
||||
|
||||
> 准备工作:确保下面提到的脚本文件在项目根目录下;
|
||||
|
||||
|
||||
|
||||
1. 运行脚本`gen_dir_mapping.sh`生成 `dir_mapping.txt`,将生成的内容,复制到`app/xml-class-mapping.txt`的**dir mapping:**
|
||||
|
||||
```
|
||||
sh gen_dir_mapping.sh
|
||||
```
|
||||
|
||||
2. 运行脚本`gen_move_dir_app.sh`生成`move_dir.txt`(app模块对应的目录迁移规则)
|
||||
|
||||
```
|
||||
sh gen_move_dir_app.sh
|
||||
```
|
||||
|
||||
3. 运行脚本`gen_move_dir_bean.sh`生成`move_dir.txt`(bean对应的目录迁移规则),注意:需要执行三次:手动修改脚本内的include_path参数(bean、result、entity)
|
||||
|
||||
```
|
||||
sh gen_move_dir_bean.sh
|
||||
```
|
||||
|
||||
4. 运行脚本`gen_move_dir_ktx.sh`生成`move_dir.txt`(kotlin扩展函数相关类的迁移规则)
|
||||
> 说明:扩展函数采用`xmlClassGuard.moveDir`而不是`xmlClassGuard.moveDir`是因为发现最终混淆后出现引用/包未修改问题,PS:xmlClassGuard自身的Demo却不会发生这种情况,所以暂时这部分代码仅移动目录
|
||||
```
|
||||
sh gen_move_dir_ktx.sh
|
||||
```
|
||||
|
||||
5. 将上述2、3、4步生成的`move_dir.txt`内容复制到`app/build.gradle`内的**xmlClassGuard.moveDir**
|
||||
|
||||
6. 上述步骤完成`xmlClassGuard`相应的配置,准备开始混淆(执行`xmlClassGuard`对应的Gradle-Task)
|
||||
> 下列命令中的`Google_yinm`是渠道名;也可以通过Gradle面板:Tasks-guard-对应任务并执行
|
||||
```
|
||||
sh gradlew packageChangeGoogle_yinmRelease #改变package包名
|
||||
sh gradlew moveDirGoogle_yinmRelease #移动文件目录
|
||||
sh gradlew xmlClassGuardGoogle_yinmRelease #真正的混淆任务
|
||||
```
|
||||
|
||||
7. 第6步已经完成混淆工作,现在开始调整混淆规则,运行脚本`map_bean_proguard_rules.sh`生成`bean_proguard_rules.txt`(bean类经过混淆后的新路径)
|
||||
将内容复制到`app/proguard-rules.pro`
|
||||
```
|
||||
sh map_bean_proguard_rules.sh
|
||||
```
|
||||
|
||||
8. [可选]改变图片资源MD5值,运行脚本`change_image_md5.sh`(遍历项目所有图片,随机插入内容以达到改变md5的效果)
|
||||
> 目前每次打包都会执行一次,不会提交到git中;也可以改完后提交到git中,后续就无需再次改变了;
|
||||
```
|
||||
sh change_image_md5.sh 项目路径
|
||||
```
|
||||
|
||||
9. 所有混淆工作已完成,开始打包
|
||||
```
|
||||
sh gradlew clean :app:bundleGoogle_yinmRelease
|
||||
```
|
||||
|
||||
10. 打包完成后,`app/output/bundle/yinm-google.aab`就是最终产物(经过`aabResGuard`压缩混淆)
|
||||
|
||||
11. 测试aab包:利用bundle-tool工具打包和安装apk。
|
Reference in New Issue
Block a user