知识为进步之母,而进步又为富强之源泉。这篇文章主要讲述Android Framework源码反编译相关的知识,希望能为你提供帮助。
部分设备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.2.jar #查看输出用法 #反编译framework.odex java -jar baksmali-2.2.2.jar deodex framework.odex
执行成功后,会产生一个 out 目录,里面放的是中间文件,找到对应smali文件文件可以查看对应的源码,可以找到对应行号代码,这个非常有用!
(2)生成dex文件
#查看用法 java -jar smali-2.2.2.jar #生成out.dex java -jar smali-2.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
【Android Framework源码反编译】http://blog.sina.com.cn/s/blog_4e1e357d0102yg5o.html
推荐阅读
- 2018年Unity结合Android SDK下载安装及配置教程
- android studio 3.1.2 布局文件
- APP网站等注册登录改密等发送验证码短信的接入流程
- Mybatis的Example常用函数和Mapper常用接口
- 教育App定制选哪家公司好?
- Android开关:Switch控件
- Theme.AppCompat无全屏主题解决办法
- call()和appl()的理解
- Android EditText 限制输入为ip类型