xposed精简布局替换篇

这是最后一篇,比第二篇简单
顾名思义就是把模块里面的资源文件替换到目标app加载
局限性:只能替换src的资源,不能替换软件图标,resources.arsc里有该资源

这里就不发图文教程了,代码里有注释,挺简单的

  1. package com.mycompany.appxdm;
  2. import android.content.res.XModuleResources;
  3. import de.robv.android.loadPackageParamosed.IloadPackageParamosedHookInitPackageResources;
  4. import de.robv.android.loadPackageParamosed.IloadPackageParamosedHookZygoteInit;
  5. import de.robv.android.loadPackageParamosed.callbacks.XC_InitPackageResources.InitPackageResourcesParam;
  6. public class 替换布局 implements IloadPackageParamosedHookZygoteInit, IloadPackageParamosedHookInitPackageResources {
  7.     private static String MODULE_PATH = null;
  8.     @Override
  9.     public void initZygote(StartupParam startupParam) throws Throwable {
  10.         MODULE_PATH = startupParam.modulePath;
  11.       }
  12. //接口IloadPackageParamosedHookZygoteInit和IloadPackageParamosedHookInitPackageResources
  13.     @Override
  14.     public void handleInitPackageResources(final InitPackageResourcesParam loadPackageParam) throws Throwable {
  15.         //替换器
  16.         final XModuleResources modRes = XModuleResources.createInstance(MODULE_PATH, loadPackageParam.res);
  17.         //当前目标app包名
  18.         final String t=loadPackageParam.packageName;
  19.         //判断包名
  20.         if(t.equals(“com.android.module”)){
  21.         //第一个参数是包名在上面调用t,第二个是res里面的文件夹名称例:布局layout-loadPackageParamll,只需要填layout就行
  22.             //R.drawable.ic_launcher是模块项目res/drawable/ic_launcher可以是布局文件也可以是图片
  23.             //只要resources.arsc文件里有定义该文件就可以改src里的资源
  24.             loadPackageParam.res.setReplacement(t,”drawable”,”layout”,modRes.fwd(R.drawable.new_main));
  25.             //可以吧修改好的布局文件放在项目的drawable文件夹里把后缀.xml去掉,例文件名abc,调用它R.drawable.abc
  26.           }
  27.       }
  28.   }

复制代码

标签

发表评论