方舟编译器业务探讨

Posted Hyperledger实践

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方舟编译器业务探讨相关的知识,希望对你有一定的参考价值。

华为EMUI9.0升到9.1后系统UI的响应有一定的提升, 但没官方说的那么快,方舟编译器重新编译过的是系统应用, 结合新的文件系统EROFS, 硬把虚拟机跑的UI优化成这样,不简单了。顺路吐槽下月亮模式,这样搞拍摄都没乐趣了。

 

华为修炼了深厚的内功,但营销也是炸天。鸿蒙昨天发布,方舟还不见踪影,有点吊人胃口的造势。

 

今天先谈下方舟,百度了下,JIT, AOT之类,说是跳过虚拟机,直接转成机器码,具体是怎样,没个定论。既然EMUI9.1都有方舟编译过的系统应用,去反编译去看下就好了。

 

网上有说华为市场的微博极速版是方舟编译的,我用jadx轻松反编译过, dex也在是正常不过的android apk。顺路扯下, 微博为了快可能没加壳, 就混淆了下, 通信串行化可能用的thrift, 应该蛮快。推送标准的集成了各大厂商的推送服务,统一推送联盟的推必达看来也是雷声大雨点小。

 

方舟编译器业务探讨


那就尝试找找官方的应用, 到华为应用华为下载时钟, 华为市场的apk, 能顺路反编译的多数都不是了。

最后只能尝试从手机去找系统级的应用,设置或者相机可能是。USB连接, 开发者模式,  打开debug, adb通过包名去找应该可以。百度现学现卖。

 

找到手机所有的应用

D:\Project>adb shell pm list packages

package:com.huawei.scenepack

package:com.android.cts.priv.ctsshim

package:com.huawei.camera

package:com.hpbr.bosszhipin

package:com.huawei.android.tips

package:com.google.android.ext.services

package:com.huawei.synergy

package:com.huawei.android.launcher

package:com.android.gallery3d.overlay

package:com.android.mediacenter

package:com.android.providers.telephony

package:com.unionpay.tsmservice

package:com.huawei.androidx

......

com.huawei开头的包可能是系统应用, 以相机为例,

查找包的安装路径

D:\Project>adb shell pm path com.huawei.camera

package:/product/app/HwCamera2/HwCamera2.apk

 

拷贝apk

D:\Project>adb pull /product/app/HwCamera2/HwCamera2.apk

/product/app/HwCamera2/HwCamera2.apk: 1 file pulled. 30.2 MB/s (49544076 bytes in 1.565s)

 

反编译一看, 悲催了, 相机app为撒不用方舟build下。40MB蛮大的apk, okhttpglide看来是主流了。至于为什么叫camera2, 或者用的是android camera2接口?

 


 

依葫芦画瓢,继续找啊,终于找到两个特殊点的。这些应用的路径在/system/app, 应该都是系统级的应用。

package:com.huawei.synergy

package:com.huawei.android.launcher

 

jadx反编译为空, 估计是了。用解压工具看下apk结构.

 


这下干净了, dex找不到了, 出去assets,res这些资源类的东西,最大的都集中在了resources.arsc里面。我们找最新的apktool 2.4.0看能不能解压出来。

 

E:\>apktool.bat d HwLauncher6.apk

I: Using Apktool 2.4.0 on HwLauncher6.apk

I: Loading resource table...

I: Decoding Shared Library (androidhwext), pkgId: 2

W: Unknown data detected. Skipping: 1920 byte(s)

......

I: Decoding values */* XMLs...

Exception in thread "main" java.lang.NullPointerException

        at brut.androlib.res.data.value.ResEnumAttr.serializeBody(ResEnumAttr.java:56)

        at brut.androlib.res.data.value.ResAttr.serializeToResValuesXml(ResAttr.java:64)

        at brut.androlib.res.AndrolibResources.generateValuesFile(AndrolibResources.java:704)

        at brut.androlib.res.AndrolibResources.decode(AndrolibResources.java:263)

        at brut.androlib.Androlib.decodeResourcesFull(Androlib.java:131)

        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:124)

        at brut.apktool.Main.cmdDecode(Main.java:167)

        at brut.apktool.Main.main(Main.java:76)

 

一堆报警和错误。

 

感觉resources.arsc不是符合android标准的格式了。至于是不是AOT的规范, 笔者只是业余玩下android不确定, 方舟编译出来的东西估计需要厂商的ROM去做支撑吧。所以这个生态,兼容性,  硬件厂商,手机厂商,app厂商的利益,不烧钱怎么摆得平, 技术再好也只是个工具,没有资本的支撑也是假的。

 

所谓的技术和开源现在慢慢是有国界的,华为我们必须是要支持的,尽量不大喜欢华为的营销风格。师夷长技以制夷, 闭关是没出路的。

 

后面有空我们再聊聊鸿蒙, Fuchsia, Flutter, 宏内核/微内核, LiteOS, Little Kernel

 

 

 

 

 

以上是关于方舟编译器业务探讨的主要内容,如果未能解决你的问题,请参考以下文章

掌握了编译器就掌握了话语权,方舟和鸿蒙为中国争到了发言权

华为方舟编译器开源!前华为人重磅解读!

干掉安卓虚拟机!华为方舟编译器深入解读

华为方舟编译器是黑科技?

迟到的方舟编译器开源:华为赶鸭子上架的“罪与罚”

提速安卓支撑鸿蒙?“大杀器”方舟编译器深度解析