阅读更多

应用资源的调用

为了提高应用在运行时的访问资源信息的效率,Android会在应用的开发和编译过程中,对应用资源预处理,使资源占用空间更小、解析更快,调用更方便。

    Android对应用资源的处理分3个阶段:预编译(用appt)、编译(用Javac)、打包(用apkBuilder)。

预编译

将中间语言编写的内容转换成逻辑代码:预编译。

 

Android中用appt工具。对所有的应用资源目录结构和资源文件进行解析,编译生成R.javaAPP._ap文件。R.java放于gen目录。路径名为包名+RR.java类结构简单,由一组静态内嵌类,及其中的静态证书变量组成。

R.java类相当于一张索引表,每个整形变量对应着存储在APP._ap文件中的一个资源项。

 

APP._ap文件是根据资源内容编译成的二进制文件,收录了应用的所有的资源信息。

编译

R.java类利用SDK提供的dx工具,将所有的.class文件汇集成为一个Android定义的dex格式。

打包

通过apkbuilder生成APK文件。APP._ap会进一步压缩,生成更小的resources.arsc文件。

 

应用资源的管理

Android按层次结构来管理应用资源的内容。每个应用资源会统一放在一张资源表Resource Table,该表内包含多个资源包,Resource Package Group 每个资源包中存放着不同资源类型Resource type 的数据, 每种资源类型的数据会按照给定的资源配置,存放资源项。

 

R类每个变量都是32位整型数,高8位表示资源包信息,次高8位表示资源类型;最低的16位表示资源项的索引信息;因此每个应用最多包含256个资源包。每个资源包最多有256种资源类型,资源类型最多有65536个资源项。

    通过R类定位资源时,先根据高8位来定位资源包,再用次高8位定位资源类别,最后用16位涨到何时的资源项。(C++实现)

 

应用资源的使用

通过R类和Resources类,可以使用所有的应用资源。如R.String.XX

 

Resources.getColor Resources.getLayout

更多相关文章

  1. android 内部文件读取
  2. Android 基于dpi的资源加载
  3. Android WebView 远程网页 加载本地资源js/html/css
  4. 将Android工程做成jar包和资源文件
  5. Android 资源,国际化,自适应
  6. 初学Android,使用自定义的XML资源(十八)
  7. Android应用程序资源——Animation动画资源
  8. Android 文件保存getFilesDir()丶getCacheDir()、getExternalFil
  9. android 资源文件学习

随机推荐

  1. 北京高新技术企业认定最新条件及相关要求
  2. 淘宝爬虫实战(附代码和数据集)——今天你防
  3. 测试 python的魔术方法大全!记得收藏!!!
  4. 数据分析实战——EXCEL实现复购率计算
  5. Mac下通过VMware Fusion安装centos虚拟机
  6. for循环
  7. SweynTooth漏洞影响上百蓝牙产品
  8. 等待事件之enq: HW - contention
  9. 如何让普通用户可以对DBA_SOURCE视图进行
  10. DBMS_METADATA包获得对象DDL语句