zoukankan      html  css  js  c++  java
  • 【转】android build apk过程详解

    前言
    平时开发,编译apk由IDE完成,突然被问到,具体项目被编译成apk的过程是什么? 这个很尴尬, 下面做个介绍,简单了解一下

    apk文件包含

     

    apk :由dex、资源文件、so,签名文件等组成;
    dex : 包括R.class 、class、jar文件组成;
    jar : 不能直接运行,编译过程会将jar转换成dalvik所能识别的字节码文件;

    apk生成 流程


    步骤详解
    步骤中提到的工具如下表:

    名称 功能介绍 在操作系统中的路径

    工具名称 介绍 路径


    第一步
    打包资源文件,生成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工具

    希望对大家会有所帮助!!!
    引用
    apk 编译 http://www.aichengxu.com/android/10919778.htm
    apk 打包过程详解 http://www.cnblogs.com/sjm19910902/p/6416022.html


    from:https://blog.csdn.net/o279642707/article/details/78189938

    文章乃参考、转载其他博客所得,仅供自己学习作笔记使用!!!
  • 相关阅读:
    让Div居中的方法
    创建对象的几种方式
    [Gport]2014移动互联网趋势——100名CEO的一句话解读
    专访腾讯云陈磊:微信云助力企业转型把握O2O时代价值
    Head First Python 学习笔记(第二章:分享你的代码)
    Head First Python 学习笔记(第一章:使用IDLE来帮助学习Python)
    《写给大家看的设计书》学习笔记
    用TreeView以递归显示选择磁盘上文件夹中全部文件夹和文件
    WebBrowser实现:自动填充网页上的用户名和密码并点击登录按钮
    C#调用免费天气预报WebService
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/14647397.html
Copyright © 2011-2022 走看看