...
xserver-xsdl实现了在Android环境下运行xserver显示linux图形桌面程序的功能
1. 准备源代码
最新代码在GitHub上,xserver-xsdl代码库,该代码库只有源码,最新代码在xsdl-1.20,不包含编译时的依赖包,基本编译不出来。
...
XServer-XSDL-1.20.51中包含依赖包源码编译生成的中间文件,如.libs,.deps,.o等,删除这些文件会导致编译失败,其编译工程可能存在一些文件有待解决
使用xserver-xsdl最新代码代替XServer-XSDL-1.20.51中的相关部分,其编译依赖报错(xcb)等
2. 构建编译环境镜像
根据Dockerfile构建编译环境镜像:docker build -f xserver-xsdl.docker -t xserver-xsdl.image . 若镜像存在,可省略该步。
...
当前xserver-xsdl版本支持ndk23编译
3. 启动编译环境
几个建议:
将home目录映射至容器中,容器中的用户名即可与主机用户名相同,也可以统一为xsdl,只需确保用户名和用户组的id与主机一致
源代码可放在用户的home目录下,Android的SDK也可以放在用户home目录下
第一次进入容器后,添加用户。首先在主机上使用id命令找到用户名和用户组的id,然后在容器中指定id添加用户:
假设主机上的用户组id为1000,则使用groupadd -g 1000 xsdl添加xsdl用户组
假设主机上的用户名id为1000,则使用useradd -s /bin/bash -u 1000 -g xsdl xsdl
使用su xsdl切换至xsdl用户
...
或者直接使用指定的uid和gid登录(docker run --rm -it -u `id -u`:`
id -g` -v $HOME:/home/xsdl -w /home/xsdl xserver-xsdl.docker /bin/bash)则不需要上述操作.
4. 编译源代码
下载Android SDK,建议使用Android Studio下载,SDK的API级别为30(Android 11),参见SDK 平台。宿主机必须为x86_64环境
删除文件名包含非ASCII码的文件,编译环境不支持非ASCII文件名,运行一次即可,需要root权限,命令(rm -f project/jni/application/xserver/xserver/host-build/data/usr/lib/ssl/certs/NetLock_Arany_*.pem)
设置SDK根目录ANDROID_SDK环境变量,默认在$HOME/Android/Sdk
按照如下脚本执行,(需要跑多次,一次很难成功,原因未知)
...