XposedNoRebootModuleSample 不需要频繁重启调试的Xposed 模块源码例子
生活随笔
收集整理的這篇文章主要介紹了
XposedNoRebootModuleSample 不需要频繁重启调试的Xposed 模块源码例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
XposedNoRebootModuleSample(不需要頻繁重啟調試的Xposed 模塊源碼例子) Xposed Module Sample No Need To Reboot When Debug
github:https://github.com/asiontang/XposedNoRebootModuleSample @Overridepublic void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable{if (!"cn.asiontang.location.demo".equals(loadPackageParam.packageName))return;try{//在發布時,直接調用即可。if (!BuildConfig.DEBUG){handleLoadPackage4release(loadPackageParam);return;}//在調試模式為了不頻繁重啟,使用反射的方式調用自身的指定函數。/*【方法2】*/final String packageName = MainXposedHook.class.getPackage().getName();String filePath = String.format("/data/app/%s-%s.apk", packageName, 1);if (!new File(filePath).exists()){filePath = String.format("/data/app/%s-%s.apk", packageName, 2);if (!new File(filePath).exists()){XposedBridge.log("Error:在/data/app找不到APK文件" + packageName);return;}}final PathClassLoader pathClassLoader = new PathClassLoader(filePath, ClassLoader.getSystemClassLoader());final Class<?> aClass = Class.forName(packageName + "." + MainXposedHook.class.getSimpleName(), true, pathClassLoader);final Method aClassMethod = aClass.getMethod("handleLoadPackage4release", XC_LoadPackage.LoadPackageParam.class);aClassMethod.invoke(aClass.newInstance(), loadPackageParam);/*【方法1】:無法達到效果*///final Class<MainActivity> pathClassLoader = MainActivity.class;//final Class<?> aClass = Class.forName(pathClassLoader.getPackage().getName() + "." + MainXposedHook.class.getSimpleName(), true, pathClassLoader.getClassLoader());//final Method aClassMethod = aClass.getMethod("handleLoadPackage4release", XC_LoadPackage.LoadPackageParam.class);//aClassMethod.invoke(aClass.newInstance(), loadPackageParam); }catch (final Exception e){XposedBridge.log(e);}}public void handleLoadPackage4release(final XC_LoadPackage.LoadPackageParam loadPackageParam){XposedBridge.log("------------5");}
github:https://github.com/asiontang/XposedNoRebootModuleSample @Overridepublic void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable{if (!"cn.asiontang.location.demo".equals(loadPackageParam.packageName))return;try{//在發布時,直接調用即可。if (!BuildConfig.DEBUG){handleLoadPackage4release(loadPackageParam);return;}//在調試模式為了不頻繁重啟,使用反射的方式調用自身的指定函數。/*【方法2】*/final String packageName = MainXposedHook.class.getPackage().getName();String filePath = String.format("/data/app/%s-%s.apk", packageName, 1);if (!new File(filePath).exists()){filePath = String.format("/data/app/%s-%s.apk", packageName, 2);if (!new File(filePath).exists()){XposedBridge.log("Error:在/data/app找不到APK文件" + packageName);return;}}final PathClassLoader pathClassLoader = new PathClassLoader(filePath, ClassLoader.getSystemClassLoader());final Class<?> aClass = Class.forName(packageName + "." + MainXposedHook.class.getSimpleName(), true, pathClassLoader);final Method aClassMethod = aClass.getMethod("handleLoadPackage4release", XC_LoadPackage.LoadPackageParam.class);aClassMethod.invoke(aClass.newInstance(), loadPackageParam);/*【方法1】:無法達到效果*///final Class<MainActivity> pathClassLoader = MainActivity.class;//final Class<?> aClass = Class.forName(pathClassLoader.getPackage().getName() + "." + MainXposedHook.class.getSimpleName(), true, pathClassLoader.getClassLoader());//final Method aClassMethod = aClass.getMethod("handleLoadPackage4release", XC_LoadPackage.LoadPackageParam.class);//aClassMethod.invoke(aClass.newInstance(), loadPackageParam); }catch (final Exception e){XposedBridge.log(e);}}public void handleLoadPackage4release(final XC_LoadPackage.LoadPackageParam loadPackageParam){XposedBridge.log("------------5");}
?
轉載于:https://www.cnblogs.com/AsionTang/p/5478761.html
總結
以上是生活随笔為你收集整理的XposedNoRebootModuleSample 不需要频繁重启调试的Xposed 模块源码例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置https域名
- 下一篇: nodejs redis数据类型命令汇总