阅读更多

应用资源的调用

为了提高应用在运行时的访问资源信息的效率,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新手入门FAQ
  2. Activity生命周期讲解
  3. android培训文档提纲(一)
  4. 10个常见的 Android(安卓)新手误区
  5. 应用程序组件之APP基础(转官方)
  6. Android(安卓)应用程序快速启动的秘诀
  7. 10个常见的 Android(安卓)新手误区
  8. 国内几大Android应用市场试用小记――开发者篇
  9. Android大赛首轮获奖作品解析。。。

随机推荐

  1. 一起学android之底部菜单TabHost的实现(9)
  2. Android emulator模拟器启动错误
  3. Android LayoutAnimation
  4. [Android]使用原生Menu的一些小Tip
  5. Android项目中如果json字符串中key-value
  6. android 9.0通知栏适配,可用通知栏,悬浮通
  7. android:configChanges="orientation|key
  8. 关于Android studio的模拟器无法打开问题
  9. Android控件及API说明(二)
  10. Android的权限分类