android apk 自动编译器,Gradle编译-APK编译过程

1.再谈Dalvik

在早期的Android设备中(Android5.0以下)都是使用的Dalvik虚拟机,Dalvik支持经过转换的.dex文件。.dex格式是专为Dalvik设计的一种适合内存和处理器速度有限的系统。

但是在Android5.0,google用ART全面取代的Dalvik。Android7.0中又添加了JIT编译器,使得Android性能也有不少提升。

d983de9891ad

20180807-193741(eSpace).png

上图为从Android源文件开始,最终到APK的过程。

下面博客文章详细介绍了dalvik虚拟机,可供参考学习。

https://www.cnblogs.com/lao-liang/p/5111399.html

2.class文件和dex文件的区别

dvm(art)和jvm属于不同的虚拟机平台,不同平台要求执行的文件类型也就不一样

dvm(art)--.dex文件

jvm--.class文件

在编译和生成上

java source --.class文件 ---jvm执行

java source --.class文件 ---.dex文件 --- dvm执行

3.从Dalvik到ART

Android Runtime (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。ART 及其前身 Dalvik 最初是专为 Android 项目打造的。作为运行时的 ART 可执行 Dalvik 可执行文件并遵循 Dex 字节码规范。

ART 和 Dalvik 是运行 Dex 字节码的兼容运行时,因此针对 Dalvik 开发的应用也能在 ART 环境中运作。不过,Dalvik 采用的一些技术并不适用于 ART。

ART的功能

1.预先 (AOT) 编译

使用ART编译器时,应用程序在安装期间就已经把dex字节码翻译并存储在设备上,运行时,只需要执行这些翻译好的就可以了,因此执行速度也快了不少。

2.垃圾回收方面的优化

只有一次(而非两次)GC 暂停

在 GC 保持暂停状态期间并行处理

在清理最近分配的短时对象这种特殊情况中,回收器的总 GC 时间更短

优化了垃圾回收的工效,能够更加及时地进行并行垃圾回收,这使得 事件在典型用例中极为罕见

压缩 GC 以减少后台内存使用和碎片

3.开发和调试方面的优化

4 APK编译过程和原理

构建流程涉及许多将项目转换成 Android 应用软件包 (APK) 的工具和流程。构建流程非常灵活,因此了解它的一些底层工作原理会很有帮助。

d983de9891ad

build-process_2x.png

编译器将源代码转换成 DEX(Dalvik Executable) 文件(其中包括运行在 Android 设备上的字节码),将所有其他内容转换成已编译资源。

APK 打包器将 DEX 文件和已编译资源合并成单个 APK。不过,必须先签署 APK,才能将应用安装并部署到 Android 设备上。

APK 打包器使用调试或发布密钥库签署您的 APK:

如果构建的是调试版本的应用(即专用于测试和分析的应用),打包器会使用调试密钥库签署应用。Android Studio 自动使用调试密钥库配置新项目。

如果您构建的是打算向外发布的发布版本应用,打包器会使用发布密钥库签署您的应用。

在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,减少其在设备上运行时的内存占用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值