xposed精简布局替换篇
这是最后一篇,比第二篇简单
顾名思义就是把模块里面的资源文件替换到目标app加载
局限性:只能替换src的资源,不能替换软件图标,resources.arsc里有该资源
这里就不发图文教程了,代码里有注释,挺简单的
- package com.mycompany.appxdm;
- import android.content.res.XModuleResources;
- import de.robv.android.loadPackageParamosed.IloadPackageParamosedHookInitPackageResources;
- import de.robv.android.loadPackageParamosed.IloadPackageParamosedHookZygoteInit;
- import de.robv.android.loadPackageParamosed.callbacks.XC_InitPackageResources.InitPackageResourcesParam;
- public class 替换布局 implements IloadPackageParamosedHookZygoteInit, IloadPackageParamosedHookInitPackageResources {
- private static String MODULE_PATH = null;
- @Override
- public void initZygote(StartupParam startupParam) throws Throwable {
- MODULE_PATH = startupParam.modulePath;
- }
- //接口IloadPackageParamosedHookZygoteInit和IloadPackageParamosedHookInitPackageResources
- @Override
- public void handleInitPackageResources(final InitPackageResourcesParam loadPackageParam) throws Throwable {
- //替换器
- final XModuleResources modRes = XModuleResources.createInstance(MODULE_PATH, loadPackageParam.res);
- //当前目标app包名
- final String t=loadPackageParam.packageName;
- //判断包名
- if(t.equals(“com.android.module”)){
- //第一个参数是包名在上面调用t,第二个是res里面的文件夹名称例:布局layout-loadPackageParamll,只需要填layout就行
- //R.drawable.ic_launcher是模块项目res/drawable/ic_launcher可以是布局文件也可以是图片
- //只要resources.arsc文件里有定义该文件就可以改src里的资源
- loadPackageParam.res.setReplacement(t,”drawable”,”layout”,modRes.fwd(R.drawable.new_main));
- //可以吧修改好的布局文件放在项目的drawable文件夹里把后缀.xml去掉,例文件名abc,调用它R.drawable.abc
- }
- }
- }
复制代码
发表评论