• 3. Android程序生成步骤


     
    主要流程如下图所示:

     
     

     
    所需要的工具列表
    名称 功能介绍 在操作系统中的路径
    aapt Android资源打包工具 ${ANDROID_SDK_HOME}/platform-tools/appt
    aidl Android接口描述语言转化为.java文件的工具 ${ANDROID_SDK_HOME}/platform-tools/aidl
    javac Java 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以下。当然,还可以做很多事情
     
  • 相关阅读:
    线性时间选择
    ios理解 Pro Mutlithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks
    ef
    c# 采集 获取网页数据内容 一会超时的问题
    entity4.1
    逐渐约束
    entity4.1
    ObjectContext.Refresh
    使用内存表
    MVCdropdownlist
  • 原文地址:https://www.cnblogs.com/bingghost/p/5769283.html
Copyright © 2020-2023  润新知