编译wpe-webkit-android的问题记录

本文约 800 字,阅读需 2 分钟。

最近打算研下 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
总阅读量次。