From b0caa7facbaeacaf3e05704e73bed4947027ab90 Mon Sep 17 00:00:00 2001 From: AzenKain Date: Sun, 7 Jun 2026 15:25:41 +0700 Subject: [PATCH] feat: optimaze --- app/libs/firefly-go.aar | 4 +- .../firefly_go_android/FireflyModMenu.kt | 47 ++++++++++++++----- .../example/firefly_go_android/MainHook.kt | 5 +- script/release.json | 4 +- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/app/libs/firefly-go.aar b/app/libs/firefly-go.aar index 5ec13b7..04f0f5e 100644 --- a/app/libs/firefly-go.aar +++ b/app/libs/firefly-go.aar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c8cc86eec51f87992f03922fdeb19a6145077f6afc0438aae55846f604500bf -size 14066552 +oid sha256:f022a4b1d6868486a6592e69570c92c1cc7b0f4ec932cb7d88408ab3c5557424 +size 13952548 diff --git a/app/src/main/java/com/example/firefly_go_android/FireflyModMenu.kt b/app/src/main/java/com/example/firefly_go_android/FireflyModMenu.kt index 08db3be..12276ce 100644 --- a/app/src/main/java/com/example/firefly_go_android/FireflyModMenu.kt +++ b/app/src/main/java/com/example/firefly_go_android/FireflyModMenu.kt @@ -1,7 +1,8 @@ package com.example.firefly_go_android import android.app.Activity -import android.os.Environment +import android.content.Context +import android.os.Build import android.util.Log import libandroid.Libandroid import java.io.File @@ -14,30 +15,49 @@ object FireflyModMenu { @JvmStatic fun init(activity: Activity) { - val appDataPath = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "FireflyGo").absolutePath + val appDataPath = File(activity.getExternalFilesDir(null), "FireflyGo").absolutePath val dataDir = File("$appDataPath/data") if (!dataDir.exists()) dataDir.mkdirs() + val sharedPrefs = activity.getSharedPreferences("FireflyModPrefs", Context.MODE_PRIVATE) + val currentVersion = try { + val packageInfo = activity.packageManager.getPackageInfo("com.kain344.firefly_go_android", 0) + if (Build.VERSION.SDK_INT >= 33) { + packageInfo.longVersionCode + } else { + @Suppress("DEPRECATION") + packageInfo.versionCode.toLong() + } + } catch (e: Exception) { + 1L + } + val lastVersion = sharedPrefs.getLong("last_version_code", 0L) + val shouldOverride = currentVersion > lastVersion + if (!isServerStarted) { Log.d("FireflyMod", "Start Server") isServerStarted = true Thread { try { - val isCopyDone = copyRawFiles(dataDir) + val isCopyDone = copyRawFiles(dataDir, shouldOverride) if (isCopyDone) { + if (shouldOverride) { + sharedPrefs.edit().putLong("last_version_code", currentVersion).apply() + } Libandroid.setPathDataLocal(appDataPath) Libandroid.setServerRunning(true) } else { isServerStarted = false } } catch (e: Exception) { + Log.e("FireflyMod", "Error starting server: ${e.message}", e) isServerStarted = false } }.start() } } - private fun copyRawFiles(targetDir: File): Boolean { + private fun copyRawFiles(targetDir: File, override: Boolean = false): Boolean { val files = listOf( "assets/data-in-game.json" to "data-in-game.json", "assets/freesr-data.json" to "freesr-data.json", @@ -46,21 +66,22 @@ object FireflyModMenu { return try { for ((assetPath, name) in files) { val outFile = File(targetDir, name) - if (!outFile.exists()) { - val inputStream = - FireflyModMenu::class.java.classLoader?.getResourceAsStream(assetPath) - ?: return false + if (outFile.exists() && !override) continue - inputStream.use { input -> - FileOutputStream(outFile).use { output -> - input.copyTo(output) - output.fd.sync() - } + val inputStream = + FireflyModMenu::class.java.classLoader?.getResourceAsStream(assetPath) + ?: return false + + inputStream.use { input -> + FileOutputStream(outFile).use { output -> + input.copyTo(output) + output.fd.sync() } } } true } catch (e: Exception) { + Log.e("FireflyMod", "Error copying file: ${e.message}", e) false } } diff --git a/app/src/main/java/com/example/firefly_go_android/MainHook.kt b/app/src/main/java/com/example/firefly_go_android/MainHook.kt index 7716038..7e5a6d4 100644 --- a/app/src/main/java/com/example/firefly_go_android/MainHook.kt +++ b/app/src/main/java/com/example/firefly_go_android/MainHook.kt @@ -12,7 +12,10 @@ import libandroid.Libandroid class MainHook : IXposedHookLoadPackage { override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { val pkg = lpparam.packageName - if (!pkg.startsWith("com.miHoYo.hkrpg") && !pkg.startsWith("com.HoYoverse.hkrpg")) return + if (!pkg.startsWith("com.miHoYo.hkrpg") && + !pkg.startsWith("com.HoYoverse.hkrpg") && + !pkg.startsWith("com.HoYoverse.Cyrene") + ) return XposedHelpers.findAndHookMethod( Activity::class.java.name, diff --git a/script/release.json b/script/release.json index e4eee9a..4b69a64 100644 --- a/script/release.json +++ b/script/release.json @@ -1,5 +1,5 @@ { - "tag": "4.3.1-01", - "title": "PreBuild Version 4.3.51 - 01" + "tag": "4.3.1-02", + "title": "PreBuild Version 4.3.51 - 02" } \ No newline at end of file