diff --git a/yukihookapi/build.gradle b/yukihookapi/build.gradle index 69d2df94..19b6ed28 100644 --- a/yukihookapi/build.gradle +++ b/yukihookapi/build.gradle @@ -40,7 +40,7 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { dependencies { // Used 82 API Version compileOnly 'de.robv.android.xposed:api:82' - compileOnly fileTree(include: ['android-stub.jar', 'module-injector.jar'], dir: 'libs') + compileOnly fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.annotation:annotation:1.3.0' } diff --git a/yukihookapi/libs/androidx-activity.jar b/yukihookapi/libs/androidx-activity.jar new file mode 100644 index 00000000..c6661beb Binary files /dev/null and b/yukihookapi/libs/androidx-activity.jar differ diff --git a/yukihookapi/libs/androidx-core.jar b/yukihookapi/libs/androidx-core.jar new file mode 100644 index 00000000..2c40dd3f Binary files /dev/null and b/yukihookapi/libs/androidx-core.jar differ diff --git a/yukihookapi/libs/androidx-fragment.jar b/yukihookapi/libs/androidx-fragment.jar new file mode 100644 index 00000000..160357a1 Binary files /dev/null and b/yukihookapi/libs/androidx-fragment.jar differ diff --git a/yukihookapi/libs/androidx-lifecycle-common.jar b/yukihookapi/libs/androidx-lifecycle-common.jar new file mode 100644 index 00000000..da323a95 Binary files /dev/null and b/yukihookapi/libs/androidx-lifecycle-common.jar differ diff --git a/yukihookapi/libs/androidx-lifecycle-livedata-core.jar b/yukihookapi/libs/androidx-lifecycle-livedata-core.jar new file mode 100644 index 00000000..44a52c1b Binary files /dev/null and b/yukihookapi/libs/androidx-lifecycle-livedata-core.jar differ diff --git a/yukihookapi/libs/androidx-lifecycle-livedata.jar b/yukihookapi/libs/androidx-lifecycle-livedata.jar new file mode 100644 index 00000000..d0a17a98 Binary files /dev/null and b/yukihookapi/libs/androidx-lifecycle-livedata.jar differ diff --git a/yukihookapi/libs/androidx-lifecycle-runtime.jar b/yukihookapi/libs/androidx-lifecycle-runtime.jar new file mode 100644 index 00000000..ef898eec Binary files /dev/null and b/yukihookapi/libs/androidx-lifecycle-runtime.jar differ diff --git a/yukihookapi/libs/androidx-lifecycle-viewmodel-savestate.jar b/yukihookapi/libs/androidx-lifecycle-viewmodel-savestate.jar new file mode 100644 index 00000000..ab6eb534 Binary files /dev/null and b/yukihookapi/libs/androidx-lifecycle-viewmodel-savestate.jar differ diff --git a/yukihookapi/libs/androidx-lifecycle-viewmodel.jar b/yukihookapi/libs/androidx-lifecycle-viewmodel.jar new file mode 100644 index 00000000..9cade31b Binary files /dev/null and b/yukihookapi/libs/androidx-lifecycle-viewmodel.jar differ diff --git a/yukihookapi/libs/androidx-prefs.jar b/yukihookapi/libs/androidx-prefs.jar new file mode 100644 index 00000000..0b7582aa Binary files /dev/null and b/yukihookapi/libs/androidx-prefs.jar differ diff --git a/yukihookapi/libs/androidx-savestate.jar b/yukihookapi/libs/androidx-savestate.jar new file mode 100644 index 00000000..40f58a55 Binary files /dev/null and b/yukihookapi/libs/androidx-savestate.jar differ diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt index 5fa6d986..28be90a6 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt @@ -58,6 +58,21 @@ import java.io.File */ class YukiHookModulePrefs(private val context: Context? = null) { + internal companion object { + + /** + * 设置全局可读可写 + * @param context 实例 + * @param prefsFileName Sp 文件名 + */ + internal fun makeWorldReadable(context: Context?, prefsFileName: String) = runCatching { + File(File(context!!.applicationInfo.dataDir, "shared_prefs"), prefsFileName).apply { + setReadable(true, false) + setExecutable(true, false) + } + } + } + /** 存储名称 - 默认包名 + _preferences */ private var prefsName = "${YukiHookXposedBridge.modulePackageName.ifBlank { context?.packageName ?: "" }}_preferences" @@ -85,6 +100,9 @@ class YukiHookModulePrefs(private val context: Context? = null) { /** 是否使用键值缓存 */ private var isUsingKeyValueCache = YukiHookAPI.Configs.isEnableModulePrefsCache + /** 是否为新版存储方式 EdXposed/LSPosed */ + private var isNewXSharePrefsMode = false + /** 检查 API 装载状态 */ private fun checkApi() { if (YukiHookAPI.isLoadedFromBaseContext) error("YukiHookModulePrefs not allowed in Custom Hook API") @@ -110,20 +128,17 @@ class YukiHookModulePrefs(private val context: Context? = null) { private val sPref get() = try { checkApi() - context?.getSharedPreferences(prefsName, Context.MODE_WORLD_READABLE) + context?.getSharedPreferences(prefsName, Context.MODE_WORLD_READABLE).also { isNewXSharePrefsMode = true } ?: error("If you want to use module prefs, you must set the context instance first") } catch (_: Throwable) { checkApi() - context?.getSharedPreferences(prefsName, Context.MODE_PRIVATE) + context?.getSharedPreferences(prefsName, Context.MODE_PRIVATE).also { isNewXSharePrefsMode = false } ?: error("If you want to use module prefs, you must set the context instance first") } /** 设置全局可读可写 */ private fun makeWorldReadable() = runCatching { - File(File(context!!.applicationInfo.dataDir, "shared_prefs"), "$prefsName.xml").apply { - setReadable(true, false) - setExecutable(true, false) - } + if (isNewXSharePrefsMode.not()) makeWorldReadable(context, prefsFileName = "${prefsName}.xml") } /**