您的位置:首页 > 移动开发

关于7.0去掉Chrome后,平台默认浏览器报错webview not installed的问题

2017-10-23 14:05 711 查看

问题描述

最近有项目需要android 7.0中去掉chrome。

但是去掉chrome后发现平台默认的Browser浏览器老是报错

01-01 08:27:32.073  3880  3880 D AndroidRuntime: Shutting down VM
01-01 08:27:32.074  3880  3880 E AndroidRuntime: FATAL EXCEPTION: main
01-01 08:27:32.074  3880  3880 E AndroidRuntime: Process: com.android.browser, PID: 3880
01-01 08:27:32.074  3880  3880 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}: android.util.AndroidRuntimeException: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.ActivityThread.-wrap12(ActivityThread.java)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:110)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:203)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:6251)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
01-01 08:27:32.074  3880  3880 E AndroidRuntime: Caused by: android.util.AndroidRuntimeException: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:371)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.webkit.CookieManager.getInstance(CookieManager.java:39)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at com.android.browser.BrowserSettings.syncSharedSettings(BrowserSettings.java:410)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at com.android.browser.BrowserSettings.setController(BrowserSettings.java:171)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at com.android.browser.Controller.<init>(Controller.java:331)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at com.android.browser.BrowserActivity.createController(BrowserActivity.java:145)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at com.android.browser.BrowserActivity.onCreate(BrowserActivity.java:130)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.Activity.performCreate(Activity.java:6666)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    ... 9 more
01-01 08:27:32.074  3880  3880 E AndroidRuntime: Caused by: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.webkit.WebViewFactory.getWebViewContextAndSetProvider(WebViewFactory.java:270)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:330)
01-01 08:27:32.074  3880  3880 E AndroidRuntime:    ... 19 more
01-01 08:27:32.076   966  1357 W ActivityManager:   Force finishing activity com.android.browser/.BrowserActivity


问题解决

后来发现时webviewGoogle 编译Android.mk的问题。

###############################################################################
# WebView Chromium
LOCAL_PATH := $(call my-dir)

my_archs := arm arm64 x86 x86_64
my_src_arch := $(call get-prebuilt-src-arch, $(my_archs))

# make sure to include correct WebView binary: full or stub
_list_of_old_api_levels := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
ifneq (,$(filter $(PLATFORM_SDK_VERSION),$(_list_of_old_api_levels)))
# WebView apks in this folder are for N or later platforms only, stop building
$(error PLATFORM_SDK_VERSION must be equal to or greater than 24)
endif

_ro_property_string := $(filter ro.product.first_api_level=%,$(ADDITIONAL_BUILD_PROPERTIES))

ifdef _ro_property_string
_first_api_level := $(word 2,$(subst =,$(space),$(_ro_property_string)))
else
# if the first_api_level property is undefined, this is new launch
_first_api_level := $(PLATFORM_SDK_VERSION)
endif

# preload WebView full apk by default
_gms_preload_webview_type := full

ifneq ($(filter Chrome,$(ALL_MODULES)),)
# Chrome browser is included in this build
ifeq (,$(filter $(_first_api_level),$(_list_of_old_api_levels)))
# first_api_level is equal to or greater than 24
# SUN:jicong.wang add for remove chrome start
ifeq ($(strip $(SUN_REMOVE_CHROME)),true)
_gms_preload_webview_type := full
else
_gms_preload_webview_type := stub
endif
# SUN:jicong.wang add for remove chrome end
endif
endif

include $(CLEAR_VARS)
LOCAL_MODULE := WebViewGoogle
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE :=
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_OVERRIDES_PACKAGES := webview
$(info preloading WebView $(_gms_preload_webview_type) apk.)
ifeq "$(_gms_preload_webview_type)" "full"
LOCAL_SRC_FILES := $(LOCAL_MODULE)_$(my_src_arch).apk
else ifeq "$(_gms_preload_webview_type)" "stub"
LOCAL_SRC_FILES := WebViewStub.apk
endif

LOCAL_MULTILIB := both
LOCAL_REQUIRED_MODULES := \
libwebviewchromium_loader \
libwebviewchromium_plat_support
include $(BUILD_PREBUILT)


我们添加一个

# SUN:jicong.wang add for remove chrome start
ifeq ($(strip $(SUN_REMOVE_CHROME)),true)
_gms_preload_webview_type := full
else
_gms_preload_webview_type := stub
endif
# SUN:jicong.wang add for remove chrome end


让webviewGoogle 编译时用full的apk就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: