+

@@ -66,6 +70,7 @@
---
## 预览

+

---
## 🚧 已知问题
@@ -75,12 +80,11 @@
- **华为服**:启动界面卡顿,疑似由于签名验证问题导致HMS Core初始化失败。
---
-
## 📚 致谢
1. [JMBQ/azurlane](https://github.com/JMBQ/azurlane)
2. [n0k0m3/PerseusCI](https://github.com/n0k0m3/PerseusCI)
-
+3. [L-JINBIN/MTDataFilesProvider](https://github.com/L-JINBIN/MTDataFilesProvider)
---
## 📊 Star历史
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
new file mode 100644
index 0000000..bcc9e81
--- /dev/null
+++ b/RELEASE_NOTES.md
@@ -0,0 +1,25 @@
+
+中文安装说明 - 点击展开
+
+1. 在下方列表中找到你需要的版本前缀,下载该服务器名称前缀的所有以 `7z.00*` 结尾的分卷文件。
+2. 解压时,只需要右键选择 `XXX.7z.001` 进行解压,解压软件会自动处理后续分卷。
+3. 在解压后的文件夹中找到对应的安装包并安装(具体安装方法请自行查阅相关教程)。
+
+
+
+
+English Installation Instructions - Click to expand
+
+1. Find the version prefix you need in the list below, and download all files ending with `7z.00*` that share the same server name prefix.
+2. When extracting, simply select the `XXX.7z.001` file to decompress, and the software will automatically process the rest of the volumes.
+3. Find the installation package in the extracted folder and install it (please refer to relevant tutorials for installation methods).
+
+
+
+### 📝 更新日志 / Changelog
+- **[新增]** “文件提供器”(File Provider),方便免 Root 用户修改文件。
+- **[New]** Added "File Provider", making it easier for non-root users to modify files.
+
+### 🪄使用方法
+- [注入文件提供器](https://mt2.cn/guide/reverse/inject-documents-provider.html#%E6%B7%BB%E5%8A%A0%E6%9C%AC%E5%9C%B0%E5%AD%98%E5%82%A8)
+- [Data Files Provider](https://mt2.cn/guide/reverse/inject-documents-provider.html#%E6%B7%BB%E5%8A%A0%E6%9C%AC%E5%9C%B0%E5%AD%98%E5%82%A8)
diff --git a/images/bilibili.svg b/images/bilibili.svg
new file mode 100644
index 0000000..832e4d2
--- /dev/null
+++ b/images/bilibili.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/merge_build.sh b/merge_build.sh
index 992cfb4..d27b815 100644
--- a/merge_build.sh
+++ b/merge_build.sh
@@ -92,7 +92,14 @@ DOWNLOAD_APKTOOL() {
local FILENAME="apktool.jar"
echo "正在下载Apktool..."
- local API_RESPONSE=$(curl -s "https://api.github.com/repos/${OWNER}/${REPO}/releases/latest")
+ # 新增判断:修复TW在新版Apktool反编译 Androidmanifest.xml 时报错
+ if [ "${GAME_SERVER}" == "TW" ]; then
+ API_URL="https://api.github.com/repos/${OWNER}/${REPO}/releases/tags/v2.12.1"
+ else
+ API_URL="https://api.github.com/repos/${OWNER}/${REPO}/releases/latest"
+ fi
+
+ local API_RESPONSE=$(curl -s "${API_URL}")
local DOWNLOAD_LINK=$(echo "${API_RESPONSE}" | jq -r '.assets[] | select(.name | endswith(".jar")) | .browser_download_url' | head -n 1)
if [ -z "${DOWNLOAD_LINK}" ] || [ "${DOWNLOAD_LINK}" == "null" ]; then
echo "无法找到Apktool下载链接"
@@ -117,6 +124,7 @@ DOWNLOAD_MOD_MENU() {
echo "正在下载MOD补丁..."
local API_RESPONSE=$(curl -s "https://api.github.com/repos/${OWNER}/${REPO}/releases/latest")
local JMBQ_VERSION=$(echo "${API_RESPONSE}" | jq -r '.tag_name')
+
# 修改:查找name中含有.rar的文件,而不是直接使用第一个assets
local DOWNLOAD_LINK=$(echo "${API_RESPONSE}" | jq -r '.assets[] | select(.name | contains(".rar")) | .browser_download_url' | head -n 1)
@@ -312,6 +320,67 @@ PATCH_APK() {
echo "补丁完成。"
}
+# 注入MT文件提供器
+INJECT_MT_PROVIDER() {
+ echo "正在注入 MTDataFilesProvider..."
+ local TARGET_DIR="${DOWNLOAD_DIR}/DECODE_Output"
+ local MANIFEST_FILE="${TARGET_DIR}/AndroidManifest.xml"
+
+ # 检查清单文件是否存在,防止路径错误
+ if [ ! -f "${MANIFEST_FILE}" ]; then
+ echo "错误:找不到 ${MANIFEST_FILE},解包可能失败或路径不匹配!"
+ return 1
+ fi
+
+ # 1. 自动获取包名(如果是XAPK则使用预设,如果是APK则从清单提取)
+ local CURRENT_PKG=""
+ if [ "${BUILD_TYPE}" = "XAPK" ]; then
+ CURRENT_PKG="${GAME_BUNDLE_ID}"
+ else
+ CURRENT_PKG=$(grep -oP 'package="\K[^"]+' "${MANIFEST_FILE}")
+ fi
+
+ if [ -z "${CURRENT_PKG}" ]; then
+ echo "无法识别包名,取消注入"
+ return 1
+ fi
+ echo "识别到目标包名: ${CURRENT_PKG}"
+
+ # 2. 拷贝 Smali 文件 (保持 bin/mt/file/content/ 结构)
+ mkdir -p "${TARGET_DIR}/smali"
+ if [ ! -d "MTDataFilesProvider/bin" ]; then
+ echo "未找到 MTDataFilesProvider/bin 目录,请检查路径"
+ return 1
+ fi
+
+ if [ -d "${TARGET_DIR}/smali_classes2" ]; then
+ cp -r "MTDataFilesProvider/bin" "${TARGET_DIR}/smali_classes2/"
+ echo "Smali 文件成功拷贝至 smali_classes2 (规避 64K 限制)"
+ else
+ cp -r "MTDataFilesProvider/bin" "${TARGET_DIR}/smali_classes3/"
+ echo "Smali 文件成功拷贝至 smali_classes3 (规避 64K 限制)"
+ fi
+
+ # 3. 修改 AndroidManifest.xml
+ if grep -q "MTDataFilesProvider" "${MANIFEST_FILE}"; then
+ echo "已存在 MT 组件,跳过修改"
+ else
+ local PROVIDER_XML="
"
+ local ACTIVITY_XML="
"
+
+ sed -i "s||${PROVIDER_XML}${ACTIVITY_XML}|g" "${MANIFEST_FILE}"
+ echo "AndroidManifest.xml 注入完成"
+
+ # 二次校验是否注入成功
+ if grep -q "MTDataFilesProvider" "${MANIFEST_FILE}"; then
+ echo "AndroidManifest.xml 注入成功!"
+ else
+ echo "AndroidManifest.xml 注入失败!"
+ return 1
+ fi
+ fi
+}
+
# 打包APK
BUILD_APK() {
local OUTPUT_APK
@@ -503,6 +572,7 @@ main() {
DECODE_APK
DELETE_ORGINAL_APK
PATCH_APK
+ INJECT_MT_PROVIDER
BUILD_APK
OPTIMIZE_AND_SIGN_APK
GET_GAME_VERSION
@@ -516,6 +586,7 @@ main() {
DECODE_APK
DELETE_ORGINAL_APK
PATCH_APK
+ INJECT_MT_PROVIDER
BUILD_APK
OPTIMIZE_AND_SIGN_APK
GET_GAME_VERSION