部分设备crash在Framework代码,但又和开源代码对应不上,这时需要拉取设备里面的Framework并反编译源代码排查问题。

1、获取Framework文件:

adb pull /system/framework

获取Framework文件夹下面的内容,可能有framework.jar和framework.odex,如果framework.jar解压出来有dex则反编译dex即可,如果framework.jar里面没dex则需要先反编译framework.odex文件至dex文件;

2、反编译odex文件:

pull framework文件夹时最好全部获取出来,因为反编译时有依赖,就在获取的framework文件夹里面反编译不用担心依赖缺少的问题;

反编译odex文件的工具:smali和baksmali的jar文件

https://github.com/JesusFreke/smali

https://bitbucket.org/JesusFreke/smali/downloads/

(1)反编译odex文件获取smali文件:

java -jar baksmali-2.2..jar #查看输出用法
#反编译framework.odex
java -jar baksmali-2.2..jar deodex framework.odex

执行成功后,会产生一个 out 目录,里面放的是中间文件,找到对应smali文件文件可以查看对应的源码,可以找到对应行号代码,这个非常有用!

(2)生成dex文件

#查看用法
java -jar smali-2.2..jar
#生成out.dex
java -jar smali-2.2..jar assemble out

(3)生成jar文件

dex2jar-2.0 out.dex
#使用JD-GUI查看out-dex2jar.jar即可

参考文档:

https://www.cnblogs.com/ungshow/p/3511330.html

http://blog.sina.com.cn/s/blog_4e1e357d0102yg5o.html

Android Framework源码反编译的更多相关文章

  1. 解决AndroidKiller APK 反编译失败,无法继续下一步源码反编译!

    报错背景 今天使用AndroidKiller V1.3.1,反编译一个APK,遇到如下报错: 当前 Apktool 使用版本:Android Killer Default APKTOOL 正在反编译 ...

  2. Android 快速下载 Android framework 源码

    官网 Android framework源码git地址 github: https://github.com/android/platform_frameworks_base google 官方: h ...

  3. Source Insight 基本使用(1)-使用Source Insight查看Android Framework 源码

    一.下载framework源码: google已经把framework源码托管在了gitHub上: https://github.com/android/platform_frameworks_bas ...

  4. 如何阅读android framework源码

    但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结. 知识 Java Java是AOSP的主要语言之一. 没得说, 必需熟练掌握. 熟练的Android App开发 Linux A ...

  5. [转]如何阅读android framework源码

    但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结. 知识 Java Java是AOSP的主要语言之一. 没得说, 必需熟练掌握. 熟练的Android App开发 Linux A ...

  6. Java Jar源码反编译工具那家强

    本文介绍下Java Jar常见的反编译工具,并给出使用感受. 反编译JAR能干什么: 排查问题.分析商业软件代码逻辑,学习优秀的源码思路. JD-GUI 下载地址:http://java-decomp ...

  7. Android 11 源码下载+编译教程

    下载AOSP源码 这里我使用的是外国语大学的镜像执行的下载,Mac系统的话,一定要在区分大小姐的磁盘下执行 repo init -u https://mirrors.bfsu.edu.cn/git/A ...

  8. browserify压缩合并源码反编译

    最近在学习钉钉(一个协作应用)桌面应用的前端源码时候,发现其js源码是用browserify做模块开发.于是想还原其源码的原本的目录结构,学习它的目录分类以及业务划分. 前言 用过browserify ...

  9. shop++源码反编译----随笔

    一.applicationContext-mvc.xml配置 1.读取配置文件 <context:property-placeholder location="classpath*:/ ...

随机推荐

  1. Ubuntu1404 开启定时任务 crontab

    crontab -e 这个 我使用vim编辑,所以选择3,进入到 写了两条,的确隔了一分钟在test.txt文件夹里面会多加一条Good morning进去.而且也会执行dingshi.sh这个she ...

  2. snmpwalk命令

    使用该命令需提前安装好net-snmp*rpm相关包 语法: snmpwalk -v 1或2(代表SNMP版本) -c SNMP读密码 IP地址 OID(对象标示符) (1) -v: 指定snmp的版 ...

  3. Ubuntu 18.04 安装Virtual Box or VMWare workstation Pro 14

    Linux相关的知识:https://www.cnblogs.com/dunitian/p/4822808.html#linux Virtual Box:sudo apt-get install vi ...

  4. beego orm 忽略字段

    忽略字段 设置 - 即可忽略 struct 中的字段 type User struct { ... AnyField string `orm:"-"` ... } beego or ...

  5. IIS安装、配置 发布网站 报错解决方案

    错误一:   HTTP 错误 500.19- Internal Server Error法请求该页面配置,因为页面的相关配置数据无效####   HTTP 错误 500.21 - Internal S ...

  6. 查看当前正在运行的python进程

    ps -ef |grep Python kill -9 pid  

  7. mac下host配置 + mac修改了环境变量却不生效:zsh: command not found: xxx

    https://blog.csdn.net/hlllmr1314/article/details/52228672 在/etc/profile中配置了go语言环境变量: export GOROOT=/ ...

  8. SqlAlchemy “Too many connections”

    File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\connection ...

  9. [Vuex] Use Namespaces in Vuex Stores using TypeScript

    Even by using modules, they still share the same namespace. So you couldn’t have the same mutation n ...

  10. ionic 锁定方向 禁止横屏 orientation

    安装插件 cordova-plugin-screen-orientation ionic cordova plugin add cordova-plugin-screen-orientation 添加 ...