部分设备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. boost::lockfree::queue多线程读写实例

    最近的任务是写一个多线程的东西,就得接触多线程队列了,我反正是没学过分布式的,代码全凭感觉写出来的,不过运气好,代码能够work= = 话不多说,直接给代码吧,一个多消费者,多生产者的模式.假设我的任 ...

  2. 浅谈AJAX基本实现流程

    1.js中ajax实现流程: (1) 创建XMLHttpRequest对象,也就是创建一个异步调用对象. (2) 创建一个新的HTTP请求,并指定该HTTP请求的方法.URL及验证信息. (3) 设置 ...

  3. JS冲刺

    1.简单/复杂数据类型1)基本数据类型把数据名和值直接存储在栈当中复杂数据类型在栈中存储数据名和一个堆的地址,在堆中存储属性及值,访问时先从栈中获取地址,再到堆中拿出相应的值简单数据类型:number ...

  4. CiscoIOUKeygen

    python CiscoIOUKeygen.py | grep -A 1 ‘license’ > iourc

  5. 控制WinForm中Tab键的跳转

    一,需求 在Winform中,默认情况下,按下Tab键,光标会按照我们设定的TabIndex值从小到大进行跳转. 但如果用户要求按下Tab键跳转到特定的控件,这种要求还是很合理的,比如用户只想输入几个 ...

  6. CSS魔法堂:稍稍深入伪类选择器

    前言  过去零零星星地了解和使用:link.::after和content等伪类.伪元素选择器,最近看书时发现这方面有所欠缺,于是决定稍微深入学习一下,以下为伪类部分的整理. 伪类  伪类选择器实质上 ...

  7. 运行VsCode缺少libxss.so.1

    安装libXScrnSaver即可 yum install libXScrnSaver     使用的时候出现一个错误 bash: /usr/local/bin/rar: /lib/ld-linux. ...

  8. Avizo/Amira应用 - 如何计算面孔率

    对于在Avizo或Amira中如何计算孔隙率,这个太简单,完成孔隙和整体材料的识别,再利用Volume Fraction计算即可获得,这里说的是每一层的面孔率如何计算? 数据导入,选取一个简单的过滤处 ...

  9. 树莓派raspberry pi配置

    (1)国际化语言 树莓派初装系统之后,首次启动会出现“raspi-config”工具,如下图:(若不是初次启动,在命令模式下,请输入 sudo raspi-config 命令,即可调出此界面.若在图形 ...

  10. c# 非调试状态下面执行

    #if !DEBUG                View("ErrorSimple").ExecuteResult(ControllerContext);#endif