安装准备

安装准备文档是为您描述在安装前您应该准备好的事项,LAMDA 支持的设备类型和架构较多,此处例举了各种常见设备需要提前准备的操作,您可以根据实际情况来判断使用何种方法。LAMDA 整体分为客户端以及服务端,客户端主要是 Python 相关库及接口,服务端则是运行在目标手机上的服务。您可以选择在电脑上安装 Python 库来实现对手机的控制,同样,如果需要通过 Python 控制设备,您需要在手机上安装并运行安卓服务端,这是必选的。

基础要求

LAMDA 最理想的运行环境是你刚刚 root (如:新建模拟器,自带权限的ROM,Magisk 刚 root),请确保有一台已经 root 且运行内存大于 2GB,可用存储空间大于 1GB 的安卓设备或者安卓模拟器,推荐使用最新版夜神、雷电模拟器,或者 AVD 模拟器,启动前务必确保

* 必须关闭 Magisk Hide
* 必须关闭 frida-server
* 确认完毕重启设备

总的来说,您需要一台具有 root 权限的安卓设备并确认没有开启以上列表中描述的相关功能或插件。

系统设置

通常情况下,您得手机还需进行如下的设置,这些并不是必选的,但是为了确保能一次成功,建议您在有时间的情况下完成以下几项设置。

检查时区时间

打开系统设置,找到日期与时间,检查是否已自动设置中国标准时间或者你所在地的时区,检查时间是否正确或在可接受的误差范围内,如果没有请关闭使用网络提供的时区 以及网络时间,并手动设置时区及时间为你当前所在地的时区及时间。

关闭无障碍

打开系统设置,找到无障碍(系统或更多设置中),关闭或卸载所有使用无障碍的应用(例如 talkback,autojs 等)。

网络设置

真机,云手机,模拟器等设备的网络情况各不相同,您需要根据实际完成如下对应情况的设置,否则您在安装后无法正常访问服务。

对于真机,只需要确保电脑与手机在同一网络下即可。对于模拟器,默认创建的模拟器正常情况下与你的本机网络并不互通,如果您使用的是 android x86 (基于 VMWare 的安卓虚拟机), 请尝试在虚拟机设置中将网络模式设置为桥接模式。对于雷电,夜神等模拟器,需要在其设置中根据提示安装驱动并开启桥接模式随后重启模拟器。对于 Android Studio 的 Virtual Device,则没有相关设置,如果需要连接 AVD,请先执行 adb forward tcp:65000 tcp:65000,并使用 localhost (不要使用 127.0.0.1)进行连接。

其他设置

WSA (Windows Subsystem Android)

如果使用的是 WSA (Windows Subsystem Android),请确保 WSA 版本不低于 2210.40000 并且已 root。随后打开 WSA 设置 -> Subsystem Resources -> 选择 Continuous,关闭 Advanced Networking。选择 Developer,开启 Developer mode 并展开选项卡,打开 "Support single machine UI automation",随后重启 WSA 子系统即可。

AVD (Android Studio Virtual Device)

如果使用的是 AVD (Android Studio Virtual Device),请先扩展默认存储空间和内存的大小。

点击 Android Studio 中的 Virtual Device Manager,新建一个虚拟机,随后找到对应虚拟机并点击后方的编辑按钮(一个笔的符号), 点击 Show Advanced Settings,找到 Storage -> Internal Storage 并将其设置为至少 2GB,并将 RAM 内存大小设置为至少 4GB。

Redroid (android in docker)

如果使用的是 Redroid (android in docker),以官方建议的 Ubuntu 20.04 为例,首先安装 linux-modules-extra 相关模块,(注意下列方法可能不适合其他 Linux 发行版,如果你不熟悉 Linux,我们不太建议你继续下面的操作)。

apt install linux-modules-extra-`uname -r`

编辑文件 /etc/modules,将下列名称复制并插入文件底部,重启当前宿主机。

# redroid modules
mac80211_hwsim

binder_linux
ashmem_linux

最后使用以下命令启动,redroid_gpu_mode 请根据实际进行修改(注意以下与官方写的命令有所不同,请按照如下命令使用)。

docker run -itd --rm --privileged --pull always -v /lib/modules:/lib/modules:ro -v ~/redroid:/data -p 127.0.0.1:5555:5555 -p 127.0.0.1:65001:65000 redroid/redroid:12.0.0-latest androidboot.redroid_gpu_mode=guest

上述命令中将容器 65000 映射到本机 65001 是因为部分工具需要临时绑定到本机的 65000 端口,为了不冲突,我们使用 65001 端口。

使用以上命令启动的安卓容器,需要在宿主机上通过 http://127.0.0.1:65001 访问 LAMDA。