首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

资源插件

1.android资源文件分为两类: 第一类是res目录下存放可编译资源文件,编译时,系统会自动在R.java中生成资源文件十六进制值 Resources resources = getResources...在这里可以把插件apk资源塞进去 3.apk打包时会生成一个resource.arsc文件,它就是一个Hash表,存放着每个十六进制值和资源对应关系 ***资源插件化解决方案*** public...,构造出插件对象dynamicObject,然后就可以让插件类读取插件资源了 mLoadClassDynamic = classLoader.loadClass...layout.addView(view); } catch (Exception e) { Log.e("DEMO", "msg:" + e.getMessage()); } } 总的来说,资源插件就是通过反射...AssetManager和addAssetPath来加载插件资源 --摘自《android插件化开发指南》

1K20

Android插件——资源加载

前言 资源,是APK包体积过大病因之一。插件技术将模块解耦,通过插件形式加载。插件技术中,每个插件都能够作为单独APK独立运行。宿主启动插件类,难免要涉及插件类中资源问题。...那么,如何加载插件资源,就成为一个待解决问题。...原理 参考APK打包流程:Android插件基础-APK打包流程 Android工程在打包成apk时,会使用aapt将工程中资源名与id在R.java中一一映射起来。...drawable = resources.getDrawable(resId); mIvTest.setImageDrawable(drawable); 至此,就是插件加载资源基本思路和原理...总结 明确思路,通过获取插件Resources和resId来加载资源 通过仿APK解析过程,获取插件Resources 通过对插件R.java反射,获取resId 完成加载

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 插件】Hook 插件框架 ( 加载插件资源 )

    插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...Application 中设置插件资源 三、插件 Activity 组件中设置插件资源 四、博客资源 前言 在 【Android 插件】Hook 插件框架 ( Hook Activity 启动流程...Activity 类替换占位组件 ) 博客中 , 基本已经完成了插件 Activity 实例操作 , 已经可以启动插件 Activity , 只剩下资源文件没有获取 ; 本博客开始加载插件包中资源文件...; 一、加载插件资源文件 ---- 在插件包中 Activity , 如果加载 R.layout.activity_main , 拿到是 “宿主” 应用中资源 , 无法拿到插件包中资源 ;...PluginManager.getInstance(this).init(); Log.i(TAG, "插件 初始完毕"); // 设置插件包中资源文件

    39110

    解决插件资源id冲突

    4.在aapt命令执行完,才会执行javac命令,把包括R.java在内素有java文件,进行编译 ***插件资源id冲突解决方案*** 方案1: 把宿主和插件资源都合并到一起 方案1.1:重写...AAPT命令,在插件apk打包过程中,通过指定资源id前缀,比如0x71,来保证宿主和插件资源id永远不会冲突   1)在AAPT命令行参数中传递apk打包时前缀值   2)把这个值设置给Bundle...方案1.2:在插件apk打包后,修改R,java和resources.arsc中存储资源id值,比如默认0x7f前缀,修改为0x71,这样就保证了宿主和插件资源id永远不会冲突 方案1.3:在public.xml...,插件如果想使用宿主资源,只要把宿主打包成jar,然后复制到插件项目的某个位置,使用gradle脚本provided就可以了,这样打出插件不会包含宿主代码 方案2:如果不事先合并资源,那就为每个插件创建一个...详细代码见资源插件 方案1缺点是资源id前缀是有限,就256个值,当一个app中有多于256个插件时,就要考虑方案2了 --摘自《android插件化开发指南》

    2.9K21

    学习笔记:插件资源解决

    一,资源获取 getResource传入R.资源名称,通过资源名称可以找到对应资源ID(通过R.java文件保证),之后AssetManager通过资源ID找到对应资源文件名称(通过arsc文件保证...) 二,资源冲突: 插件和宿主使用aapt打包资源,aapt生成R和arsc文件是根据前缀信息(在aapt逻辑中apk默认为0X71)和资源顺序来进行命名 因此会出现同一个资源ID在插件和宿主中都有对应资源文件系统会出错...三,方案可行性: 第一种 简单直接,只需修改aapt中使用资源前缀逻辑增加新case就好 缺点是需要进行修改aapt文件且不同SDK版本都需要生成一个aapt文件与之对应。...将插件资源前缀改为0X71,72等 可自定义数字防止资源冲突:同一个资源ID对应多个资源文件 四,优化资源复用问题: 很多情况下插件和宿主中默认文件夹里面放都是相同资源比如android自动生成那些图片等...因此可以进行优化,提炼出一份名单位于这个名单里面的资源可以进行删除,时机是在生成我们修改后R.java文件时我们可以根据这个名单删除对应资源 该方案是基于方案二提出(方案一也可以进行该处理,只不过方案二更顺理成章

    34520

    【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 )

    插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) ---- 文章目录 Android 插件系列文章目录 前言 一、" 宿主 " 模块启动 " 插件 "...插件】“ 插桩式 “ 插件框架 ( 注入上下文使用 ) 中对注入上下文进行了相关代理操作 , 插件包中界面组件 PluginActivity 凡是涉及上下文操作 , 都统一委托给注入上下文来完成..." 模块中资源文件 在 " 宿主 " 模块中 , 使用 Resources 是无法获取到 " 插件 " 模块中资源文件 , 在使用 " 插件 " 模块中资源文件之前 , 必须先加载其中资源文件

    94810

    【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )

    Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件...】插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) ---- 文章目录 Android 插件系列文章目录 一、创建核心依赖库 二、创建类加载器 三、加载资源...四、插件管理器完整代码 五、博客资源 参考 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 中给出实现思路 , 逐步实现 “ 插桩式 “ 插件框架 ; 一、创建核心依赖库

    1.4K10

    【Android 插件】Hook 插件框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件资源加载 ) ★★★

    插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) 【Android 插件】Hook 插件框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理...插件】Hook 插件框架 ( 反射工具类 | 反射常用操作整理 ) 【Android 插件】Hook 插件框架 ( 插件资源加载 ) 【Android 插件】Hook 插件框架 ( 从源码角度分析加载资源流程...前言 本系列博客开发了一个简易 Hook 插件框架 , 仅做学习使用 , 商业还是使用大厂退出成熟插件框架 ; 源码在博客资源中 ; 一、项目结构及运行方法 ---- 1、项目结构 这是项目的结构图...在 init 方法中 , 进行插件总体初始操作 , 包括 加载 APK 文件 , 加载 APK 中资源文件 , Activity 替换 , 加载插件 Activity 资源 ; loadApk

    1.4K30

    【Android 插件】Hook 插件框架 ( 从源码角度分析加载资源流程 | Hook 点选择 | 资源冲突解决方案 )

    插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...插件】Hook 插件框架 ( 反射工具类 | 反射常用操作整理 ) 【Android 插件】Hook 插件框架 ( 插件资源加载 ) 【Android 插件】Hook 插件框架 ( 从源码角度分析加载资源流程...插件】Hook 插件框架 ( 插件资源加载 ) 中 , 实现了从插件包中获取资源 ; 但是这种方法对代码侵入性较大 , 使用这种方式开发 , 插件应用 和 宿主应用 , 都需要对 Resources...拿到是 “宿主” 应用中资源 , 无法拿到插件包中资源 ; 1、ActivityThread 入口 在 【Android 插件】Hook 插件框架 ( Hook Activity 启动流程...---- 资源 ID 在 AAPT 编译资源阶段就确定了 ; 固定类型资源 , 编号是从一定编号段开始 , 如 layout 布局资源 , 第一个布局资源总是 2131361820 ; 不同类型资源

    50310

    【Android 插件插件技术弊端 ( 恶意插件程序解决方向 | 常用插件虚拟引擎 )

    文章目录 一、插件技术弊端 二、恶意插件程序解决方向 三、常用插件虚拟引擎 一、插件技术弊端 ---- 在之前 Android 应用中 , 部分黑客将应用破解 , 植入自己恶意代码 ,..., 使用自动脚本 , 一晚上甚至可以封装数量巨大恶意应用 ; 目前 Android 生态中 , 存在着大量该类使用插件技术进行 ; 据统计 , 应用市场中 , 插件应用中 , 恶意插件应用...是 正常使用插件技术应用 数倍 ; 针对上述问题 , 需要使用一些技术识别 恶意 插件应用 , 并删除此类应用 ; 二、恶意插件程序解决方向 ---- 首先 , 要先识别出使用了插件技术应用...; 插件应用有相同特点 : 使用了 插件 技术 应用 , 都有相同特点 , 当前插件基本都是基于 Hook 插件技术 , 这样可以零侵入代码 , 开发插件 APK 与普通 APK..., 一般不经过用户同意秘密加载插件 ( 感觉有些大厂插件也是偷摸加载 , 插件对用户透明 ) , 分析出恶意插件非法加载插件指纹特征 , 与正常使用插件技术应用进行区分 ; 检测恶意插件应用

    93040

    【Android 插件插件化简介 ( 组件插件 )

    插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) 文章目录 Android 插件系列文章目录 一、组件插件 二、插件示例 三、插件标准引入...一、组件插件 ---- 组件 是将应用分成若干 Module 模块 , 每个模块称为一个组件 ; 组件 项目中 , 分为两种模式 , " 集成模式 " 和 " 组件模式 " ; 在开发过程中..., 动态部署其插件 apk ; 这类软件第一次打开时 , 需要下载该模块 插件 apk , 并安装 , 此时会卡顿以下 , 之后可以流畅访问 ; 三、插件标准引入 ---- 插件 中 , " 宿主

    3.9K20

    Android 插件原理解析——Service插件

    Framework和插件技术有了一定了解;本文将探讨Android四大组件之一——Service组件插件方式。...Service插件思路 现在我们已经明白了Service组件工作原理,可对如何实现Service插件依然是一头雾水。...Service组件插件吗?...但是Service组件不一样,理论情况下,可以启动Service组件是无限——除了硬件以及内存资源,没有什么限制它数目;如果采用Activity插件方式,就算我们在AndroidMafenist.xml...值得一提是,我们对于Service组件插件方案实际上是一种「代理」方式,用这种方式也能实现Activity组件插件,有一些开源插件方案比如 DL 就是这么做

    1.2K20

    Android 插件原理解析——Service插件

    Framework和插件技术有了一定了解;本文将探讨Android四大组件之一——Service组件插件方式。...Service插件思路 现在我们已经明白了Service组件工作原理,可对如何实现Service插件依然是一头雾水。...Service组件插件吗?...但是Service组件不一样,理论情况下,可以启动Service组件是无限——除了硬件以及内存资源,没有什么限制它数目;如果采用Activity插件方式,就算我们在AndroidMafenist.xml...值得一提是,我们对于Service组件插件方案实际上是一种「代理」方式,用这种方式也能实现Activity组件插件,有一些开源插件方案比如 DL 就是这么做

    1.9K20

    【Android 插件】Hook 插件框架 ( hook 插件原理 | 插件包管理 )

    插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) 【Android 插件】Hook 插件框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理...| 插件包管理 ) ---- 文章目录 Android 插件系列文章目录 前言 一、hook 插件原理 二、插件依赖库创建 三、插件包管理 四、插件包管理完整代码示例 五、博客资源 ---- 前言...资源加载 : 主要是解决 Resources 资源冲突问题 ; ( 使用上述 hook 插件 , 可以不用考虑 Activity 生命周期问题 ) 占位 Activity : 插件包中 Activity...解决 Resources 资源冲突问题 * ( 使用上述 hook 插件 , 可以不用考虑 Activity 声明周期问题 ) * * 插件包中 Activity 是通过正规流程 , 由

    4.2K10

    【Android 插件】VAHunt 检测插件引擎具体细节

    文章目录 一、VAHunt 检测插件引擎具体细节 一、VAHunt 检测插件引擎具体细节 ---- 上图执行顺序是 ⑤ -> ④ -> ③ -> ② -> ① ; 存在 2 个 Intent 对象..., StubIntent 是 “桩” 组件对应 Intent 对象 , TargetIntent 是插件包中 Intent 对象 ; StubIntent 对应组件需要欺骗 AMS , 因此该组件一定在...) 设置启动组件是插件组件 ; 一旦发现了上述模式 , 就直接根据执行路径 , 反向找到 ⑤ 中在 AndroidManifest.xml 中注册组件信息 ; 插件组件可以以不同方式存储 , 字符串..., 对象 , 特殊标识 等 ; 可以使用 setData , setDataAndType , putExtra 和 putExtras 等 API 设置插件组件信息 ; 查找 " 桩 " 组件 :..., 则可以直接判定该应用是插件应用 ;

    53730

    资源分享(chrome插件+软件+物品)

    这个是一个Chrome爬虫插件 https://www.webscraper.io/documentation?...chrome-extension://dgjhfomjieaadpoljlnidmbgkdffpack/after_install.html 以及程序员日常会看Github,我们会看很多各种各样代码但是又不会全部下载...,那这个插件就是可以让你在浏览器里面进行方便阅读 https://extensions-manager.com/ chrome插件好用,但是太多了 在针对不同页面应该是又针对打开 这个插件就是这个作用.../ 开源音频编辑工具,是audition好帮手 https://www.microsoftstore.com.cn/refurbished/certified-refurbished-surface-go...我一直想要一个小平板看书用 就蹲上这个GO版本了,睡前看一看哦~ https://www.v1tx.com/ 这个小网站经常推荐一些软件,日常看看 https://www.putty.org/ 串口调试工具

    60760

    Android插件原理之Activity插件

    前言 四大组件插件插件技术核心知识点,而Activity插件更是重中之重,Activity插件主要有三种实现方式,分别是反射实现、接口实现和Hook技术实现。...反射实现会对性能有所影响,主流插件框架没有采用此方式,关于接口实现可以阅读dynamic-load-apk源码,这里不做介绍,目前Hook技术实现是主流,因此本篇文章主要介绍Hook技术实现。...2.1 注册Activity进行占坑 为了更好讲解启动插件Activity原理,这里省略了插件Activity加载逻辑,直接创建一个TargetActivity来代表已经加载进来插件Activity...为了更好讲解启动插件Activity原理,本小节省略了插件Activity加载逻辑,直接创建一个TargetActivity来代表已经加载进来插件Activity。...同时这一节使我们更好理解了Activity启动过程。更多Android插件原理请查看即将要出版《Android进阶之光》续作。

    1.3K50
    领券