android系统编译 局部_方舟编译器业余探讨

博客作者通过adb工具深入分析了华为EMUI9.1系统应用,试图找到方舟编译器优化的痕迹。尽管在一些应用中并未直接发现方舟编译的效果,但讨论了方舟编译器的工作原理,以及在资源文件解析过程中遇到的问题。文章还提及了华为的生态系统、鸿蒙系统和市场推广策略,并对技术与商业之间的平衡提出了思考。
摘要由CSDN通过智能技术生成

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

e5f088967a91d0858490bcbaf1912098.png

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

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

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

43b76f112cae02b9edb3eafe8b83db11.png

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

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

找到手机所有的应用

D:Project>adb shell pm list packagespackage:com.huawei.scenepackpackage:com.android.cts.priv.ctsshimpackage:com.huawei.camerapackage:com.hpbr.bosszhipinpackage:com.huawei.android.tipspackage:com.google.android.ext.servicespackage:com.huawei.synergypackage:com.huawei.android.launcherpackage:com.android.gallery3d.overlaypackage:com.android.mediacenterpackage:com.android.providers.telephonypackage:com.unionpay.tsmservicepackage:com.huawei.androidx......

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

查找包的安装路径

D:Project>adb shell pm path com.huawei.camerapackage:/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接口?

aa1d4bebc4e06e26f08b150d90d52077.png

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

package:com.huawei.synergypackage:com.huawei.android.launcher 

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

c5cb46395ad57e3bd0de2b6eac692726.png

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

E:>apktool.bat d HwLauncher6.apkI: Using Apktool 2.4.0 on HwLauncher6.apkI: Loading resource table...I: Decoding Shared Library (androidhwext), pkgId: 2W: 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。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值