编译wpe-webkit-android的问题记录
最近打算研下 GitHub - Igalia/wpe-android: WPE WebKit for Android。
git clone之后,对应的是main分支,commit id为:
commit 53b3e13ef2c330e9335d9fdd542e5c42a559ca15 (HEAD -> main, tag: latest-preview, origin/main, origin/HEAD)
Author: Adrian Perez de Castro <aperez@igalia.com>
Date: Fri Sep 26 16:22:54 2025 +0300
[wpe] Update to WPE WebKit 2.50.0
Even when this is an update to a new release series, there are no
differences from the packaging point of view, so the version number
change is enough.
按照文档提示,从源码构建:
./tools/scripts/bootstrap.py --build --debug --arch=arm64
中途遇到一个遇到跳过,但最后一步依然报错,提示找不到libmpg123,
分析其下载日志,发现源码下载失败,进一步分析发现其提供的下载地址输入浏览器也无法下载,即:
https://sourceforge.net/projects/mpg123/files/mpg123/1.26.3/mpg123-1.26.3.tar.bz2/
要么是IP被封,要么是其自身资源有问题,反正就是不可用了。
比较奇怪的是重新执行时,脚本又说
[(86/92) libiconv -> already built]
[(87/92) mpg123 -> built]
[(88/92) gst-plugins-good-1.0 -> already built]
让AI辅助排查,定位到原因是缓存没删:
# 删除缓存
rm -rf ~/.cache/cerbero-sources/mpg123-1.26.3
# 只执行目标模块的构建,会节省很多时间
./cerbero-uninstalled -c config/cross-android-arm64.cbc buildone mpg123
找到一个可用的资源,sha256sum也能对上:
https://ftp2.osuosl.org/pub/blfs/conglomeration/mpg123/mpg123-1.26.3.tar.bz2
原计划curl下来,copy到目标位置,但docker内curl的文件总是不全,在Host下curl的文件是完整的,但在docker里面copy过去后,sha256sum也不对。
所以干脆换个思路,直接修改build/cerbero/recipes/mpg123.recipe的url字段,需要注意的是这种本地修改后,
# 执行完整脚本会导致修改被reset
./tools/scripts/bootstrap.py --build --debug --arch=arm64
# 只能执行这个命令
./cerbero-uninstalled -c config/cross-android-arm64.cbc buildone mpg123
如此,bootstrap的构建就正常了。下面开始Android部分的构建:
./gradlew assembleDebug
首先要安装一个jdk 17,再安装android-sdk,另外gradle会用cmake 3.31.1构建,但android-sdk没有这么高版本的,要自己手动去官网下载并重命名和放置在android-sdk/cmake下:
$ apt install openjdk-17-jdk
$ ls /data/research/android_sdk_for_docker/cmake/
3.10.2.4988404 3.22.1 cmake-3.28.1 cmake-3.31.1
为了方便管理环境,写个wrapper脚本:
$ cat build_apk.sh
export ANDROID_HOME=/data/research/android_sdk_for_docker
export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH
./gradlew assembleDebug
最终构建成功
> Task :wpeview:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
[Incubating] Problems report is available at: file:///data/research/wpe-android/build/reports/problems/problems-report.html
BUILD SUCCESSFUL in 2m 34s
144 actionable tasks: 141 executed, 3 up-to-date
/data/research/wpe-android (main ✗) find . -iname "*.apk"
./tools/mediaplayer/build/outputs/apk/debug/mediaplayer-debug.apk
./tools/webdriver/build/outputs/apk/debug/webdriver-debug.apk
./tools/minibrowser/build/outputs/apk/debug/minibrowser-debug.apk