zlzyp 发表于 2017-7-10 08:10:12

如何查看华为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版本。暂时没有找到解决办法。
页: [1]
查看完整版本: 如何查看华为EMUI系统APK源码?