SystemWebView64 should contain armeabi-v7a?

43 views
Skip to first unread message

Jeffrey Blattman

unread,
Sep 11, 2025, 5:11:16 AMSep 11
to android-webview-dev
Disclaimer: very new to chromium.

We have very old Android devices (A10), and we need to update the webview to something modern. Not even clear to me if that's possible, but I'm trying.

I started with a recent stable (140.xxx). When I run it on the device, I get:

09-10 13:54:08.557  8600  8635 E AndroidRuntime: Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/product/app/webview/webview.apk"],nativeLibraryDirectories=[/system/product/app/webview/lib/arm, /system/product/app/webview/webview.apk!/lib/armeabi-v7a, /system/lib, /system/product/lib, /system/lib, /system/product/lib]]] couldn't find "libc++_chrome.so"

Reading:

it tells me that the SystemWebView64.apk should contain both the 32 and 64 bit libs, but when I unzip it, I only see .so files under: lib/arm64-v8a/... So something seems wrong?

In our existing code base, external/chromium-webview/prebuilt/arm64/webview.apk does contain both 32 and 64 bit .so files.

$ unzip -l webview.apk |grep "\.so"
 77235688  2001-01-01 00:00   lib/arm64-v8a/libwebviewchromium.so
     5932  2001-01-01 00:00   lib/armeabi-v7a/libcrashpad_handler_trampoline.so
 46144708  2001-01-01 00:00   lib/armeabi-v7a/libwebviewchromium.so

Any help is appreciated.


Nate Fischer

unread,
Sep 11, 2025, 2:51:22 PMSep 11
to Jeffrey Blattman, android-webview-dev, Alex Mitra, Ziad Youssef
I think SystemWebView64 is the variant which is 64-bit-only, and at some point someone changed the build scripts to alias "system_webview_apk" to point to the 64-bit-only variant. This is the right choice for some devices, but it's not right for what you're trying to do. I think you'll want something like SystemWebView6432 instead.

Can you try compiling "autoninja -C out/Default system_webview_64_32_apk" instead? You may also need to add `enable_secondary_android_abi = true` to your GN args file before compiling.

I'm CC'ing some of our teammates who have looked into this and may be able to advise you better.

Nate Fischer | Software Engineer | ntf...@google.com



--
You received this message because you are subscribed to the Google Groups "android-webview-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-webview...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/android-webview-dev/21a7c9c9-b6a6-4728-a440-98f40216bc1en%40chromium.org.

Jeffrey Blattman

unread,
Sep 11, 2025, 3:01:18 PMSep 11
to android-webview-dev, ntf...@google.com, android-webview-dev, Alex Mitra, ziady...@google.com, Jeffrey Blattman
Thank you Nate, yes that was it. I had discovered the system_webview_64_32_apk target slightly before your response, and that appears to be enough. Would be nice if the possible targets were documented.

Just a curiosity, but the content of the 64 variant APK was much different. There were tens of .so files. Whereas the 6432 variant has just libwebviewchromium.so (for both architectures). Seems like there's some other fundamental difference. 

Ziad Youssef

unread,
Sep 11, 2025, 3:07:03 PMSep 11
to Jeffrey Blattman, android-webview-dev, ntf...@google.com, Alex Mitra
"system_webview_apk" will point to the 64-bit-only variant only for debug builds. I believe we made this change to make debug builds faster for quicker development. For release builds, "system_webview_apk" points to "system_webview_32_64_apk" by default.

If you are really planning to use this WebView, you should add a bunch of gn args used for release builds (e.g. is_debug = false). Debug builds have worse performance than release builds. 

There were tens of .so files.
This is interesting. Could you share this list? 

Nate Fischer

unread,
Sep 11, 2025, 3:07:21 PMSep 11
to Jeffrey Blattman, android-webview-dev, Alex Mitra, ziady...@google.com
Can you check that you've configured these two options in your GN args file?

```
is_debug = false
is_official_build = true
```

"Component build" is our term for when there are lots of .so files. This has some advantages for development and fast iteration, but when you're building something to ship on devices then you'll want to turn it off. The combination of those two options should turn it off. If that doesn't do the trick, then try `is_component_build = false` in the GN args. https://chromium.googlesource.com/chromium/src/+/HEAD/docs/component_build.md has technical info if you're just curious and want to read more.

Nate Fischer | Software Engineer | ntf...@google.com


Jeffrey Blattman

unread,
Sep 11, 2025, 3:16:58 PMSep 11
to android-webview-dev, ntf...@google.com, android-webview-dev, Alex Mitra, ziady...@google.com, Jeffrey Blattman
These are my args:

target_os = "android"
target_cpu = "$TARGET_CPU"
is_official_build = true
v8_builtins_profiling_log_file = ""
clang_use_default_sample_profile = false
cc_wrapper = "/usr/bin/ccache"
android_channel = "stable"
webview_devui_show_icon = false


I will add is_debug=false. Let me know if I'm missed anything else.

Thank you all for the help!

Nate Fischer

unread,
Sep 11, 2025, 3:24:13 PMSep 11
to Jeffrey Blattman, android-webview-dev, Alex Mitra, ziady...@google.com
You should just copy all the args in https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/aosp-system-integration.md#choosing-build-options (the large code block in the section I linked).

You can add more options from there (see the sub-sections below that), but the starting code block is a solid starting point. I'm not familiar with all of the GN args you specifically mentioned so it's hard for me to say whether these are compatible with WebView or not. You're welcome to try though and keep using them if they work for what you need. But I still recommend trying out as simple as possible and then adding more build options from that point.

If you find that a build option is incompatible, you can let us know. We can't promise to support everything, but if there's a valid use case for a particular option then we can at least route this request to the relevant team.

Nate Fischer | Software Engineer | ntf...@google.com


Jeffrey Blattman

unread,
Sep 17, 2025, 12:55:41 PM (10 days ago) Sep 17
to android-webview-dev, ntf...@google.com, android-webview-dev, Alex Mitra, ziady...@google.com, Jeffrey Blattman
Thanks again. I switched to the args in https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/aosp-system-integration.md#choosing-build-options and it works. 

For anyone that runs across this thread, I also had to update .gclient to have:
...
"custom_vars": {
    "checkout_pgo_profiles": True, <--------- This part
},

I assume this is because of setting the "release" args.

Nate Fischer

unread,
Sep 17, 2025, 12:57:22 PM (10 days ago) Sep 17
to Jeffrey Blattman, android-webview-dev, Alex Mitra, ziady...@google.com
Thanks for mentioning the gclient file. We can definitely update our documentation page to include that.

Glad to hear you got something working!

Nate Fischer | Software Engineer | ntf...@google.com


Reply all
Reply to author
Forward
0 new messages