Files
Zygisk-MyInjector/build_all.sh

156 lines
4.3 KiB
Bash
Raw Normal View History

#!/bin/bash
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 模块信息
MODULE_ID="zygisk-myinjector"
MODULE_VERSION="1.0"
MODULE_VERSION_CODE="100"
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} Zygisk MyInjector 构建脚本${NC}"
echo -e "${GREEN}========================================${NC}"
# 清理之前的构建
echo -e "\n${YELLOW}[1/5] 清理旧构建文件...${NC}"
rm -rf build/magisk_module
rm -f build/*.zip
mkdir -p build
# 构建 ConfigApp
echo -e "\n${YELLOW}[2/5] 构建 ConfigApp...${NC}"
cd configapp
if ../gradlew assembleDebug; then
echo -e "${GREEN}✓ ConfigApp 构建成功${NC}"
cd ..
else
echo -e "${RED}✗ ConfigApp 构建失败${NC}"
cd ..
exit 1
fi
# 构建 Magisk 模块
echo -e "\n${YELLOW}[3/5] 构建 Magisk 模块原生库...${NC}"
cd module
if ../gradlew assembleRelease; then
echo -e "${GREEN}✓ 模块原生库构建成功${NC}"
cd ..
else
echo -e "${RED}✗ 模块原生库构建失败${NC}"
cd ..
exit 1
fi
# 准备打包
echo -e "\n${YELLOW}[4/5] 准备打包文件...${NC}"
# 创建临时目录
TEMP_DIR="build/magisk_module"
mkdir -p $TEMP_DIR
# 创建 module.prop
cat > $TEMP_DIR/module.prop << EOF
id=$MODULE_ID
name=Zygisk MyInjector
version=v$MODULE_VERSION
versionCode=$MODULE_VERSION_CODE
author=jiqiu
description=A Zygisk module for dynamic library injection with ConfigApp
EOF
echo -e " ${GREEN}✓ 创建 module.prop${NC}"
# 复制 service.sh
if [ -f "module/service.sh" ]; then
cp module/service.sh $TEMP_DIR/
chmod 755 $TEMP_DIR/service.sh
echo -e " ${GREEN}✓ 复制 service.sh${NC}"
else
echo -e " ${RED}✗ 未找到 service.sh${NC}"
fi
# 创建 zygisk 目录并复制 so 文件
mkdir -p $TEMP_DIR/zygisk
SO_COUNT=0
# 查找并复制 so 文件
for arch in armeabi-v7a arm64-v8a x86 x86_64; do
SO_PATH="module/build/intermediates/stripped_native_libs/release/out/lib/$arch/libmyinjector.so"
if [ -f "$SO_PATH" ]; then
cp "$SO_PATH" "$TEMP_DIR/zygisk/$arch.so"
echo -e " ${GREEN}✓ 复制 $arch.so${NC}"
((SO_COUNT++))
fi
done
if [ $SO_COUNT -eq 0 ]; then
echo -e " ${RED}✗ 未找到任何 SO 文件${NC}"
exit 1
fi
# 复制 ConfigApp APK
APK_PATH="configapp/build/outputs/apk/debug/configapp-debug.apk"
if [ -f "$APK_PATH" ]; then
cp "$APK_PATH" "$TEMP_DIR/configapp.apk"
echo -e " ${GREEN}✓ 复制 ConfigApp APK${NC}"
# 显示 APK 信息
APK_SIZE=$(du -h "$APK_PATH" | cut -f1)
echo -e " APK 大小: $APK_SIZE"
else
echo -e " ${RED}✗ 未找到 ConfigApp APK${NC}"
exit 1
fi
# 复制 META-INF 目录Magisk 需要)
if [ -d "template/magisk_module/META-INF" ]; then
cp -r template/magisk_module/META-INF $TEMP_DIR/
echo -e " ${GREEN}✓ 复制 META-INF${NC}"
else
echo -e " ${RED}✗ 未找到 META-INF 模板${NC}"
exit 1
fi
# 打包
echo -e "\n${YELLOW}[5/5] 打包模块...${NC}"
ZIP_NAME="${MODULE_ID}-${MODULE_VERSION}.zip"
cd $TEMP_DIR
zip -r ../$ZIP_NAME * -x "*.DS_Store" > /dev/null 2>&1
cd ../..
# 显示结果
echo -e "\n${GREEN}========================================${NC}"
echo -e "${GREEN}✓ 构建完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo -e "\n模块文件: ${GREEN}build/$ZIP_NAME${NC}"
# 显示模块内容
echo -e "\n模块内容:"
unzip -l build/$ZIP_NAME | grep -E "(\.so|\.apk|\.prop|\.sh)" | while read line; do
echo -e " $line"
done
# 显示模块大小
MODULE_SIZE=$(du -h build/$ZIP_NAME | cut -f1)
echo -e "\n模块大小: ${GREEN}$MODULE_SIZE${NC}"
# 安装说明
echo -e "\n${YELLOW}安装方法:${NC}"
echo -e " 1. 将模块传输到手机:"
echo -e " ${GREEN}adb push build/$ZIP_NAME /sdcard/${NC}"
echo -e " 2. 在 Magisk Manager 中安装模块"
echo -e " 3. 重启手机"
echo -e "\n${YELLOW}验证安装:${NC}"
echo -e " ${GREEN}adb shell pm list packages | grep com.jiqiu.configapp${NC}"
echo -e " ${GREEN}adb shell cat /data/local/tmp/myinjector_install.log${NC}"
# 可选:直接安装到设备
if [ "$1" == "--install" ]; then
echo -e "\n${YELLOW}正在安装到设备...${NC}"
adb push build/$ZIP_NAME /data/local/tmp/
adb shell su -c "magisk --install-module /data/local/tmp/$ZIP_NAME"
echo -e "${GREEN}✓ 安装完成,请重启设备${NC}"
fi