[Android] Android工程以jar包形式向第三方应用提供服务
参考: http://www.cnblogs.com/0616--ataozhijia/p/4094952.html
以API 19为例:
系统默认提供的 android.jar整体大小为: 21.8 MB
手动删除资源文件后, android.jar大小为: 2.6 MB
从中可以确定: jar包中是可以放入资源文件的
那么 jar包中的资源是如何被调用的??
以纯java方式: 见参考
以Android方式: 参考:http://blog.csdn.net/liguangzhenghi/article/details/8858544
1、jar被包含进其他项目后,最终生成的apk文件中包含jar中的资源(目录结构也是一样的),这个可以通过zip打开jar和apk查看。
2、jar中的资源应该也是被jvm管理起来的,但是由于其实际id与原始jar项目中产生的id不一致,导致使用原始jar项目中的资源id不能访问到实际资源。只能通过getClass().getClassLoader().getResourceAsStream()的方式进行访问。
对于使用jar方式进行组件开发,有以下需要注意:
1. jar包中一般只包含代码不包含资源。
2. 如果要在jar中包含资源,则资源文件不应该放在默认的res目录下(因为导入其他项目后可能出现重名冲突),应该在package目录下创建专用的资源目录,如此通过pakcage的不重名来确保导入后资源不冲突。同时,jar中代码不能直接使用R类中资源id进行访问,应该通过getClass().getClassLoader().getResourceAsStream()进行加载。
3. 字付串资源可以定义成常量的方式来使用。
最新文章
- 输入两个正整数m和n,求其最大公约数和最小公倍数
- KlayGE 4.4中渲染的改进(三):高质量无限地形
- Encapsulation and Requiring Files
- SO修改
- LUN 和 LVM 知识
- visualSVN server库迁移(转)
- 2016.08.13/2/index/_d_Lucene54_0.dvm: Too many open files
- Citrix 服务器虚拟化之十 Xenserver高可用性HA
- Druid 详细介绍
- MySQL架构篇(一)
- Centos中hive/hbase/hadoop/mysql实际操作及问题总结
- Firefox配置文件夹详解
- docker部署postgresql时,data目录不生效的问题探究
- Docker 镜像之存储管理
- 1,JavaScript前世今生
- switch(值){ 开始case 值: 闭合break; }
- 数据持久化系列之Mysql
- consul服务注册与发现
- Multiple “order by” in LINQ(转载)
- js弹窗 js弹出DIV,并使整个页面背景变暗
热门文章
- 【剑指offer】面试题 11. 旋转数组的最小数字
- Aras Innovator 11 sp2 IE客户端设置
- html不识别<;br/>;,后台返回<;br/>;,前端不换行解决办法
- mysql索引之七:组合索引中选择合适的索引列顺序
- UFO长啥样?--Python数据分析来告诉你
- 【Java NIO】一文了解NIO
- 【最大权闭合子图】BZOJ1497[NOI2006]-最大获利
- “过时”的SpringMVC我们到底在用什么?深入分析DispatchServlet源码
- svn安装和配置
- 从connect到express01-connect