3. Android程序生成步骤

摘要:
这种资源Android系统不会像对res中的文件那样对其进行优化),AndroidManifest.xml文件(包名是从这里读取的,因为生成R.java文件需要包名),Android基本类库(Android.jar文件)[Output]打包的资源(通常,名为resources.ap_的文件可以在Android项目的bin目录中看到)R.Java文件(在gen目录中)。
 
主要流程如下图所示:
3. Android程序生成步骤第1张
 
 
3. Android程序生成步骤第2张
 
所需要的工具列表
名称功能介绍在操作系统中的路径
aaptAndroid资源打包工具${ANDROID_SDK_HOME}/platform-tools/appt
aidlAndroid接口描述语言转化为.java文件的工具${ANDROID_SDK_HOME}/platform-tools/aidl
javacJava Compiler${JDK_HOME}/javac或/usr/bin/javac
dex转化.class文件为Davik VM能识别的.dex文件${ANDROID_SDK_HOME}/platform-tools/dx
apkbuilder生成apk包${ANDROID_SDK_HOME}/tools/opkbuilder
jarsigner.jar文件的签名工具${JDK_HOME}/jarsigner或/usr/bin/jarsigner
zipalign字节码对齐工具${ANDROID_SDK_HOME}/tools/zipalign
 
 
第一步:打包资源文件,生成R.java文件
【输入】Resource文件(就是工程中res中的文件)、
             Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、
             AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件)
【输出】打包好的资源(一般在Android工程的bin目录可以看到一个叫resources.ap_的文件就是它了)、
             R.java文件(在gen目录中,大家应该很熟悉了)
【工具】aapt工具,它的路径在${ANDROID_SDK_HOME}/platform-tools/aapt
           (如果你使用的是Windows系统,按惯例路径应该这样写:%ANDROID_SDK_HOME%platform-toolsaapt.exe,下同)。
 
第二步:处理AIDL文件,生成对应的.java文件(当然,有很多工程没有用到AIDL,那这个过程就可以省了)
【输入】源码文件、aidl文件、framework.aidl文件
【输出】对应的.java文件
【工具】aidl工具
 
第三步:编译Java文件,生成对应的.class文件
【输入】源码文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件)
【输出】.class文件
【工具】javac工具
 
第四步:把.class文件转化成Davik VM支持的.dex文件
【输入】 .class文件(包括Aidl生成.class文件,R生成的.class文件,源文件生成的.class文件),库文件(.jar文件)
【输出】.dex文件
【工具】javac工具
 
第五步:打包生成未签名的.apk文件
【输入】打包后的资源文件、打包后类文件(.dex文件)、libs文件(包括.so文件,当然很多工程都没有这样的文件,如果你不使用C/C++开发的话)
【输出】未签名的.apk文件
【工具】apkbuilder工具
 
第六步:对未签名.apk文件进行签名
【输入】未签名的.apk文件
【输出】签名的.apk文件
【工具】jarsigner
 
第七步:对签名后的.apk文件进行对齐处理(不进行对齐处理是不能发布到Google Market的)
【输入】签名后的.apk文件
【输出】对齐后的.apk文件
【工具】zipalign工具
 
知道了这些细节之后,我们就可以实现很多我们想实现东西了,比如:自动化,我们可以使用某种脚本,像Windows下的批处理,linux下的Bash,Java下的Ant,Python、Perl这样的脚本语言,甚至直接用Java、.net这们的强类型语言也是可以的。如果你真正弄懂了上面的步骤,了解了编译打包过程的本质,你完全可以以你想要的任何方式实现它的自动化,这才是真正的“举一反三,以不变应万变”。再比如,对Android SDK的精简,大家知道,现在Android SDK动辙几百兆,我们完全可以应用上面的知识,只保留必要的工具,把SDK精简到10M以下。当然,还可以做很多事情
 
来自为知笔记(Wiz)

免责声明:文章转载自《3. Android程序生成步骤》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇盲去模糊之模型与算法Navicat使用常见的两个问题及解决方法,提高开发效率下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Overleaf 平台的使用

Overleaf 是一个使用 LaTeX 进行多人协同编辑的平台,可以免费注册和使用,不用下载 LaTeX 软件,是最为著名的 LaTeX 在线协作系统。 科研工作者可以在各大期刊的网站上下载到其 Overleaf 模板,进行论文写作。 国内邮箱是无法注册的,一直会提示无法验证是否是机器人。可以选择"Register using ORCID",先注册一个...

Linux驱动中的异步函数(aio_read和aio_write)

Linux驱动中的异步函数(aio_read和aio_write) 我们可以在signal_handler使用了read和write函数处理设备文件的读写操作。然而这两个函数可以分别用aio_read和aio_write代替。在本节将重新改造signal驱动,使用aio_read和aio_write函数来处理设备文件的读写操作,新的Linux驱动源代码文件...

Linux程序调试查看二进制文件

http://blog.sina.com.cn/s/blog_7a2fc53a0100y54h.html 一,二进制文件的类型       Linux下的二进制文件是ELF格式的,主要有目标文件、静态链接库文件、动态链接库文件、可执行文件和core dump文件。可以使用如下命令查看其类型:       file  文件名。       我们还是以之前...

浅析前端常见文件下载的9种场景:Blob基础知识/组成/Blob URL、a标签下载、showSaveFilePicker API下载(兼容性差)、FileSaver.js库下载、Zip下载(JSZip库)、附件形式下载(设置Content-Disposition)、base64格式下载(需转为blob)、分块传输下载、HTTP范围请求下载、大文件分块并行下载

  一般在我们工作中,主要会涉及到 9 种文件下载的场景,每一种场景背后都使用不同的技术,其中也有很多细节需要我们额外注意。   在浏览器端处理文件的时候,我们经常会用到 Blob 。比如图片本地预览、图片压缩、大文件分块上传及文件下载。在浏览器端文件下载的场景中,比如我们今天要讲到的 a 标签下载、showSaveFilePicker API 下载、Z...

Hive:ORC File Format存储格式详解

一、定义   ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化。 据官方文档介绍,这种文件格式可以提供一种高效的方法来存储Hive数据。它的设计目标是来克服Hive其他格式的缺陷。 运用ORC File可以提高Hive的读、写以及处理数据的性能。和RCFile格式相比,ORC...

HeidiSQL安装和使用教程

HeidiSQL 是一个功能非常强大的 MySQL 客户端软件,我们通过它来操作MySQL数据库,比直接通过命令行工具操作要简单的多。我们使用HidiSQL来连接MySQL数据库,MySQL数据库的安装可以参考下文。  百度搜索HeidiSQL的官网,点击Downloads—>HeidiSQL 9.4 Installer,官网已经有中文汉化版本...