fix on latest alpha

This commit is contained in:
cocobo1 2025-05-08 19:56:28 +03:00
parent 5987afb3b2
commit dfa371dafa
3 changed files with 65 additions and 9 deletions

26
.idea/appInsightsSettings.xml generated Normal file
View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AppInsightsSettings">
<option name="tabSettings">
<map>
<entry key="Firebase Crashlytics">
<value>
<InsightsFilterSettings>
<option name="connection">
<ConnectionSetting>
<option name="appId" value="PLACEHOLDER" />
<option name="mobileSdkAppId" value="" />
<option name="projectId" value="" />
<option name="projectNumber" value="" />
</ConnectionSetting>
</option>
<option name="signal" value="SIGNAL_UNSPECIFIED" />
<option name="timeIntervalDays" value="THIRTY_DAYS" />
<option name="visibilityType" value="ALL" />
</InsightsFilterSettings>
</value>
</entry>
</map>
</option>
</component>
</project>

View file

@ -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

View file

@ -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<FontDefinition>(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 + "/"