android studio的版本说明


android studio的版本说明  

工具介绍与使用指南

一、工具简介

Android Killer:一个用于反编译APK包以获取Smali代码的工具。

Android Studio与IDEA:用于调试Smali代码的工具。Android Studio是基于IDEA进行开发的,功能强大且易于使用。

模拟器或真机:运行待调试程序的平台。

二、前期准备步骤

1. 在手机或模拟器上安装应用程序。

2. 使用Android Killer反汇编测试包(如GGNdkTest1包),生成Smali文件夹。

3. 在Android Studio中安装Smali插件(如smalidea-0.03)。安装方法:点击File->Settings->plugins->install plugins from disk,选择下载的zip包(无需解压)。安装完成后,按照提示重启Android Studio。

4. 导入工程,选择之前生成的Smali目录,按照引导完成操作。

三、调试流程

1. 配置Android Studio的调试环境。在Run菜单下选择Edit configurations,点击+号添加一个新的remote类型调试器。设置调试器名称,选择一个未被占用的端口(如8800)。

2. 在Android Studio的终端以调试模式启动应用,此时应用进程会暂时挂起。查看该应用的进程号,例如进程号为28881。

3. 进行端口转发设置。这条命令的作用是在本地8800端口与手机上的28881进程之间建立连接。当开始调试时,Android Studio将通过这个端口控制程序的运行。

4. 在代码行号旁下断点。请注意,Smali代码并非每一行都可以下断点。当下断点不成功时,尝试在其他位置下断点进行测试。

5. 开始调试。选择之前设置的调试器,程序将停在设置的断点处。你可以开始调试操作。调试界面包括运行、单步运行、进入函数等按钮的调试栏,显示变量值的variables栏,以及关注寄存器的watch栏。

四、总结与理解

关于调试过程的各个组件及其作用,经过研究网上教程,我有了如下理解:

adbd:运行在手机端的守护进程,与adb server进行通信,同时与手机端的debugger通信,协调各个程序的调试。

adbServer:运行在PC端,与adbd通信,并5037端口。它负责与手机建立连接。

DDMS:一个工具,连接5037端口,每个进程并为每个进程建立单独的调试端口(如8600、8601等)。Debugger可以直接连接这些端口进行调试。它提供了一个特殊调试端口8700,可以接收其他端口的数据并与手机任何进程通信。即使不开启DDMS,只要正确设置端口转发(如步骤3.3所示),也可以成功进行调试。

Debugger:各种调试器工具,可以选择连接DDMS提供的8700端口或其他每个进程单独的调试端口。

对于如何正常工作的情况,我总结如下:

1. 开启DDMS后,Debugger可以通过连接8700端口或任何由DDMS分配的进程端口进行调试,无需设置端口转发。

2. 不开启DDMS时,通过查看要调试的进程ID并设置端口转发(如步骤3.3),仍然可以成功进行调试。这个过程涉及到adb server的新端口(如8800)与Debugger的连接。我猜想这个过程是adb server默认5037端口并通过DDMS进行进程调试的分配,但当执行端口转发后,Debugger可以直接连接新端口进行调试而无需经过DDMS。当然这只是个人猜测,如有错误还请专家指正。

  android studio的版本说明