zoukankan      html  css  js  c++  java
  • 如何查看华为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版本。暂时没有找到解决办法。

  • 相关阅读:
    2016.6.26考试
    爆搜。。。。。。。
    9.18目标
    9.17水题总结
    9.16测试
    9.10考试
    jzoj P1163 生日派对灯
    9.04考试总结
    8/8刷题记录
    a[i++]
  • 原文地址:https://www.cnblogs.com/tt2015-sz/p/5605766.html
Copyright © 2011-2022 走看看