前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >android studio 输出apk过程,apk中的文件格式(bsh文件,dex文件),JVM、DVM、ART的区别,IOS与安卓的区别,ART和Dalvik

android studio 输出apk过程,apk中的文件格式(bsh文件,dex文件),JVM、DVM、ART的区别,IOS与安卓的区别,ART和Dalvik

作者头像
zhangjiqun
发布2024-12-16 17:24:09
发布2024-12-16 17:24:09
1170
举报
文章被收录于专栏:计算机工具计算机工具

android studio 输出apk过程:https://www.jianshu.com/p/2babb51d2556

1.通过aapt打包res资源文件,生成R.java、resources.arsc(映射文件)和res文件(二进制 & 非二进制如res/raw和pic保持原样) 2.处理.aidl文件,生成对应的Java接口文件 3.通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件 4.通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex 5.通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk 6.通过Jarsigner工具,对上面的apk进行debug或release签名7.通过zipalign工具,将签名后的apk进行对齐处理。

bsh文件:https://baike.baidu.com/item/bsh/465916?fr=aladdin

bsh是UNIX命令,bsh 命令调用 Bourne Shell,后者是一个交互式命令解释器和命令编程语言。该 shell 或者从终端键盘交互式地或者从文件执行命令

dex文件:https://www.jianshu.com/p/7fadc0e3b067

能够被DVM识别、加载并执行的文件格式

二.如何生成和执行dex文件

  • 生成class文件
    • 可通过IDE自动帮我们build,无需手动生成
    • 可手动通过dx命令去生成dex文件
    • 手动运行dex文件在手机

JVM、DVM、ART的区别:https://www.jianshu.com/p/047d5b00ff7a

dex文件结构:https://www.jianshu.com/p/6224353197fd

.dex文件结构和.class文件结构差异的地方很多,但从携带的信息上看,.dex.class文件是一致的:

  • header:存储了各个数据类型的起始地址、偏移量等信息。
  • proto_ids:描述函数原型信息,包括返回值,参数信息。比如“test:()V”
  • methods_ids:函数信息,包括所属类及对应的proto信息。

虽然.dex文件的结构很紧凑,但想要运行时的性能得到进一步提升,还需要对dex文件进行进一步优化。优化主要针对以下几个方面:

  • 调整所有字段的字节序和对齐结构中的每一个域
  • 验证.dex文件中的所有类
  • 对一些特定的类进行优化,对方法里的操作码进行优化

.dex文件经过优化后文件大小会膨胀,大约增加到原来的1~4倍。对于内置应用,一般在系统编译后,便会生成优化文件odex(Optimized dex)。一个Android应用程序,需要经过以下过程才可以在Dalvik虚拟机上运行:

  • Java源文件编译成.class文件
  • 使用dx工具把.class文件转换成.dex文件
  • 使用aapt工具把.dex文件、资源文件以及AndroidManifest.xml文件组合成APK
  • APK安装到Android设备运行

ART虚拟机

ART(Android Runtime)虚拟机是Android 4.4发布的,用来替换Dalvik虚拟机

将apk文件使用360加压边可以看到Android studio 打包后输出的apk内在文件
IOS与安卓的区别:

1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。 2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。 3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。 iphone沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序。以杀毒软件中的沙盒技术解释一下。“沙盒”技术是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。 安卓虚拟机机制解释:android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。

ART和Dalvik

Dalvik

打包的过程中 会先将.java等源码通过javac编译成.class文件,再通过dx.class文件转换成Dalvik虚拟机执行的.dex文件。

应用启动的时候 先将.dex文件 转换成机器码,又因为65536的文件,导致在应用冷启动的时候有一个合包的过程,最后的结果就是app的启动时间有可能变慢,这就是Dalvik虚拟机的JIT(Just in Time)特性。

ART除了兼容了Dalvik虚拟机的特性之外,还有一个很好的特性AOT(Ahead of Time),这个特性就是把 .dex 文件转换成机器码 这个步骤提前到了 应用安装 的时候,ART虚拟机将.dex文件转换成可直接运行的.oat文件,ART虚拟机天生支持多dex,所以也不会有一个合包的过程,因此会极大的提升APP冷启动速度。

ART 虚拟机的优缺点

优点:

  • 加快APP冷启动速度
  • 提升GC速度
  • 提供功能全面的Debug特性

缺点:

  • APP安装速度慢,因为在APK安装的时候要生成可运行.oat文件
  • APK占用空间大,因为在APK安装的时候要生成可运行.oat文件
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • bsh文件:https://baike.baidu.com/item/bsh/465916?fr=aladdin
  • dex文件:https://www.jianshu.com/p/7fadc0e3b067
  • JVM、DVM、ART的区别:https://www.jianshu.com/p/047d5b00ff7a
    • ART虚拟机
      • 将apk文件使用360加压边可以看到Android studio 打包后输出的apk内在文件
      • IOS与安卓的区别:
    • ART和Dalvik
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档