diff --git a/app/src/main/kotlin/com/aliucord/manager/domain/manager/PreferencesManager.kt b/app/src/main/kotlin/com/aliucord/manager/domain/manager/PreferencesManager.kt index da8345d..e9c0ed5 100644 --- a/app/src/main/kotlin/com/aliucord/manager/domain/manager/PreferencesManager.kt +++ b/app/src/main/kotlin/com/aliucord/manager/domain/manager/PreferencesManager.kt @@ -11,9 +11,8 @@ class PreferencesManager(preferences: SharedPreferences) : BasePreferenceManager var replaceIcon by booleanPreference("replace_icon", true) var devMode by booleanPreference("dev_mode", false) var debuggable by booleanPreference("debuggable", false) - var useDexFromStorage by booleanPreference("use_dex_from_storage", false) - var dexLocation by stringPreference("dex_location", "$aliucordDir/Injector.dex") var appName by stringPreference("app_name", "Aliucord") var packageName by stringPreference("package_name", "com.aliucord") var version by stringPreference("version", "146108") + var hermesReplaceLibCpp by booleanPreference("hermes_replace_libcpp", false) } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screen/SettingsScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screen/SettingsScreen.kt index cdcb7fe..4753e06 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screen/SettingsScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screen/SettingsScreen.kt @@ -114,10 +114,17 @@ fun SettingsScreen( label = stringResource(R.string.setting_debuggable), secondaryLabel = stringResource(R.string.setting_debuggable_desc), pref = preferences.debuggable, - icon = { Icon(Icons.Default.BugReport, null) } - ) { - preferences.debuggable = it - } + icon = { Icon(Icons.Default.BugReport, null) }, + onPrefChange = { preferences.debuggable = it }, + ) + + SettingsSwitch( + label = stringResource(R.string.setting_hermes_replace_libcpp), + secondaryLabel = stringResource(R.string.setting_hermes_replace_libcpp_desc), + icon = { Icon(Icons.Default.FileCopy, null) }, + pref = preferences.hermesReplaceLibCpp, + onPrefChange = { preferences.hermesReplaceLibCpp = it }, + ) } } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt index 5f70d47..9b4828b 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/viewmodel/InstallViewModel.kt @@ -263,13 +263,15 @@ class InstallViewModel( } // Download the hermes-cppruntime-release.aar file to replace in the apk - val cppRuntime = cacheDir.resolve("hermes-cppruntime-release-${latestHermesRelease.tagName}.aar").also { file -> - if (file.exists()) return@also - cached = false + val cppRuntime = if (!preferences.hermesReplaceLibCpp) null else { + cacheDir.resolve("hermes-cppruntime-release-${latestHermesRelease.tagName}.aar").also { file -> + if (file.exists()) return@also + cached = false - latestHermesRelease.assets - .find { it.name == "hermes-cppruntime-release.aar" }!!.browserDownloadUrl - .also { downloadManager.download(it, file) } + latestHermesRelease.assets + .find { it.name == "hermes-cppruntime-release.aar" }!!.browserDownloadUrl + .also { downloadManager.download(it, file) } + } } hermes to cppRuntime @@ -386,6 +388,8 @@ class InstallViewModel( ZipWriter(libsApkFile, true).use { libsApk -> // Process the hermes and cpp runtime library for (libFile in arrayOf(hermesLibrary, cppRuntimeLibrary)) { + libFile ?: continue + // Map .aar to the embedded .so inside val binaryName = with(libFile.name) { when { @@ -494,7 +498,6 @@ class InstallViewModel( } } - // Download the injector dex val injectorFile = step(InstallStep.DL_INJECTOR) { cacheDir.resolve("injector-${dataJson.aliucordHash}.dex").also { file -> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e3edbd0..0e91dcf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -50,8 +50,10 @@ Manager appearance App Name Package Name - Download Version + Download Version (RN only) Dynamic color + Replace libc++ (RN only) + Downloads and uses libc++ from patched hermes Invalid package name, reset to com.aliucord System