全量迁移到 Gitea: App更新检查/JS热更新端点上链 Gitea, 文档同步
- AppUpdateManager: releases/latest 改用 gitea.kasugano.cn API - KtvJsBridge: JS 热更新改用 Gitea raw(/raw/branch/master/...) - MainActivity/SongApiClient/DatabaseBootstrapper/MuseDbSync: 文案与注释更新 - README.md/README.en.md: 标注本仓库地址(Gitea), 保留上游框架归属链接 - AGENTS.md: 运行时端点迁移状态
This commit is contained in:
@@ -11,10 +11,10 @@ import java.io.FileOutputStream
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.URL
|
||||
|
||||
/** Gitee Release based in-app updater. */
|
||||
/** Gitea Release based in-app updater. */
|
||||
object AppUpdateManager {
|
||||
private const val LATEST_RELEASE_API =
|
||||
"https://gitee.com/api/v5/repos/zijunchiang/maidong-ktv/releases/latest"
|
||||
"https://gitea.kasugano.cn/api/v1/repos/zijunchiang/maidong-ktv/releases/latest"
|
||||
|
||||
data class Release(
|
||||
val version: String,
|
||||
@@ -54,7 +54,7 @@ object AppUpdateManager {
|
||||
apkName = apkName,
|
||||
)
|
||||
})
|
||||
}, "gitee-update-check").start()
|
||||
}, "gitea-update-check").start()
|
||||
}
|
||||
|
||||
fun download(
|
||||
@@ -105,7 +105,7 @@ object AppUpdateManager {
|
||||
require(partial.renameTo(target)) { "无法保存安装包" }
|
||||
target
|
||||
})
|
||||
}, "gitee-update-download").start()
|
||||
}, "gitea-update-download").start()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,8 +7,8 @@ import java.util.Locale
|
||||
/**
|
||||
* 曲库下载引导(仅官方 Muse 同步源)。
|
||||
*
|
||||
* 说明:已移除 Gitee 数据库分片/镜像下载路径(database_publish 不再发布到 Gitee,
|
||||
* Gitee 仓库此后只存代码)。曲库统一从官方 Muse 服务(mconn.cherryonline.cn mls-api)
|
||||
* 说明:已移除分片/镜像数据库下载路径(database_publish 不再发布到代码仓库,
|
||||
* 代码仓库此后只存代码)。曲库统一从官方 Muse 服务(mconn.cherryonline.cn mls-api)
|
||||
* 同步,由 [MuseDbSync] 负责登录、同步、校验与安装;本类只做版本文件与可读错误包装。
|
||||
*/
|
||||
object DatabaseBootstrapper {
|
||||
|
||||
@@ -30,15 +30,16 @@ import javax.crypto.Cipher
|
||||
* 在隐藏 WebView 中运行可热更新的歌曲接口脚本。
|
||||
*
|
||||
* JS 决定接口地址、参数、签名和响应解析;Android 只提供 HTTP 与 RSA 这两个
|
||||
* WebView 中不可靠的底层能力。这样接口变化时只需更新 Gitee 上的 ktv_api.js。
|
||||
* WebView 中不可靠的底层能力。这样接口变化时只需更新 Gitea 上的 ktv_api.js。
|
||||
*/
|
||||
class KtvJsBridge(context: Context) {
|
||||
companion object {
|
||||
private const val TAG = "KtvJsBridge"
|
||||
private const val JS_FILE = "mobile/ktv_api.js"
|
||||
private const val CACHE_FILE = "ktv_api_cache.js"
|
||||
// 热更新脚本地址(Gitea 主仓库; raw 规范路径为 /raw/branch/<分支>/<文件>)
|
||||
private const val REMOTE_JS_URL =
|
||||
"https://gitee.com/zijunchiang/maidong-ktv/raw/master/app/src/main/assets/mobile/ktv_api.js"
|
||||
"https://gitea.kasugano.cn/zijunchiang/maidong-ktv/raw/branch/master/app/src/main/assets/mobile/ktv_api.js"
|
||||
private const val MAX_RESPONSE_BYTES = 2 * 1024 * 1024
|
||||
private const val JS_REQUEST_TIMEOUT_MS = 180_000
|
||||
// 当前歌曲源 w.w345.my 使用的设备标识(mac + sn)。与用户抓包示例一致,
|
||||
@@ -250,7 +251,7 @@ class KtvJsBridge(context: Context) {
|
||||
cacheFile.writeText(script, Charsets.UTF_8)
|
||||
tempFile.delete()
|
||||
}
|
||||
Log.i(TAG, "JS cache updated from Gitee (${script.length} chars)")
|
||||
Log.i(TAG, "JS cache updated from Gitea (${script.length} chars)")
|
||||
// 启动后刚拉到的新版本直接生效;若已有请求在执行,则留到下次启动。
|
||||
mainHandler.post {
|
||||
if (ready && callbacks.isEmpty() && !destroyed) {
|
||||
|
||||
@@ -8232,7 +8232,7 @@ class MainActivity : AppCompatActivity() {
|
||||
SettingsEntry(
|
||||
R.drawable.ott_ic_data_upgrade,
|
||||
"应用更新",
|
||||
"当前版本 ${BuildConfig.VERSION_NAME},更新来源:Gitee Release",
|
||||
"当前版本 ${BuildConfig.VERSION_NAME},更新来源:Gitea Release",
|
||||
"检查更新",
|
||||
) { checkAppUpdate(true) },
|
||||
SettingsEntry(R.drawable.ott_ic_about_us, "关于", actionText = "查看") { showAboutDialog() },
|
||||
|
||||
@@ -20,7 +20,7 @@ import javax.crypto.Cipher
|
||||
/**
|
||||
* 官方曲库同步:login → cookie → sqlite/sync → 下载 gz → 解压安装。
|
||||
*
|
||||
* 这是原版「时光KTV / 麦动」的曲库分发方式,取代此前临时使用的 Gitee 分片方案。
|
||||
* 这是原版「时光KTV / 麦动」的曲库分发方式,取代此前临时使用的分片分发方案。
|
||||
* 授权门控发生在服务端(未授权设备 sync 返回空 files),本地只负责完整复刻请求协议。
|
||||
*/
|
||||
object MuseDbSync {
|
||||
|
||||
@@ -10,8 +10,8 @@ import java.util.concurrent.atomic.AtomicReference
|
||||
/**
|
||||
* 歌曲 API 客户端 —— JS 热更新桥接
|
||||
* =================================
|
||||
* - 通过 KtvJsBridge 调用 Gitee 上的 JS 脚本
|
||||
* - API 变更时只需更新 Gitee JS 文件,App 无需发版
|
||||
* - 通过 KtvJsBridge 调用 Gitea 上的 JS 脚本
|
||||
* - API 变更时只需更新 Gitea JS 文件,App 无需发版
|
||||
* - 首次播放时实时获取 URL,不存在过期问题
|
||||
*/
|
||||
object SongApiClient {
|
||||
|
||||
Reference in New Issue
Block a user