阅读更多

应用资源的调用

为了提高应用在运行时的访问资源信息的效率,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偷偷进了PC村,Google是无心插柳还是扮猪吃虎?
  3. android学习
  4. 移动应用界面设计的尺寸设置及规范
  5. android框架
  6. Android开发人员应避免的10个误区
  7. 用于 Android(安卓)智能手机的 Android(安卓)Network Toolkit 应
  8. Android应用程序线程消息循环模型分析(1)
  9. android 跨应用程序广播发送接受

随机推荐

  1. Android 搜索框:SearchView 的属性和用法
  2. Android 屏幕旋转 处理 AsyncTask 和 Pro
  3. 解决:Android Android requires compiler
  4. 【转】Android兼容性测试CTS --环境搭建
  5. android设备uuid、udid
  6. Android上运行本地c
  7. Android Studio 模板(Template)定制
  8. android dialog——自定义对话框之一
  9. android View的getHeight和getMeasuredHe
  10. android 机器人:Animations