Skip to content

Commit

Permalink
fix: return if class is not found
Browse files Browse the repository at this point in the history
  • Loading branch information
RichardLuo0 committed Jan 19, 2025
1 parent 0417a8d commit 579c880
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import com.richardluo.globalIconPack.utils.call
import com.richardluo.globalIconPack.utils.rGet
import com.richardluo.globalIconPack.utils.rSet
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import java.lang.reflect.Method

Expand All @@ -27,8 +26,8 @@ class NoForceShape : Hook {
removeShadow(lpp)

if (!getPrefInMod().getBoolean(PrefKey.NO_FORCE_SHAPE, PrefDef.NO_FORCE_SHAPE)) return
XposedBridge.hookAllMethods(
BaseIconFactory.getClazz(lpp),
ReflectHelper.hookAllMethods(
BaseIconFactory.getClazz(lpp) ?: return,
"normalizeAndWrapToAdaptiveIcon",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
Expand All @@ -40,7 +39,7 @@ class NoForceShape : Hook {
)
// Fix FloatingIconView and DragView
ReflectHelper.hookAllMethods(
BaseIconFactory.getClazz(lpp),
BaseIconFactory.getClazz(lpp) ?: return,
"wrapToAdaptiveIcon",
arrayOf(Drawable::class.java),
object : XC_MethodHook() {
Expand Down Expand Up @@ -103,7 +102,7 @@ class NoForceShape : Hook {
if (!getPrefInMod().getBoolean(PrefKey.NO_FORCE_SHAPE, PrefDef.NO_FORCE_SHAPE)) return
// Fix splash screen
ReflectHelper.hookAllMethods(
BaseIconFactory.getClazz(lpp),
BaseIconFactory.getClazz(lpp) ?: return,
"normalizeAndWrapToAdaptiveIcon",
arrayOf(Drawable::class.java),
object : XC_MethodHook() {
Expand All @@ -122,7 +121,7 @@ class NoForceShape : Hook {
if (!getPrefInMod().getBoolean(PrefKey.NO_FORCE_SHAPE, PrefDef.NO_FORCE_SHAPE)) return
// Fix recent app list
ReflectHelper.hookAllMethods(
BaseIconFactory.getClazz(lpp),
BaseIconFactory.getClazz(lpp) ?: return,
"normalizeAndWrapToAdaptiveIcon",
arrayOf(Drawable::class.java),
object : XC_MethodHook() {
Expand Down Expand Up @@ -171,7 +170,7 @@ class NoForceShape : Hook {
val MODE_HARDWARE = 3
val MODE_HARDWARE_WITH_SHADOW = 4
ReflectHelper.hookAllMethods(
BaseIconFactory.getClazz(lpp),
BaseIconFactory.getClazz(lpp) ?: return,
"drawIconBitmap",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@ import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import java.lang.reflect.Method

object BaseIconFactory {
private lateinit var clazz: Class<*>
private var clazz: Class<*>? = null

private var getNormalizer: Method? = null

fun getClazz(lpp: LoadPackageParam): Class<*> {
if (!::clazz.isInitialized)
clazz = ReflectHelper.findClassThrow("com.android.launcher3.icons.BaseIconFactory", lpp)
return clazz
}
fun getClazz(lpp: LoadPackageParam) =
clazz
?: ReflectHelper.findClass("com.android.launcher3.icons.BaseIconFactory", lpp).also {
clazz = it
}

fun getNormalizer(lpp: LoadPackageParam, factory: Any?): Any? {
if (getNormalizer == null)
getNormalizer = getClazz(lpp).let { ReflectHelper.findMethodFirstMatch(it, "getNormalizer") }
getNormalizer = getClazz(lpp)?.let { ReflectHelper.findMethodFirstMatch(it, "getNormalizer") }
return getNormalizer?.call(factory)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ object ReflectHelper {
fun findClass(className: String, lpp: LoadPackageParam? = null) =
runCatching { XposedHelpers.findClass(className, lpp?.classLoader) }.getOrNull { log(it) }

fun findClassThrow(className: String, lpp: LoadPackageParam? = null): Class<*> {
return XposedHelpers.findClass(className, lpp?.classLoader)
}

private fun Method.match(methodName: String, parameterTypes: Array<out Class<*>?>) =
this.name == methodName &&
this.parameterTypes.size >= parameterTypes.size &&
Expand Down

0 comments on commit 579c880

Please sign in to comment.