diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml
new file mode 100644
index 0000000..371f2e2
--- /dev/null
+++ b/.idea/appInsightsSettings.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 9d078c5..9e27afd 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -12,8 +12,8 @@ android {
applicationId = "cocobo1.pupu.xposed"
minSdk = 22
targetSdk = 36
- versionCode = 1000
- versionName = "1.0.0"
+ versionCode = 1010
+ versionName = "1.0.1"
}
buildTypes {
@@ -29,10 +29,10 @@ android {
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_21
}
kotlinOptions {
- jvmTarget = "17"
+ jvmTarget = "21"
}
buildFeatures {
buildConfig = true
diff --git a/app/src/main/kotlin/io/github/pupu/xposed/FontsModule.kt b/app/src/main/kotlin/io/github/pupu/xposed/FontsModule.kt
index fef587b..0c96a9d 100644
--- a/app/src/main/kotlin/io/github/pupu/xposed/FontsModule.kt
+++ b/app/src/main/kotlin/io/github/pupu/xposed/FontsModule.kt
@@ -50,11 +50,15 @@ class FontsModule: PupuModule() {
}
}
- override fun onInit(packageParam: XC_LoadPackage.LoadPackageParam) = with (packageParam) {
- XposedHelpers.findAndHookMethod("com.facebook.react.views.text.ReactFontManager", classLoader, "createAssetTypeface",
+ private fun hookClass(classLoader: ClassLoader, className: String) {
+ XposedHelpers.findAndHookMethod(
+ className,
+ classLoader,
+ "createAssetTypeface",
String::class.java,
Int::class.java,
- "android.content.res.AssetManager", object : XC_MethodReplacement() {
+ "android.content.res.AssetManager",
+ object : XC_MethodReplacement() {
override fun replaceHookedMethod(param: MethodHookParam): Typeface? {
val fontFamilyName: String = param.args[0].toString()
val style: Int = param.args[1] as Int
@@ -62,8 +66,34 @@ class FontsModule: PupuModule() {
return createAssetTypeface(fontFamilyName, style, assetManager)
}
})
+ }
- val fontDefFile = File(appInfo.dataDir, "files/pupu/fonts.json")
+// override fun onInit(packageParam: XC_LoadPackage.LoadPackageParam) = with (packageParam) {
+// XposedHelpers.findAndHookMethod("com.facebook.react.views.text.ReactFontManager", classLoader, "createAssetTypeface",
+// String::class.java,
+// Int::class.java,
+// "android.content.res.AssetManager", object : XC_MethodReplacement() {
+// override fun replaceHookedMethod(param: MethodHookParam): Typeface? {
+// val fontFamilyName: String = param.args[0].toString()
+// val style: Int = param.args[1] as Int
+// val assetManager: AssetManager = param.args[2] as AssetManager
+// return createAssetTypeface(fontFamilyName, style, assetManager)
+// }
+// })
+
+ override fun onInit(packageParam: XC_LoadPackage.LoadPackageParam) = with (packageParam) {
+ try {
+ // Try to hook on versions (280201+)
+ hookClass(classLoader, "com.facebook.react.views.text.ReactFontManager\$Companion")
+ } catch (e: Throwable) {
+ when (e) {
+ // Hook old class (280200-)
+ is NoClassDefFoundError, is XposedHelpers.ClassNotFoundError -> hookClass(classLoader, "com.facebook.react.views.text.ReactFontManager")
+ else -> throw e
+ }
+ }
+
+ val fontDefFile = File(appInfo.dataDir, "files/pyon/fonts.json")
if (!fontDefFile.exists()) return@with
val fontDef = try {
@@ -71,7 +101,7 @@ class FontsModule: PupuModule() {
json.decodeFromString(fontDefFile.readText())
} catch (_: Throwable) { return@with }
- fontsDownloadsDir = File(appInfo.dataDir, "files/pupu/downloads/fonts").apply { mkdirs() }
+ fontsDownloadsDir = File(appInfo.dataDir, "files/pyon/downloads/fonts").apply { mkdirs() }
fontsDir = File(fontsDownloadsDir, fontDef.name!!).apply { mkdirs() }
fontsAbsPath = fontsDir.absolutePath + "/"