前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >方舟编译器业务探讨

方舟编译器业务探讨

作者头像
Zeal
发布2020-11-11 15:18:01
5850
发布2020-11-11 15:18:01
举报
文章被收录于专栏:Hyperledger实践Hyperledger实践

华为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下。40多MB蛮大的apk, okhttp和glide看来是主流了。至于为什么叫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。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hyperledger实践 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档