• 【转】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

    文章乃参考、转载其他博客所得,仅供自己学习作笔记使用!!!
  • 相关阅读:
    网络编程--ASI--(ASIHTTPRequest)介绍
    iOS-多线程--介绍NSOperration
    单例模式-用GCD实现
    ios文件读取(二)
    归档、反归档
    ios文件读取
    CUICatalog: Invalid asset name supplied:
    iOS的触摸事件
    UIScrollView的属性
    exc_bad_access(code=1, address=0x789870)野指针错误
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/14647397.html
Copyright © 2020-2023  润新知