feat:完善混淆操作文档

This commit is contained in:
Max
2024-01-23 14:43:56 +08:00
parent 8aba5ebaa2
commit 015922bd90
3 changed files with 106 additions and 2 deletions

44
change_image_md5.sh Executable file
View 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

View File

@@ -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
View 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`是因为发现最终混淆后出现引用/包未修改问题PSxmlClassGuard自身的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。