前言
Android开发可以使用自带的模拟器,但是运行起来太卡了。
这里可以使用MuMu模拟器,流畅太多了。
使用
安装后,启动模拟器,在开发IDE上就能看到我们的模拟器vivo V2241A
(设置不同,名称也不一样),直接选择这个就行。
如果不显示执行
1 | adb root |
HTTP抓包
官方文档
https://mumu.163.com/help/20240814/40912_1174291.html
Charles配置
因模拟器ROM在访问本地api时使用的是虚拟网络ip,ip地址为10.0.2.2
。
在接入Charles代理后,10.0.2.2
需要被映射为127.0.0.1
,才可正常使用,具体操作可参考以下步骤。
注:
如果原ip地址非10.0.2.2(考虑到虚拟网络ip存在变动的情况),请根据抓包接口的错误请求,将对应ip地址映射为127.0.0.1。
(1) 打开Rewrite界面
在Charles主页面点击顶部菜单栏
=> Tools
=> Rewrite
;
(2) 启用Rewrite
在弹出的Rewrite Setting界面内,勾选Enable Rewrite,启用Rewrite功能,并点击Untitled Set;
(3) 调整untitled Set设置
点击Untitled Set后,点击Rewrite Setting界面右上侧的Add,在弹出的Edit Location界面内,将protocol改为http,再将Host改为10.0.2.2,点击OK保存;
(4) 调整Rewirte Rule设置
返回Rewrite Setting界面,点击界面右下侧的Add,在弹出的Rewirte Rule界面内,将Type更改为Host,Match—Value改为10.0.2.2(需要勾选Match whole value),之后将Replace—Value改为127.0.0.1(需要选择Replace all),点击OK保存后,再勾选Rewrite Setting界面右下侧的Host,保存即可。
注意
Charles 中过滤请求接口的地址还是我们实际访问的接口。
模拟器网络配置
其中IP可以通过Charles主页面,点击顶部菜单栏Help
=> Local IP Address
,获取到IP Address(IP 地址端口)。
HTTPS抓包
如果不涉及HTTPS抓包,就不用配置下面的的了。
系统本身安装证书
返回Charles主页面,点击顶部菜单栏
=> Help
=> SSL Proxying
=> Install Charles Root Certificate
,安装证书,完成后重启Charles即可。
保存.pem文件到本地
在Charles主页面点击顶部菜单栏—Help— Save Chales Certificate—保存到本地,如保存为Charles.pem;
打开命令提示符界面执行命令
进入Charles.pem所在磁盘目录下,点击磁盘地址栏-输入cmd并回车,在弹出的cmd界面(命令提示符界面)内,输入以下命令:
1 | openssl x509 -inform PEM -subject_hash_old -in charles.pem |
若输出结果第一行类似:a2414e42
,则将Charles.pem更名为 a2414e42.0
;
1 | ren charles.pem a2414e42.0 |
注意
若没有安装OpenSSL,可到官网下载安装>>点击访问
安装时OpenSSL选择默认安装,最后的捐款取消勾选。
我这里安装到了
D:\Tools\OpenSSL-Win64
之后配置环境变量,将OpenSSL安装路径bin的路径(例如 D:\Tools\OpenSSL-Win64\bin
)加入到操作系统的系统环境变量Path中。
模拟器证书导入
开启ROOT功能与可写系统盘
打开MuMu模拟器右上角菜单-设置中心,勾选开启手机ROOT功能,并将磁盘改为可写系统盘,保存设置后重启模拟器;
ADB导入
启用需要配置抓包的模拟器,输入以下命令行导入证书,导入完成后重启模拟器即可抓包。
1 | adb kill-server |
注:7555为MuMu模拟器通用端口,指定端口可参考adb连接教程>>点击查看
重启模拟器之后需要重新执行adb root命令行;
a2414e42.0
为示例保存证书,实际填入需要根据本机保存的证书名称填入。
ADB下载地址
链接: https://pan.baidu.com/s/1jk7Itlac6eJ0q3mTwAoRIg?pwd=psk6 提取码: psk6
修改SSL代理
返回Charles主页面,点击顶部菜单栏— Proxy(代理)— SSL Proxying Settings(SSL代理设置),勾选启用SSL代理,添加主机和端口都为*
,并保存;