step1:安装java环境:略
step2:安装sdk环境:
#(1)下载sdk包
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
# (2)解压
unzip /opt/sdk/sdk-tools-linux-4333796.zip
step3:下载模拟器的镜像和工具
#如果没有配置sdk的环境 那么到 sdk/tools/bin 目录下操作
#(1)查看可选项
./sdkmanage --list
#(2)下载选择的
./sdkmanager "system-images;android-24;default;armeabi-v7a" "patcher;v4" "build-tools;29.0.1" "emulator" "platform-tools" "platforms;android-24 "
step4:create 模拟器
./avdmanager create avd -k "system-images;android-24;default;armeabi-v7a" -n "24darm"
step5:配置模拟器运行环境
#运行emulator 检查依赖关系
./emulator -avd 24darm
#可能会报依赖的错误
ldd 报错的.so
#ubuntu使用 apt-file search 依赖的.so 可以查到那个包里面可以安装 一个不行就换个。。
#centos yum whatprovides 依赖的.so 用之前需要安装yum-utils
#一些so的安装方式
libX11.so.6 -> yum -y install libX11
libGL.so.1 -> yum install mesa-libGL
libXcomposite.so.1 -> yum install libXcomposite.x86_64
libXcursor.so.1 -> yum install libXcursor
#其中有一些包是在sdk/emulator/lib64 文件夹中 需要将其添加到系统公共库中
#在/etc/ld.so.conf.d/文件夹下新建 sdk.conf
touch /etc/ld.so.conf.d/sdk.conf
#添加路径
/opt/sdk/emulator/lib64
/opt/sdk/emulator/lib64/qt/lib
#使其生效
ldconfig
#建立软链接(/opt/sdk/emulator/lib64/qt/lib)
ln -sf libxkbcommon.so.0.0.0 libxkbcommon.so.0
step6:启动模拟器 无界面
nohup ./emulator -avd 24darm -gpu off -no-window > 24darm.log 2>&1 &
启动后使用命令exit退出 直接点x关闭会使模拟器关闭 nohup命令的关系
ps:一些其他的启动参数:
https://android-doc.com/tools/help/emulator.html
或者emulator -help 查看
step7:安装启动应用 pm am 略
step8:建立本地映射
#查看当前的模拟器
adb devices
#emulator-5554 device
#查看emulator的token
cat /root/.emulator_console_auth_token
#编辑映射
telnet localhost 5554
#在telnet中编辑
auth 查到的token
redir add tcp:宿主机端口:模拟器端口
#查看结果
redir list
#tcp:8080 => 8080 映射成功
#此时在本地使用 localhost或者127.0.0.1 端口号已经可以访问模拟器中的服务
step9:添加上层网络的映射
因为telnet的映射只是映射到localhost 上层的网络 比如路由分给服务器的192.168.1.2,使用这种IP是无法访问到模拟器中的服务的。
使用nginx将192.168.1.2的上层网络 的端口在 代理到 localhost的本地端口 就可以访问到 模拟器中的服务了
一个新的错误
错误信息:
./emulator -avd 24darm
emulator: WARNING: encryption is off
emulator: INFO: QtLogger.cpp:68: Warning: could not connect to display ((null):0, (null))
emulator: INFO: QtLogger.cpp:68: Info: Could not load the Qt platform plugin "xcb" in "../emulator/lib64/qt/plugins" even though it was found. ((null):0, (null))
Fatal: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb.
((null):0, (null))
emulator: INFO: QtLogger.cpp:68: Fatal: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb.
((null):0, (null))
解决方式:
上面使用的命令是 /tools/emulator
将命令替换为 /emulator/emulator
就可以解决这个问题