Android App 打包编译流程(Simple版)

PS:以下为学习总结,not原创。
打包过程的细节,请看老罗博客:
Android应用程序资源的编译和打包过程分析

apk签名的意义

通过对发布的apk进行唯一签名,来防止其他开发者通过相同的package name来混淆替换已经安装的程序。使用相同签名的软件升级可以正常覆盖老版本软件,当系统发现新版本签名和老版本签名不一致时,不会允许新版本安装成功。

apk打包流程

1.打包资源文件(Android Resources),通过aapt生成R.java文件
2.处理aidl文件,通过aidl tool生成.java文件
3.编译工程源代码(Source Code),通过Java Compiler生成.class文件
4.转换所有的class文件,包括第三方库(.class),通过dex生成classes.dex文件;
5.使用apkbuilder打包生成未签名的apk
6.对apk文件进行签名
7.对签名后的apk使用zipalign进行对齐处理

流程图如下:


Android App 打包编译流程(Simple版)_第1张图片
apk打包流程图.jpg

打包过程中使用的工具介绍

  • aapt
    全称:Android Asset Package Tool
    功能:Android资源打包工具
    路径:${ANDROID_SDK_HOME} /build-tools/ANDROID_VERSION/aapt

  • aidl
    全称:Android Interface Definition Language
    功能:Android接口描述语言,将aidl转化为.java文件的工具
    路径:${ANDROID_SDK_HOME}/build-tools/ANDROID_VERSION/aidl

  • javac
    全称:Java Compiler
    功能:Java编译器,将java文件转换为字节码
    路径:${JDK_HOME}/javac或/usr/bin/javac

  • dex
    功能:将.class文件转换为Davik VM能识别的.dex文件
    路径:${ANDROID_SDK_HOME}/build-tools/ANDROID_VERSION/dx

  • apkbuilder
    功能:生成apk包
    路径:${ANDROID_SDK_HOME}/tools/apkbuilder

  • jarsigner
    功能:.jar文件的签名工具
    路径:${JDK_HOME}/jarsigner或/usr/bin/jarsigner

  • zipalign
    功能:字节码对齐工具
    路径:${ANDROID_SDK_HOME}/tools/zipalign

你可能感兴趣的:(Android App 打包编译流程(Simple版))