如何查看华为EMUI系统APK源码?

最近想看一下华为EMUI里面的某些系统APK是如何实现的。

如何获取系统APK呢?

有两种方式:

1.安装豌豆荚,豌豆荚里有一个应用管理的功能,可以查看手机里的所有应用,包括系统应用。

可以使用该功能导出系统应用APK。

2.解包华为UPDATE.APP

(1)到华为EMUI官网下载相应的系统安装包UPDATE.APP

(2)到华为花粉俱乐部论坛中,搜索HuaweiUpdateExtractor,当前能找到的最新版本是0.9.9.3

目前使用该版本一般都能解包成功。

解包成功后,得到很多img文件。

系统源码主要在SYSTEM.img中,下一步就是如何解包img文件。

(3)用蘑菇ROM助手解包img

通过蘑菇ROM助手的IMG提取功能,但是有些img无法解包,比如RECOVERY.img,不知道是什么原因。

----------------------------------------------------分割线--------------------------------------------------------------------------

解包SYSTEM.img成功后,就可以看到系统的内容。

app路径下有所有系统应用,找到相应的APK,进行反编译即可看到源码。

APK反编译方法有很多,此篇不进行赘述。

APK第一步反编译后只能得到smali文件,若要查看java文件,可以借助Smali2Java工具,但是这个工具已经很久没有提供支持,不一定能转换成功。

懂Smali语法后,可以直接查看Smali文件,也能理解APK的实现细节。

--------------------------------------------------分割线----------------------------------------------------------------------------

今天解包EMUI5.1的安装包后发现,所有系统应用都进行了odex化,即每个应用都分为odex和apk文件,如果直接反编译apk文件,只能得到资源文件,

为什么odex化?可以参考这篇文章:揭秘ODEX——有ODEX版ROM与无ODEX版ROM区别 
据说这样系统升级时第一次启动速度会加快。

 反编译odex可以用baksmali,但是很遗憾,今天下载最新版本baksmali-2.1.2,使用时出现:Unsupported oat version:45错误,

反编译无法进行,到官网查看后发现:

也就是说目前不支持45版本。暂时没有找到解决办法。

原文地址:https://www.cnblogs.com/tt2015-sz/p/5605766.html