【原创】android public.xml 用法
来源:互联网 发布:欧洲五大列强知乎 编辑:程序博客网 时间:2024/06/17 08:53
如果你用 apktoool 反编译过 apk 就知道,反编译后res/values 下有一个 public.xml 文件,内容如图
![](http://img.blog.csdn.net/20140829005342982?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvejEwNzQ5NzE0MzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20140829005356990?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvejEwNzQ5NzE0MzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20140829005435975?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvejEwNzQ5NzE0MzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这个东西有什么用呢?
先从如何使用资源 ID 开始,在开发中我们通常使用 Resources.getXXX(resid) 来获取某个资源,传入的是 ID 这个 ID 定义在 R.XXX 类里面,R 类是编译器自动生成的,打开看知道
其实资源 ID 就是一个常量,对我们引用了某个ID,编译成 APK 之后,这个ID的值就固定了,
而 apktool 在重新打包 apk 的时候会对资源重新编译 (编译成 resources.arsc 你有zip打开 apk 看得到),编译资源的时候自然需要对所有资源ID进行重新编排(这是一个随机过程)试想假设原包里面 drawable/a.png id=0x7f020003 那么重新编排资源ID后就可能是 0x7f020004 又假设原包 0x7f020004 对应图片 b.png,那你重新打包后的 apk 当显示 a.png 的时候就会替换成 b.png,这还好不会出错,倘若生成的一个 id 原包不存在,那会导致程序崩溃的!
所以 public.xml 的作用就是把对象资源 ID 写死!
格式是
<public type="资源类型" name="资源名" id="0x7f080000" />
如果你细心观察就会发现,id 都是 0x7f 开头紧接着后面两位 08 是独立于每种资源类型的,再后面的编码就是从 1 开始咯
public.xml 特殊用途:
<public-padding name="my_" end="0x7f02000f" start="0x7f020001" type="drawable" />
public-padding 顾名思义,留间距,为什么要留间距,这就涉及到一个深奥的问题了,可以应用在 主题、apk动态更新 领域,这个我们以后讨论
加了这个的效果就是在 R 里多了 my_1 ~ my_15 的资源ID,这些个资源ID空的,你去引用会找不到资源,如图:
貌似还有几种用法,以前研究 apk 动态加载的时候忘了写日记记录,现在忘得差不多了,
所以,知识一定要积累,好记心不如烂笔头!
0 0
- 【原创】android public.xml 用法
- android public.xml 用法
- public.xml 用法的请教
- Android Public.xml文件作用
- Android Public.xml文件作用
- Android 中public.xml在SDK开发和动态加载的用法
- android dimens.xml用法
- Android Xml高级用法
- Android Studio 设置自定义资源ID public.xml
- public.xml的作用!
- android colors.xml的用法
- 【原创】android 布局xml中@+id 与@id的区别
- Android开发者指南-Manifest.xml-<supports-screens>[原创译文]
- 【原创】Android多个xml文件的使用
- What is the use of the res/values/public.xml file on Android?
- Android反编译apk得到的res中values目录下的public.xml文件的作用
- android gradle plugin 1.3.0 以上使用 public.xml 固定 id
- public protected private 用法小结
- ZOJ--3631--Watashi's BG【枚举】
- C++设计模式之工厂方法模式
- Ubuntu Kylin 安装过程中时区选择阶段黑屏问题
- Java 欧拉工程 第二十五篇【1000位斐波那契数】
- 应聘时最漂亮的回答,看后不分享都难啊
- 【原创】android public.xml 用法
- 如何在注册表禁用或打开windows系统右键菜单
- 对象流OOS和OIS
- Linux下几个文件擦做命令代码实现
- CSS3响应式控制精灵图的大小和位置
- MySQL服务无法启动的问题
- CentOS 编译安装搭建LNMP
- C++设计模式之抽象工厂模式
- db2表页大小转换步骤