版本比较

密钥

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

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. 编译源代码

  1. 下载Android SDK,建议使用Android Studio下载,SDK的API级别为30(Android 11),参见SDK 平台。宿主机必须为x86_64环境

  2. 删除文件名包含非ASCII码的文件,编译环境不支持非ASCII文件名,运行一次即可,需要root权限,命令(rm -f project/jni/application/xserver/xserver/host-build/data/usr/lib/ssl/certs/NetLock_Arany_*.pem)

  3. 设置SDK根目录ANDROID_SDK环境变量,默认在$HOME/Android/Sdk

  4. 按照如下脚本执行,(需要跑多次,一次很难成功,原因未知)

...