Skip to content

Commit d10baed

Browse files
Add Android Environment (Simple-Efficient#38)
* Add Android environment README * Set Up the Android Emulator Environment * Add Android environment module under environments/ * Update Android environment code
1 parent 319f447 commit d10baed

27 files changed

+3261
-3
lines changed

docs/README_android.md

Lines changed: 243 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
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

Comments
 (0)