虚拟机ubuntu 使用adb 编译调试系统app Settings.apk



虚拟机ubuntu 使用adb




VMware® Workstation 12 Player
12.1.1 build-3770994


No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise


VMware设置:
player->可移动设备 与主机断开连接 即连接到虚拟机


用lsusb命令查询usb设备id
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc. 
Bus 001 Device 026: ID 0bda:0139 Realtek Semiconductor Corp. 
Bus 001 Device 035: ID 1f3a:1007 
                       VID :PID
cd root/
cd .android/


cat adb_usb.ini 
0x1f3a
没有adb_usb.ini就vi一个,在里面填入
android 设备的VID 0x1f3a就可以了






直接编译settings系统应用,无需编译、烧录整个系统包,
提升工作效率
我的是全志A33平台




在源码的根目录下创建 setting_mk.sh
其内容为以下:




. build/envsetup.sh 
lunch 5
#根据自己的实际情况确定,不要瞎搞


echo $pwd
cmd="mmm  packages/apps/Settings/  -j8" 
$cmd
adb remount 


echo out = $OUT
adb push $OUT/system/priv-app/Settings.apk /system/priv-app/ 
adb reboot






mmm frameworks/base/services/input
mmm frameworks/base/services/jni
mmm frameworks/base/policy -j8 

mmm frameworks/base/services/java   -j8


adb push $OUT/system/lib/libinputservice.so  /system/lib/libinputservice.so
adb push $OUT/system/lib/libandroid_servers.so  /system/lib/libandroid_servers.so
adb push $OUT/system/framework/android.policy.jar /system/framework/android.policy.jar
adb push $OUT/system/framework/services.jar  /system/framework/services.jar 
adb shell /system/bin/killpid.sh




#the killpid.sh in android target board /system/bin/
#Its content is-->
#echo kill hello
#kill -9 $(busybox pidof system_server)


#adb reboot

reboot之后 usb要重连,而

adb shell /system/bin/killpid.sh adb usb无需重连。 
 
<think>好的,我现在需要帮助用户解决如何使用jadx工具反编译Settings.apk和MiuiBluetooth.apk的问题。首先,我应该回忆一下用户提供的引用内容,看看有没有相关的信息可以借鉴。 根据引用[1],用户提到在Android 5.0之后,系统应用的目录结构发生了变化,不再是直接在/system/app/下放APK文件,而是每个应用有一个目录,里面存放APK。同时,引用[2]指出反编译Settings.apk需要使用apktool_2.0.3,但用户现在想用jadx,所以可能需要确认jadx是否支持这些APK的结构。 引用[3]提到jadx支持的文件类型包括apk、dex等,所以应该没问题。不过,用户之前可能遇到问题是因为APK的位置或结构发生了变化,需要正确提取这些APK文件。 接下来,我需要整理使用jadx反编译的步骤。首先,用户需要获取目标APK文件。根据引用[1],可能需要从ROM固件中提取system分区的文件,或者通过ADB从设备中提取。例如,使用adb pull命令从/system/app/对应的目录下获取Settings.apk和MiuiBluetooth.apk。 然后,安装jadx工具。用户需要下载并安装jadx的GUI或命令行版本。启动GUI后,直接拖放APK文件即可。如果是命令行,使用命令如jadx -d output_dir input.apk。 需要注意的是,小米的系统APK可能被混淆或优化过,反编译后的代码可读性可能较差。此外,对于系统APK,可能需要先获取root权限才能访问/system目录下的文件。如果APK是odex格式的,可能需要先转换为dex,但引用[1]提到可以使用工具将odex转为dex,而jadx是否直接支持odex呢?可能用户需要先处理odex文件,或者确保APK已经包含dex文件。 另外,引用[2]提到在Android 5.1上使用特定版本的apktool,但这里用户用的是jadx,可能不需要考虑版本问题,但最好建议用户使用最新的jadx版本以确保兼容性。 最后,用户可能需要处理反编译后的代码,比如查找特定类或资源,这时候可以指导他们如何使用jadx的搜索功能或导出Gradle项目到Android Studio中查看。 总结步骤应该是:获取APK文件→安装jadx→使用jadx打开或执行命令→处理可能的混淆或依赖问题。同时,提醒用户注意系统APK的位置变化和权限需求。</think>### 如何用 jadx 反编译 Settings.apk 和 MiuiBluetooth.apk #### 步骤 1:获取 APK 文件 1. **从设备中提取**(需 root 权限): - 使用 `adb shell` 进入设备,找到 APK 路径: - 小米系统应用路径一般为 `/system/app/应用名目录/应用名.apk`(如 `/system/app/Settings/Settings.apk` 和 `/system/app/MiuiBluetooth/MiuiBluetooth.apk`)[^2]。 - 通过 `adb pull /system/app/Settings/Settings.apk` 和 `adb pull /system/app/MiuiBluetooth/MiuiBluetooth.apk` 提取到本地。 2. **从 ROM 固件提取**: - 解压小米 ROM 的 `system.img` 文件,在 `system/app/` 下找到对应目录并提取 APK[^1]。 #### 步骤 2:安装 jadx 工具 1. 从 [jadx 官网](https://github.com/skylot/jadx) 下载最新版本(支持 Windows/Linux/macOS)。 2. 解压后运行: - **GUI 版本**:双击 `jadx-gui`(或 `jadx-gui.bat`),通过界面打开 APK。 - **命令行版本**:执行 `jadx -d 输出目录 Settings.apk`。 #### 步骤 3:反编译 APK 1. **GUI 操作**: - 打开 jadx-gui,将 APK 文件拖入窗口,自动解析代码和资源。 - 左侧导航栏可查看类、方法、资源文件(如图片、布局 XML)。 2. **命令行操作**: ```bash jadx -d ./output_settings ./Settings.apk jadx -d ./output_miui_bt ./MiuiBluetooth.apk ``` #### 注意事项 1. **代码混淆**:小米系统 APK 可能经过混淆,类名或方法名显示为 `a`、`b` 等,需结合上下文分析。 2. **依赖缺失**:系统 APK 可能依赖 `framework-res.apk`,若反编译时报错,可尝试通过 `--android-lib` 指定框架路径: ```bash jadx --android-lib /path/to/framework-res.apk -d ./output Settings.apk ``` 3. **资源解码**:jadx 会自动解析 XML 资源,若遇到二进制 XML,可尝试使用 `apktool` 辅助解码。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值