#!/bin/bash
Color_Off='\e[0m'
BIRed='\e[1;31m'
echo -e "${BIRed}===== 开始注入 =====${Color_Off}\n"
#这里更换你自己的包名
PACKAGE="com.miniworldroyale.sparkgame.m4399"

# 1. 正确获取应用安装目录（去掉换行符、只取第一个APK路径）
apk_path=$(pm path "$PACKAGE" | head -n1 | cut -d':' -f2 | tr -d '\n\r')
if [ -z "$apk_path" ]; then
    echo -e "${BIRed}错误：未找到包 $PACKAGE${Color_Off}"
    exit 1
fi

# 2. 提取目录部分，并拼接原生库路径（arm64）
base_dir=$(dirname "$apk_path")
lib_dir="${base_dir}/lib/arm64"
echo "目标SO库目录: $lib_dir"

# 3. 确保目录存在（Android 10+ 可能需要手动创建）
if [ ! -d "$lib_dir" ]; then
    echo "目录不存在，尝试创建..."
    mkdir -p "$lib_dir" 2>/dev/null
    if [ $? -ne 0 ]; then
        echo -e "${BIRed}创建目录失败，请确认是否具有 root 权限${Color_Off}"
        exit 1
    fi
fi

# 4. 推送并授权 inject.so
echo -e "${BIRed}[1/4] 推送 inject.so 并授权权限...${Color_Off}"
cp -f "$(pwd)/inject.so" "${lib_dir}/inject.so"
chmod 777 "${lib_dir}/inject.so"

# 5. 推送并授权 libCs.so
echo -e "${BIRed}[2/4] 推送 libCs.so 并授权权限...${Color_Off}"
cp -f "$(pwd)/libCs.so" "${lib_dir}/libCs.so"
chmod 777 "${lib_dir}/libCs.so"

# 6. 启动游戏
echo -e "${BIRed}[3/4] 启动游戏...${Color_Off}"
am start -n "$PACKAGE/com.unity3d.player.MainActivity"
sleep 1

# 7. 执行注入（注意：inject.so 必须为可执行文件，否则需改用注入器）
echo -e "${BIRed}[4/4] 执行 SO 库注入...${Color_Off}"
"${lib_dir}/inject.so" --pname "$PACKAGE" --libpath "${lib_dir}/libCs.so"

echo -e "\n${BIRed}===== 注入流程执行完成 =====${Color_Off}"
echo -e "${Color_Off}"