最近想看一下华为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版本。暂时没有找到解决办法。

如何查看华为EMUI系统APK源码?的更多相关文章

  1. 查看安卓APK源码破解

    原文:查看安卓APK源码破解 工具准备: <1>.android4me的AXMLPrinter2工具 <2>dex2jar <3>jd-gui 工具下载:http: ...

  2. centos 6x系统下源码安装mysql操作记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...

  3. 分布式任务调度系统xxl-job源码探究(一、客户端)

    前面讲了xxl-job的搭建,现在来粗略的解析下该分布式调度系统的源码,先来客户点代码 客户端源码 客户端开启的时候会向服务中心进行注册,其实现用的是jetty连接,且每隔半分钟会发送一次心跳,来告诉 ...

  4. Centos6 系统下源码方式安装Mysql 记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配. #### ...

  5. Nagios监控系统部署(源码)(四)

    Nagios监控系统部署(源码)   1. 概述2. 部署Nagios2.1 创建Nagios用户组2.2 下载Nagios和Nagios-plugin源码2.3 编译安装3. 部署Nagios-pl ...

  6. 驾照理论模拟考试系统Android源码下载

    ‍‍‍驾照理论模拟考试系统Android源码下载 <ignore_js_op> 9.png (55.77 KB, 下载次数: 0) <ignore_js_op> 10.png ...

  7. eclipse中无法查看引用的jar包源码

    本文来源:http://blog.csdn.NET/zljjava/article/details/7545270(这篇博客也是转载的,向最原始的作者致敬) 1.下载JAD jad官方地址的官方下载地 ...

  8. Android系统拍照源码

    个人对于Android系统拍照的一些总结:一种自定义图片拍照路径 ,另一种直接利用Android拍照后经过处理的缩略图 特别注意第一种方式需要增加SDK读写权限: <uses-permissio ...

  9. 【精】EOS智能合约:system系统合约源码分析

    系统合约在链启动阶段就会被部署,是因为系统合约赋予了EOS链资源.命名拍卖.基础数据准备.生产者信息.投票等能力.本篇文章将会从源码角度详细研究system合约. 关键字:EOS,eosio.syst ...

随机推荐

  1. angular ui-router 缓存问题

    在个别情况下 $state.go()路径和参数完全相同的时候页面因为缓存问题可以直接跳转,但是不能重新获取数据 通过路由参数可以解决 路由 .state('app.***.***', { url: ' ...

  2. 关于 客户端发现响应内容类型为“text/html; charset=utf-8”,但应为“text/xml”的解决方法

    http://www.cnblogs.com/jams742003/archive/2008/10/30/1322761.html 请求web服务时,会有如题的异常出现,解决方法如下: 1 检查web ...

  3. B2B电子商务网站技术框架

    一 设计原则 电子商务平台总体结构的设计应从体系.功能.信息.过程等各个方面保证整个电子商务平台总体目标的实现,以提高市场竞争能力.总体结构的设计应考虑以下设计原则: 快速响应原则:商机稍纵即逝,网站 ...

  4. RestSharp使用

    class Program { private readonly static string investRankingForAllUrl = "http://192.168.1.98:90 ...

  5. 20145212《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDE)

    20145212<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDE) 实验内容及步骤 1.命令行下的JAVA程序开发 建立并进入实验目录: 撰写简单的Hello ...

  6. BufferedReader类

    BufferedReader类用于从缓冲区中读取内容,多有的输入字节数据都将放在缓冲区中. BufferedReader中定义的构造方法只能接收字符输入流的实例,所以必须使用字符输入流和字节输入流的转 ...

  7. iOS / Android 移动设备中的 Touch Icons

    上次转载了一篇<将你的网站打造成一个iOS Web App>,但偶然发现这篇文章的内容有些是错误的——准确来说也不是错误,只是不适合自半年前来的情况了(也可以说是iOS7 之后的时间)—— ...

  8. shelve模块理解

    import shelve import sys def store_person(db): pid = input("Enter unique ID mnumber:") per ...

  9. ecshop 后台【左侧新增菜单】

    模板文件admin/template/menu.htm admin/includes/inc_menu.php 菜单排序(链接) langagues/zh_cn/admin/common.php  语 ...

  10. 集成EaseUI报错 环信3.1.5,托入EaseUI后,系统文件报错

    一托入EaseUI的文件夹,就各种系统报错,NSObject文件也错了,不能编译UIKit头文件…………………… 解决方案以及参考文档 http://www.jianshu.com/p/291ac34 ...