簡體   English   中英

無法加載 WebView:java.lang.UnsatisfiedLinkError,庫是 64 位而不是 32 位

[英]Cannot load WebView: java.lang.UnsatisfiedLinkError, library is 64-bit instead of 32-bit

我啟動了一個具有 android 本機 webView(android.webkit.WebView) 的 Activity,在 64 位設備中出現以下錯誤。

error instantiating provider                                                                 java.lang.RuntimeException: Cannot load WebView
at org.chromium.android_webview.AwBrowserProcess.loadLibrary(AwBrowserProcess.java:52)

Caused by: org.chromium.base.library_loader.ProcessInitException

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so" is 32-bit instead of 64-bit

請提供一些有價值的建議。

在設備場中的遠程設備上運行測試時,我遇到了同樣的錯誤。 這是一台運行 Android 6 的三星 S6 設備。我認為兩者都不是特別具體,而且這個問題很可能發生在各種設備和操作系統版本上。

我們的自動化測試因同樣的錯誤而失敗:

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so" is 32-bit instead of 64-bit
at java.lang.Runtime.loadLibrary(Runtime.java:372)

這些錯誤已經發生了好幾天。 我設法以交互方式連接到設備,發現我們的應用程序無法在其上啟動。 然后,我在 Google Play 中查看,發現有各種更新待定,包括 Android 系統 WebView 的更新,最后一次更新是在 31 周前。

我決定更新那一項,然后再次嘗試運行我們的應用程序。 我們的應用程序現在可以工作了。

線索是上面@Ironman 提供的鏈接中的討論
https://bugs.chromium.org/p/chromium/issues/detail?id=547842其中包括已從 32 位操作系統升級到 64 位操作系統的設備,但不知何故 Google Play 仍在發送 32 WebView 的-bit 二進制文件。 不管...關鍵是問題與 WebView 組件的舊的、不正確的二進制版本有關。

順便說一句,我認為當我們在應用程序的 gradle 配置中更新各種組件和 gradle 時,問題就出現了。 https://github.com/kiwix/kiwix-android/commit/1e03a4ae72f8fe5a9a133913e110add7f3a37631

04-12 17:40:09.605  7979  7979 E dex2oat : Failed to create oat file: /data/dalvik-cache/arm64/data@app@com.google.android.webview-1@base.apk@classes.dex: Permission denied
04-12 17:40:09.615  7946  7946 W art     : Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=speed --instruction-set-variant=generic --instruction-set-features=default --dex-file=/data/app/com.google.android.webview-1/base.apk --oat-file=/data/dalvik-cache/arm64/data@app@com.google.android.webview-1@base.apk@classes.dex) because non-0 exit status
04-12 17:40:09.715  7946  7946 E cr_LibraryLoader: Unable to load library: webviewchromium
04-12 17:40:09.715  7946  7946 E WebViewFactory: error instantiating provider
04-12 17:40:09.715  7946  7946 E WebViewFactory: java.lang.reflect.InvocationTargetException
-- cut --
04-12 17:40:09.715  7946  7946 E WebViewFactory: Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so" is 32-bit instead of 64-bit
-- cut --
04-12 17:40:09.725  7946  7946 E AndroidRuntime: Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so" is 32-bit instead of 64-bit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM