首页
学习
活动
专区
工具
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独立运行。宿主启动插件的类,难免要涉及插件类中的资源问题。...那么,如何加载插件资源,就成为一个待解决的问题。...因此,我们的核心思路就是:获取插件的Resources和插件的resId。 实践 那么我们该如何获得插件的Resources呢?...drawable = resources.getDrawable(resId); mIvTest.setImageDrawable(drawable); 至此,就是插件化加载的资源的基本思路和原理...总结 明确思路,通过获取插件的Resources和resId来加载资源 通过仿APK解析过程,获取插件Resources 通过对插件的R.java的反射,获取resId 完成加载

    1.4K40

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

    Application 中设置插件资源 三、插件 Activity 组件中设置插件资源 四、博客资源 前言 在 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程...Activity 类替换占位的组件 ) 博客中 , 基本已经完成了插件 Activity 的实例化操作 , 已经可以启动插件 Activity , 只剩下资源文件没有获取 ; 本博客开始加载插件包中的资源文件...; 一、加载插件包资源文件 ---- 在插件包中的 Activity , 如果加载 R.layout.activity_main , 拿到的是 “宿主” 应用中的资源 , 无法拿到插件包中的资源 ;...(name, args); mMethod.setAccessible(true); return this; } /** * 根据方法名 和...组件中设置插件资源 ---- 在 Activity 中重写 public Resources getResources() 方法 , 核心是返回插件资源 ; @Override public

    41010

    解决插件化资源id冲突

    EntryId(一般是默认0x7f+两位+四位) 3.aapt命令在打包过程中都做了什么   1)把assets和res目录下的所有资源、AndroidManifest.xml,都保存在一个后缀名ap_...的文件中,就是一个压缩包   2)为res目录的每个资源,生成一个资源id常量,把id值和资源名称的对应关系,存放在resources.arsc文件中   3)把这些资源id常量,都定义在R.java文件中...apk打包后,修改R,java和resources.arsc中存储的资源id值,比如默认的0x7f前缀,修改为0x71,这样就保证了宿主和插件的资源id永远不会冲突 方案1.3:在public.xml中指定...,插件如果想使用宿主的资源,只要把宿主打包成jar,然后复制到插件项目的某个位置,使用gradle脚本provided就可以了,这样打出的插件不会包含宿主的代码 方案2:如果不事先合并资源,那就为每个插件创建一个...详细的代码见资源的插件化 方案1的缺点是资源id的前缀是有限的,就256个值,当一个app中有多于256个插件时,就要考虑方案2了 --摘自《android插件化开发指南》

    3K21

    学习笔记:插件化资源解决

    一,资源获取 getResource传入R.资源名称,通过资源名称可以找到对应的资源ID(通过R.java文件保证),之后AssetManager通过资源ID找到对应的资源文件名称(通过arsc文件保证...) 二,资源冲突: 插件和宿主使用aapt打包资源,aapt生成R和arsc文件是根据前缀信息(在aapt逻辑中apk默认为0X71)和资源顺序来进行命名的 因此会出现同一个资源ID在插件和宿主中都有对应的资源文件系统会出错...我在aapt创建R,arsc文件时的源头上进行拦截,aapt使用我自定义的前缀这样出来的R文件和arsc文件里面的前缀就会和宿主不一样。...【默认0X71(系统会根据不同的包用不同的前缀信息),使用自定义生成的R和arsc使用我自定义的前缀】 第二种 我在aapt打包后进行修改替换R和arsc文件。...将插件资源前缀改为0X71,72等 可自定义的数字防止资源冲突:同一个资源ID对应多个资源文件 四,优化资源复用问题: 很多情况下插件和宿主中的默认文件夹里面放的都是相同的资源比如android自动生成的那些图片等

    35220

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

    】插件化原理 ( 类加载器 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 )...资源 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 ) ---- 文章目录 Android 插件化系列文章目录 前言 一、" 宿主 " 模块启动 " 插件 "...模块过程 1、" 插件 " 模块类名获取 2、" 插件 " 模块类加载器获取 二、" 宿主 " 模块加载 " 插件 " 模块中的资源文件 三、博客资源 ---- 前言 上一篇博客 【Android..." 模块中的资源文件 在 " 宿主 " 模块中 , 使用 Resources 是无法获取到 " 插件 " 模块中的资源文件的 , 在使用 " 插件 " 模块中的资源文件之前 , 必须先加载其中的资源文件...{ // invoke 执行反射方法异常 e.printStackTrace(); } } /** * 获取插件包中的资源

    97210

    Nagios插件开发之监控程序占用资源

    决定编写nagios插件,用来监控程序占用的资源,包括cpu,内存等。 1、shell脚本需求分析:   能设置cpu,mem的阈值,资源占用超过阈值就报警。  ...component_resource.sh [--cpu] [--mem] Example:   component_resource.sh --cpu 50 --mem 50 2、若没超出阈值,输出资源占用情况...0 3、若超出阈值,输出资源占用情况,退出值为2 [root@center230 libexec]# shcomponent_resource.sh  --cpu 5 --mem 5 VueSERVER_cpu_use...2 4、若进程不存在,输出down掉的进程,以及正常使用中的进程资源情况,退出值为2 [root@yckj scripts]# sh component_resource.sh--cpu 50 --mem...VUEConnector Myswitch Slirpvde) pragrom_list=(VueDaemon VueCenter VueAgentVueCache VueSERVER) ####获取cpu阈值和mem

    36510

    Sketch 插件开发官方文档合集插件基础您的第一个插件开发环境调试ActionAPI发布插件插件捆绑插件,脚本和命令插件位置更多关于CocoaScriptSketchTool参考资源

    插件:一组脚本,命令和其他资源组合在一起作为一个独立单元 Plugin Bundle:磁盘上的文件夹,其中包含组成插件的文件 操作:用户所做的事情(选择菜单或更改文档)触发命令 命令:一个插件可以定义多个命令...一个包是一个具有标准化层次结构的目录,该目录包含可执行代码和该代码使用的资源。...Sketch插件不允许本机编译代码,但我们确实使用标准包布局(例如,资源位于包中的资源/文件夹中),特定于插件的文件位于Sketch /目录中。...表现 清单是一个JSON文件,其中包含有关插件,其命令和资源的元数据。 它描述了诸如全名,描述和作者姓名等内容。...SketchTool可以导出预定义的资源(即:在Sketch UI中可导出的图层和画板)或任何你想要的图层。

    6.4K90

    Groovy on Grails 交流活动

    接下去,当然,如果你愿意的话,你可以生成个性化的控制器和视图代码。 “Grails 和其它框架一样,最终总有局限性。”...Grails 有一个精巧的插件架构,用户标签库可以轻而易举地由 JSP 标签库导入并改变而来。 “我没法找到 Grails 程序员。”...Grails 1.0 版本拥有难以置信的极其丰富的核心特色,并且有一组正在日益壮大的开源插件来不断增强功能。...根据 Nabble 的这个统计,Grails 成为了 Java web 框架中最醒目的社区,并做出了巨大贡献: 更有进一步的 Grails 插件和生态系统社区的增长迹象表明,如今,Grails 插件库中已有了超过...47 组用户贡献的插件,其中包含二百万行代码: 博客统计也说明了用户迅速的增长,一年前 Grails 的博客统计还几乎为零(搞不好仅有的那几篇就是我写的,呵呵),不像现在,技术专家们会经常讨论 Grails

    1.7K20

    Android插件化学习之路(四)之使用插件中的R资源

    ,然而插件的R.java并没有注册到当前的上下文环境,所以插件的res资源也就无法通过id使用了。...如何使用插件中的R资源 一种解决方式是插件里需要用到的新资源都通过纯Java代码的方式创建(包括XML布局、动画、点九图等),蛋疼但有效。...于是,我们可以通过以下代码加载插件APK里res资源 try { AssetManager assetManager = AssetManager.class.newInstance...,整个项目共有,而新加进来的res资源是保存在新创建的Resources实例的,也就是说ProxyActivity其实有两套res资源,并不是把新的res资源和原有的res资源合并了(所以不怕R.id重复...这样,加载插件的R资源就解决了。

    64060

    简洁、高效、灵活:探索 Spring 同级别的编程框架

    官网:https://grails.org/ GitHub:https://github.com/grails Grails是一个全栈框架,试图通过核心技术及其相关插件解决尽可能多的Web开发难题。...具有数百个插件的插件系统。 可以使用灵活的配置创建 AngularJS、React等程序 。 基于 Gradle 交互式命令行构建系统和环境。 嵌入式Tomcat,可配置动态加载。...和Grails构建从单体到微服务的实际应用程序中汲取灵感。...Play 建立在 Akka,Play 提供可预测的和最小的资源消耗(CPU,内存,线程)的高度可扩展的应用程序。...Dropwizard框架可以通过自定义插件和组件来扩展和定制,例如添加新的API端点或将新的服务集成到应用程序中。 轻量级:与其他Java Web框架相比,Dropwizard框架非常轻量级。

    85050

    Grails——赋能敏捷开发的利器

    虽然我是做Web应用出身的,但当年的我已经“退出江湖”多年,对于很多的新的技术和框架已经脱节,而通过Grails,我可以在不需要懂这些技术和框架的情况下就运用到它们。...通过Grails的开发过程是,首先抽象你的需求需要哪些Domain Object以及它们会有哪些属性,然后Grails便会帮你围绕Domain Object创建相应的数据库表结构和CRUD脚手架,包含Controller...,使测试、上线更轻松; 支持分环境参数配置,轻松生成war包部署到不同环境,支持主流Java应用服务器和数据库; 强大的社区和丰富的插件,有些比较复杂的功能,比如用户验证和授权,通过它的Security...当然,任何事情都有两面,要发挥Grails的优势,你最好遵循Grails的方式来进行开发,但是随着业务越来越复杂,它也会不可避免地出现敏捷性和性能下降的情况,甚至到某个发展阶段要进行重构或重写,这是所有应用的宿命...近年流行的Spring Boot和Grails的比较是,Spring Boot只包含Controller和API,没有UI,适合做微服务应用,Grails适合包含前端到后端的全栈单体应用。

    1.9K50

    DevOps自动化组件-RUNDECK介绍、开发、部署、使用

    runDeck的产品属性和jenkis类似。...rundeck工作流可以执行在Windows和UNIX平台,使用节点插件可以将RunDeck扩展到新的平台(包括网络设备)。 4.可扩展 rundeck通过插件机制拓展功能。.../rundeck.git  第二步:用IDEA打开项目,安装Lombok插件,使用gradle构建 RunDeck工程主要有核心模块,插件模块,启动器模块,app模块,我们二次开发主要关注插件模块,和app...存储项目节点资源模型缓存信息,等 tools:存放项目依赖的jar包,相关指令集 server:存储RunDeck配置信息(用户体系,数据库连接)。...=smtp.sina.com.cn   grails.mail.port=25   grails.mail.username=xxx grails.mail.password=xxx RunDeck的使用

    9K90

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

    】插件化原理 ( 类加载器 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 )...资源 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 运行应用 | 代码整理 ) 【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理...插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 ) 【Android 插件化】Hook 插件化框架 ( 插件包资源加载 ) 【Android 插件化】Hook 插件化框架 ( 从源码角度分析加载资源流程...插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★ ---- 文章目录 Android 插件化系列文章目录 前言 一、...在 init 方法中 , 进行插件的总体初始化操作 , 包括 加载 APK 文件 , 加载 APK 中的资源文件 , Activity 替换 , 加载插件 Activity 资源 ; loadApk

    1.4K31

    面向开发者的Cloud Foundry

    其中的一个例子就是java-buildpack,它将根据应用程序的性质,提供Java、Tomcat、Grails、Groovy、Play等不同的依赖项。...Spring工具套件(STS)是一个基于eclipse的IDE,用于Spring程序开发,还有一种可以协助部署和管理应用程序的Cloud Foundry插件,它可以在IDE中创建和管理用户组org和应用空间...此命令将安装PCFDev插件到CF CLI中 4)在当前文件夹中打开一个新的终端并运行如下命令:cf dev start 5)这里将提示你输入Pivotal的账户凭证,然后下载VM、依赖项,然后启动所有必须的服务...Path-To-Manifest-File] 描述文件Mainifest的示例内容: applications: - name: pcf-demo-app buildpack: https://github.com/cloudfoundry...这条命令将显示应用空间内指定服务的详情 你可以更改描述文件mainifest的内容如下: applications: - name: pcf-demo-app buildpack: https://github.com/cloudfoundry

    2.6K50
    领券