安卓系统的资源编译.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
安卓系统的资源编译

安卓的资源编译过程 一.APK的结构以及生成 APK是Android?Package的缩写,即Android?application?package文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,扩展名为?.apk。APK文件是用编译器编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,但其扩展名被改为apk。在这里我们为了详细讲述Android应用程序我们将创建一个永恒的话题,?它就是HelloWorld 程序,在这里我们创建的Android的HelloWorld程序的目录结构如下所示: 一个典型的APK文件通常由下列内容组成: ???AndroidManifest.xml???????程序全局配置文件 ???classes.dex????????????????Dalvik字节码 ???resources.arsc?????????????资源索引表,?解压缩resources.ap_就能看到 ???res\??????????????????????该目录存放资源文件(图片,文本,xml布局) ???assets\????????????????????该目录可以存放一些配置文件 ???src\???????????????????????java源码文件 ???libs\?????????????????????存放应用程序所依赖的库 ???gen\?????????????????????编译器根据资源文件生成的java文件 ???bin\??????????????????????由编译器生成的apk文件和各种依赖的资源 ???META-INF\????????????????该目录下存放的是签名信息 首先来看一下使用Java语言编写的Android应用程序从源码到安装包的整个过程,示意图如下,其中包含编译、链接和签名等: (1).?使用aapt工具将资源文件生成R.java文件,?resources.arsc和打包资源文件 (2).?使用aidl工具将.aidl文件编译成.java文件 (3).?使用javac工具将.java文件编译成.class文件 (4).?使用dx脚本将众多.class文件转换成一个.dex文件 (5).?使用apkbuilder脚本将资源文件和.dex文件生成未签名的apk安装文件 (6).?使用jdk中的jarsigner对apk安装文件进行签名 上述工具都保存在android-sdk-linux中的tools/和platform-tools文件夹下面. 范例: src/com.example.helloworldactivity: package?com.example.helloworldactivity; import?android.app.Activity; import?android.os.Bundle; import?android.view.View; import?android.view.View.OnClickListener; import?android.widget.Button; import?android.widget.TextView; public?class?MainActivity?extends?Activity?{ ????private?final?static?String?TAG?=?MainActivity; ????private?TextView?mTextView?=?null; ????@Override ????protected?void?onCreate(Bundle?savedInstanceState)?{ ????????super.onCreate(savedInstanceState); ????????setContentView(R.layout.activity_main); ????????mTextView?=?(TextView)findViewById(R.id.text_view); ????????Button?showButton?=?(Button)findViewById(R.id.button); ????????showButton.setOnClickListener(new?OnClickListener()?{ ????????????public?void?onClick(View?v)?{ ????????????????mTextView.setText(R.string.hello_world); ???????????

文档评论(0)

zilaiye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档