WebView team maintains a “shell”--a thin interface over the WebView APIs--to exercise WebView functionality. The System WebView Shell (AKA “shell browser,” “WebView shell”) is a standalone app implemented in chromium. While often used for manual testing, we also use the shell for automated tests (see our layout and page cycler tests).
The bare minimum GN args is just target_os = "android"
. It's simplest to just reuse the same out/ folder you use for WebView or Chrome for Android.
If you‘re building for an emulator, be aware WebView shell is preinstalled with a different signing key. If you just need a WebView app, the preinstalled WebView shell may be sufficient (and you don’t need to build your own).
If you want a more up-to-date WebView shell or you want to use the convenience scripts in this guide (ex. .../system_webview_shell_apk launch <url>
), then you can workaround the signature mismatch by changing your local WebView shell's package name. Simply add the following to your GN args (run gn args out/Default
):
# Change the package name to anything that won't conflict. If you're not sure # what to use, here's a safe choice: system_webview_shell_package_name = "org.chromium.my_webview_shell"
This will let your local build install alongside the preinstalled WebView shell. If you'd like, you can disable the preinstalled shell to avoid confusing the two apps. In a terminal:
$ adb root # Make sure to specify the default package name ("org.chromium.webview_shell"), # not the one you used in the GN args above! $ adb shell pm disable org.chromium.webview_shell
$ autoninja -C out/Default system_webview_shell_apk
# Build and install $ out/Default/bin/system_webview_shell_apk install
# Launch a URL from the commandline, or open the app from the app launcher $ out/Default/bin/system_webview_shell_apk launch "https://www.google.com/" # For more commands: $ out/Default/bin/system_webview_shell_apk --help
system_webview_shell_apk
does not support modifying CLI flags. See https://crbug.com/959425. Instead, you should modify WebView's flags by following commandline-flags.md.The easiest way to workaround this is to change the shell's package name in a local build.
If you need to use the same package name (ex. you're installing an official build of WebView shell), then you can modify the system image.
-writable-system
option as per the Writable system partition instructions.# Remount the /system partition read-write $ adb root $ adb remount # Get the APK path to the WebView shell $ adb shell pm path org.chromium.webview_shell package:/system/app/Browser2/Browser2.apk # Use the APK path above to delete the APK $ adb shell rm /system/app/Browser2/Browser2.apk # Restart the Android shell to "forget" about the WebView shell $ adb shell stop $ adb shell start