|
| 1 | +# 环境搭建指南 |
| 2 | + |
| 3 | +## 1.1 查看硬件是否满足需求 |
| 4 | + |
| 5 | +查看系统架构是否为 64 位 Linux |
| 6 | + |
| 7 | +```bash |
| 8 | +uname -m |
| 9 | +``` |
| 10 | + |
| 11 | +查看是否使用了 GLIBC 2.31 或以上 |
| 12 | + |
| 13 | +```bash |
| 14 | +ldd --version |
| 15 | +``` |
| 16 | + |
| 17 | +查看内存大小(RAM)总内存 ≥ 32Gi 推荐 64Gi 更稳 |
| 18 | + |
| 19 | +```bash |
| 20 | +free -h |
| 21 | +``` |
| 22 | + |
| 23 | +查看磁盘空间(推荐有 ≥ 32GB 的空间) |
| 24 | + |
| 25 | +```bash |
| 26 | +df -h / |
| 27 | +``` |
| 28 | + |
| 29 | +查看 CPU 型号 + 支持 VT-x/AMD-V(虚拟化) |
| 30 | + |
| 31 | +如果含有 `VT-x` 或 `AMD-V`,表示已启用虚拟化 |
| 32 | + |
| 33 | +查看 CPU 是否支持虚拟化(VT-x 或 AMD-V) |
| 34 | + |
| 35 | +```bash |
| 36 | +egrep -c '(vmx|svm)' /proc/cpuinfo |
| 37 | +``` |
| 38 | + |
| 39 | +查看/dev/kvm是否可见 |
| 40 | + |
| 41 | +```bash |
| 42 | +ls -l /dev/kvm |
| 43 | +lscpu | grep -E 'Model name|Virtualization' |
| 44 | +``` |
| 45 | + |
| 46 | +## 1.2 安装命令行版本的 Android SDK |
| 47 | + |
| 48 | +下载linux版本呢sdk |
| 49 | + |
| 50 | +https://developer.android.com/studio?hl=zh-cn#command-tools |
| 51 | + |
| 52 | +commandlinetools-linux-13114758_latest.zip |
| 53 | + |
| 54 | +解压 |
| 55 | + |
| 56 | +```bash |
| 57 | +unzip /your_data/commandlinetools-linux-13114758_latest.zip -d cmdline-tools |
| 58 | +``` |
| 59 | + |
| 60 | +**配置环境变量** |
| 61 | + |
| 62 | +找到`.bashrc` 是否存在 |
| 63 | + |
| 64 | +```bash |
| 65 | +ls -la ~/.bashrc |
| 66 | +``` |
| 67 | + |
| 68 | +打开文件 |
| 69 | + |
| 70 | +```bash |
| 71 | +vim ~/.bashrc |
| 72 | +``` |
| 73 | + |
| 74 | +设置环境变量 |
| 75 | + |
| 76 | +```Bash |
| 77 | +# Android SDK 环境变量设置 |
| 78 | +export ANDROID_SDK_ROOT=/your_data/android-sdk |
| 79 | +export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH |
| 80 | +``` |
| 81 | + |
| 82 | +让 `.bashrc` 立即生效: |
| 83 | + |
| 84 | +```bash |
| 85 | +source ~/.bashrc |
| 86 | +``` |
| 87 | + |
| 88 | +验证是否成功 |
| 89 | + |
| 90 | +```bash |
| 91 | +sdkmanager --list |
| 92 | +avdmanager list devices |
| 93 | +``` |
| 94 | + |
| 95 | +安装java |
| 96 | + |
| 97 | +下载jdk安装包,解压: |
| 98 | + |
| 99 | +```bash |
| 100 | +mkdir -p /tmp/jdk-17 |
| 101 | +tar -xzf /your_data/OpenJDK17U-jdk_x64_linux_hotspot_17.0.5_8.tar.gz -C /tmp/jdk-17 --strip-components=1 |
| 102 | +cp -r /tmp/jdk-17 /your_data/jdk-17 |
| 103 | +``` |
| 104 | + |
| 105 | +配置环境变量 |
| 106 | + |
| 107 | +```bash |
| 108 | +vim ~/.bashrc |
| 109 | +export JAVA_HOME=/your_data/jdk-17 |
| 110 | +export PATH=$JAVA_HOME/bin:$PATH |
| 111 | +source ~/.bashrc |
| 112 | +``` |
| 113 | + |
| 114 | +验证 |
| 115 | + |
| 116 | +```Python |
| 117 | +java -version |
| 118 | +javac -version |
| 119 | +``` |
| 120 | + |
| 121 | +## 1.3 创建 Android 虚拟设备(AVD)和安卓模拟器 |
| 122 | + |
| 123 | +安装 SDK Platform 和 System Image(Tiramisu = API 33) |
| 124 | + |
| 125 | +查看硬件设备的信息 |
| 126 | + |
| 127 | +```bash |
| 128 | +avdmanager list devices |
| 129 | +``` |
| 130 | + |
| 131 | +满足要求的硬件 |
| 132 | + |
| 133 | +```Python |
| 134 | +id: 36 or "pixel_6" |
| 135 | + Name: Pixel 6 |
| 136 | + OEM : Google |
| 137 | +``` |
| 138 | + |
| 139 | +命令行创建avd |
| 140 | + |
| 141 | +在 **Linux 系统上使用 AVD 时**,每个 **AVD(Android 虚拟设备)实例只能被一个模拟器进程使用一次**。也就是说,**只能**被一个 emulator 使用。 |
| 142 | + |
| 143 | +创建8个设备(适配batch_size) |
| 144 | + |
| 145 | +名字从 `AndroidWorldAvd_0` 到 `AndroidWorldAvd_17` |
| 146 | + |
| 147 | +设备型号为 `pixel_6` |
| 148 | + |
| 149 | +系统镜像为 `android-33`、`google_apis`、`x86_64` |
| 150 | + |
| 151 | +SD 卡大小为 512`M` |
| 152 | + |
| 153 | +一键启动: |
| 154 | + |
| 155 | +```bash |
| 156 | +bash adv.sh |
| 157 | +``` |
| 158 | + |
| 159 | +tmux一键启动8个模拟器: |
| 160 | + |
| 161 | +```bash |
| 162 | +bash start_emulators.sh |
| 163 | +``` |
| 164 | + |
| 165 | +查看是否成功 |
| 166 | + |
| 167 | +```bash |
| 168 | +avdmanager list avd |
| 169 | +``` |
| 170 | + |
| 171 | +端口 |
| 172 | + |
| 173 | +```bash |
| 174 | +启动 AndroidWorldAvd_0 | grpc=8554 | telnet=5554 |
| 175 | +启动 AndroidWorldAvd_1 | grpc=8555 | telnet=5556 |
| 176 | +启动 AndroidWorldAvd_2 | grpc=8556 | telnet=5558 |
| 177 | +启动 AndroidWorldAvd_3 | grpc=8557 | telnet=5560 |
| 178 | +启动 AndroidWorldAvd_4 | grpc=8558 | telnet=5562 |
| 179 | +启动 AndroidWorldAvd_5 | grpc=8559 | telnet=5564 |
| 180 | +启动 AndroidWorldAvd_6 | grpc=8560 | telnet=5566 |
| 181 | +``` |
| 182 | + |
| 183 | +# 2. 对外暴露请求接口 |
| 184 | + |
| 185 | +## redis配置 |
| 186 | + |
| 187 | +1. Redis 服务端(Server) |
| 188 | + |
| 189 | +```bash |
| 190 | +# Ubuntu / Debian |
| 191 | +sudo apt update |
| 192 | +sudo apt install redis-server |
| 193 | + |
| 194 | +# CentOS / RHEL |
| 195 | +sudo yum install redis |
| 196 | + |
| 197 | +#启动redis |
| 198 | +sudo systemctl enable redis-server |
| 199 | +sudo systemctl start redis-server |
| 200 | +``` |
| 201 | + |
| 202 | +2. Python Redis 客户端(库) |
| 203 | + |
| 204 | +安装redis |
| 205 | + |
| 206 | +```bash |
| 207 | +pip install redis |
| 208 | +``` |
| 209 | + |
| 210 | +3. 启动之前先清除重新添加端口 |
| 211 | + |
| 212 | + 执行py脚本 |
| 213 | + |
| 214 | + ```bash |
| 215 | + python redis_idle.py |
| 216 | + ``` |
| 217 | + |
| 218 | + 看到Redis idle port list reset: [5554, 5556, 5558, 5560, 5562, 5564, 5566, 5568] |
| 219 | + |
| 220 | + 验证是否生效 |
| 221 | + |
| 222 | + |
| 223 | + |
| 224 | + ```bash |
| 225 | + redis-cli |
| 226 | + > LRANGE android:idle_ports 0 -1 |
| 227 | + ``` |
| 228 | + |
| 229 | + |
| 230 | + |
| 231 | +## 3. 启动fastapi端口,在8000端口 |
| 232 | + |
| 233 | +/home/ipa_sudo/conda/conda3/envs/android_world/bin/换成自己的地址 |
| 234 | + |
| 235 | +```bash |
| 236 | + tmux new-session -d -s pool_api "PYTHONPATH=. exec /home/ipa_sudo/conda/conda3/envs/android_world/bin/gunicorn pool_api:app \ |
| 237 | + -k uvicorn.workers.UvicornWorker \ |
| 238 | + -w 1 --threads 1 \ |
| 239 | + --bind 0.0.0.0:8000 --timeout 500 \ |
| 240 | + --access-logfile - --error-logfile - \ |
| 241 | + --graceful-timeout 300 \ |
| 242 | + 2>&1 | tee /var/log/api_server.log" |
| 243 | +``` |
0 commit comments