2

Kitkat 使用基于 chromium 的 webview,目录“external/chromium_org”包含 chromium 的代码。

目录中有android webview的集成测试:

"external/chromium_org/android_webview/javatests".

我已经阅读了这里的 wiki(https://code.google.com/p/chromium/wiki/AndroidTestInstructions),并且我在 chromium 源目录中顺利完成了它(不在 AOSP 中,只需下载独立的 chromium)。

但是,在 AOSP/external/chromium_org 中,我无法构建测试包。第一个断言错误是缺少 NDK,我链接到独立 chromium 的 NDK。尽管如此,它仍然无法构建并出现错误:

"ninja: Entering directory `out/Debug'
 ninja: error: loading 'build.ninja': No such file or directory
"

我的问题如下:

Q1:请您指出如何构建测试包并在 AOSP 中运行 KitKat WebView 的测试?

Q2:或者,我们只能在 Chromium 源目录中构建和运行这些测试?如果是这样,我如何保证测试的 webview 与 KitKat 中使用的 webview 相同?因为 AndroidWebViewTest.apk 的目标是 AndroidWebView.apk,而不是 KitKat 系统映像中的 webview,它是由“AOSP/external/chromium_org”中的代码构建的。

Q3:如果我想确保 KitKat Chromium webview 在特定设备上运行良好,需要哪些测试用例?目前,我想在 CTS 中包含 android.webkit 和集成测试 AndroidWebViewTest.apk,这些够吗?我需要利用更多的测试用例吗?

4

1 回答 1

2

您从 AOSP/external/chromium_org 获得的代码是 Chromium 源代码的剥离版本,不能用于构建和运行测试(Android CTS 测试除外)。您需要做的是检查 Chromium 代码构建它

我使用的具体构建和调用命令是:

# Set up your environment
. build/android/envsetup.sh

# Generate the ninja files
GYP_GENERATORS="ninja" build/gyp_chromium

# Use -C out/Release for release build
ninja -C out/Debug android_webview_apk android_webview_test_apk

# Install the webview test shell
adb install out/Debug/apks/AndroidWebView.apk

# Connect a device and run tests
build/android/test_runner.py instrumentation --test-apk AndroidWebViewTest --test_data webview:android_webview/test/data/device_files

您看到的错误可能是因为您没有运行gyp生成 ninja 文件,或者没有使用该-C选项将正确的文件夹传递给 ninja。

要回答您的问题:

Q1:如上所述 - 您无法从 AOSP 结帐运行 Chromium 仪器测试。

Q2:有关运行测试的说明,请参见上文。上游 Chromium 代码显然比 AOSP/external/chromium_org 代码更新。为 WebView 做出贡献的方式是将您的补丁提交到上游 Chromium 代码,然后等待它包含在未来的 Android 版本中。不接受针对 AOSP/external/chromium_org 中代码的补丁。

不幸的是,如果您将 AOSP/external/chromium_org 代码替换为 Tip-Of-Tree Chromium 代码,它将无法编译,因为许多必要的 CL 尚未进入 frameworks/webview。WebView 团队意识到了这一点,现在最好的办法是在上游 Chromium 树中完成所有工作。

Q3:是的,这将是一个好的开始。Chromium 项目 Android 机器人运行的测试比您描述的要多:查看在Android 测试WebKit 布局测试机器人上运行的测试。不幸的是,我认为不可能有一个测试套件来保证任何代码都可以在特定的硬件上运行。

于 2013-12-09T15:53:30.360 回答