apk 是Android Package的简写, 在平时的开发过程中,通过点击 Run app 按钮 或者 在命令行中输入
这样Android Studio就会启动构建流程,最终输出一个我们想要的APK。
直达官网介绍
对于小白来说,上面一张图已经可以解释apk的构建过程了,不过对于Andoid开发者而言还需要了解一些更详细的构建过程。
详细的对应步骤 和 使用工具如下:
资源文件(res文件夹下的文件)通过 AAPT(Android Asset Packaging Tool)打包生成R.java类(资源索引表)、.arsc资源文件 和res文件。
resources.arsc 是一个App的资源索引表,通过R.java 文件 和 resources.arsc 可以定位到资源的内存地址,resources.arsc文件的作用是通过一样的ID,根据不同的配置索引到最佳的资源显示在UI中。
AIDL (Android Interface Definition Language), 是Android接口定义语言,是Android提供的IPC (Inter Process Communication,进程间通信)的一种独特实现。
如果有aidl文件,这个阶段会生成对应的Java接口文件。
R.java文件、工程源码文件、aidl.java文件, 在这一步通过javac生成.class文件。
源码.class文件和第三方jar或者library通过dx工具打包成dex文件
Android系统的Dalvik虚拟机的可执行文件为DEX格式,所以这里会将上一步中生成的.class文件 和 引用的第三方jar等过程中的.class 一起通过dx工具打包成dex文件
apkbuilder工具会将所有没有编译的资源、.arsc资源、.dex文件打包到一个完成apk文件中
tips:
apksigner工具会对未签名的apk验证签名。得到一个签名后的apk(signed.apk)
apksigner 是google 退出的V2签名方式
Jarsigner 是之前一直使用的V1签名方式
可以通过在命令行中输入apksigner --help来获取详情信息,如果没有特殊需求,使用下面命令即可完成签名
release mode 下使用 aipalign进行align,即对签名后的apk进行对齐处理
所谓对齐,主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快。对齐的作用主要是为了减少运行时内存的使用。
zipalign是一个android平台上整理APK文件的工具,它对apk中未压缩的数据进行4字节对齐,对齐后就可以使用mmap函数读取文件,可以像读取内存一样对普通文件进行操作。如果没有4字节对齐,就必须显式的读取,这样比较缓慢并且会耗费额外的内存。
参考文章:
Android-Studio配置构建
浅谈Android打包流程
apk打包流程
END!
㈡ 为什么新的手机平板刚买到手的时候手机编译是什么意思
手机编译时间是手机系统软件版本编译完成的时间。
新手机的系统编译时间通常会早于手机出厂和购买时间的。
新手机的系统编译时间通常会早于手机出厂日期,更会早于购买日期,手机编译时间跟手机出场时间一样,是用于记录手机某一阶段工作完成的时间信息,方便对手机进行检查和管理的,一般就是一些手机参数、信息的必要展示。
㈢ 编译是什么意思
你一定是指程序的编译吧,如果是的话
编译的意思就是把程序语言写成机器可以运行的机器码的过程。其中会用到编译器。
编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。
㈣ 软件编译,这什么意思
编译和解释是从源程序到可执行程序转换的两种方法。编译,是在源程序完成后,先转换成中间代码,然后再转换成二进制代码,完成后,每次执行,都直接执行这个二进制代码。一次转换完成。 而解释程序的执行不同,他在执行时,是一次读入一条源代码...
㈤ 手机编译时间是什么意思 手机编译时间介绍
1、手机编译时间是手机系统软件版本编译完成的时间,新手机的系统编译时间通常会早于手机出厂和购买时间的。
2、手机的生产日期可以在手机包装盒上查询到。手机的生产日期是固定的,不可以更改。
3、手机的购机时间可以在购机发票查询到,若发票已丢失则不能查询。
4、手机的购机使用时间是无法直接查到的,可以参考手机发票上的购机时间,如果您的发票已遗失,可以查看手机包装盒上的生产日期。
5、手机开机后使用时间可以进入手机设置--更多设置--关于手机--已使用时间项查看手机的开机使用时间,手机重启后使用时间将会清零。
㈥ 编程完要编译,编译到底是什么意思
编程就是编写程序,也就是敲代码
编辑应该也是写代码的意思吧
编译一般都是在写了一行代码保存的时候,开发工具会编译你写的代码是否有错,然后会帮你生成一些其他文件
㈦ 为什么android源码还需要编译
android源码中有着许多的源代码,其中有c和c++编写的也有java编写,这些代码需要通过重新编译后才能在android机器上运行的!当然你修改源码,改完源码后还是需要对源码进行编译的编译的!android系统源码的整体编译需要很长时间,所以一般否是分开来编译的!这样缩短了编译的等待时间,而且也实现了不同人对不同板块代码的修改和编译的分工了!
㈧ 编译android源代码的目的是什么,编译后会得到什么东西
定制嘛,就是按你自己的要求设定方案,因为android是开源的,而且google提供了很完备的开发框架,有java基础的人可以很快上手。
源码定制估计是现在的android的市场一个发展方向,因为以前都是山寨机,软件硬件一个样,而现在智能机在硬件方面基本是差不多的,而android软件框架也是一样,但是开发比较简单,门槛很低,所以一些公司提供了定制服务,改动下源码提供个性化服务。个人理解,你可以继续网络了解下。
至于你想学开发android,先看下java,应用层是用java开发的,而且你以后也可以自己开发些小应用闹着玩。参考书方面很多,什么android应用开发揭秘啊,adk开发范例大全啊,精通android啊什么的,可以在网上找电子档或者别人的教学视频,很多的。