为了账号安全,请及时绑定邮箱和手机立即绑定

Android 4.4 引入的 ART为什么会产生兼容性问题?

Android 4.4 引入的 ART为什么会产生兼容性问题?

至尊宝的传说 2019-04-16 20:26:41
我一直有一个疑惑,为什么art会产生兼容问题?它跟传统Dalvik的区别不就是将代码编译为机器码的时间不一样而已吗?莫非是因为有一些应用根本无法提前编译,而是通过另外某一些机制在运行?比如unity3d用的mono.net运行时(通过mono运行时解析IL来运行在安卓平台)?或者是无法支持一些需要jit的特性?
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

忽然发现Mono在Android竟然不是完全的AOT,iOS上是AOT,
实际上Android4.4引入的正是AOTAheadofTime,兼容性问题的产生主要是API的不兼容,有些类不支持,有些方法不支持等,兼容性问题得具体分析,不能一概而论。ART也就是用dex2oat把dex编译成oat文件,最终是一个elf文件以前的dex并没有删除,所以就存在存储占用大。详情可以到Github上找Android源码。JIT是运行的时候编译成机器码,并不是全部。
                            
查看完整回答
反对 回复 2019-04-16
?
翻阅古今

TA贡献1780条经验 获得超5个赞

因为理想状态ART的实现可以做到和Davlik接口完全一致,但是实际的周边开发工具很多不止依赖外部接口,很多还依赖内部实现和内部的运行机制,现在运行机制改变了,在这些上面就会出问题。运行时环境的切换是很大的工程,需要逐步解决遇到的各种问题。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 460 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号