WebViewGoogle和Chrome的踩坑总结

本文详细介绍了在不同Android版本中,WebViewGoogle与Chrome的版本适配策略。针对firstapi<24的设备,需确保两者版本一致;对于firstapi>=24的设备,国际版预置Chrome与WebViewStub,国内版仅预置WebViewGoogle,且版本需与Chrome一致。特别注意Android7.1设备的firstapi级别,避免CTS和GTS验证失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先看一下谷歌的叙述

On Android 7.x where first api < 24, you should preinstall a regular APK of both Chrome and WebView, of the same version as each other.
On Android 7.x where first api >= 24, you should preinstall Chrome, and the WebView stub 0.0.0.1.
On Android 8.x and later, you should preinstall Chrome and the WebView stub of the same version as Chrome.

在GMS中WebViewGoogle和Chrome是比较特殊的一对App,更新的时候一不小心就可能造成CTS fail和GTS fail,影响比较大。

对于first api < 24 (一般是 android 7.0 ,7.1的机型 ),只要WebViewGoogle和Chrome的版本保持一致就行了。

对于 first api >= 24 ,有如下总结点:

  1. 国际版预置的是Chrome 和WebViewStub ,国内版没有Chrome,只预置WebViewGoogle
  2. 在android 7.1 上,WebViewStub的版本是0.0.0.1, android 8.x and later WebViewStub已经有自己的版本且要与Chrome的版本一致。

还有一点必须要注意(亲自踩过坑):

在Android 7.1上的机型,有的first api 是23,有的是25,然而我们vendor/google是共分支,所以更新的时候要注意:

  1. WebViewGoogle和Chrome都要更新且版本保持一致,以使用于first api是23的机型。
  2. WebViewStub 保持不变或者更新为一个版本为0.0.0.1的apk(现在比较难找到这样的apk),以适用于first api为25的机型。
    So,没什么必要,不要更新android 7.x and before 机型的Chrome和WebView。

查看机器的first api :adb shell getprop ro.product.first_api_level

在android 9.0 和 2018-10之后的android 8.x ,WebViewGoogle和WebViewStub定义成两个module,Chrome把WebViewStub当成依赖并覆盖WebViewGoogle。更简析明了。代码如下:

###############################################################################
# WebView Chromium
LOCAL_PATH := $(call my-dir)
 
my_archs := arm arm64 x86 x86_64
my_src_arch := $(call get-prebuilt-src-arch, $(my_archs))
 
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
LOCAL_SRC_FILES := $(LOCAL_MODULE)_$(my_src_arch).apk
LOCAL_MULTILIB := both
LOCAL_REQUIRED_MODULES := \
    libwebviewchromium_loader \
    libwebviewchromium_plat_support
include $(BUILD_PREBUILT)
 
include $(CLEAR_VARS)
LOCAL_MODULE := WebViewStub
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
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MULTILIB := both
LOCAL_REQUIRED_MODULES := \
    libwebviewchromium_loader \
    libwebviewchromium_plat_support
include $(BUILD_PREBUILT)

###############################################################################
# Chrome
LOCAL_PATH := $(call my-dir)
 
my_archs := arm arm64 x86 x86_64
my_src_arch := $(call get-prebuilt-src-arch, $(my_archs))
 
include $(CLEAR_VARS)
LOCAL_MODULE := Chrome
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 := WebViewGoogle
LOCAL_SRC_FILES := $(LOCAL_MODULE)_$(my_src_arch).apk
LOCAL_REQUIRED_MODULES := WebViewStub BookmarkProvider PartnerBookmarksProvider
LOCAL_MODULE_TARGET_ARCH := $(my_src_arch)
-include $(MIUI_PREINSTALL_APP_MODULE_PATH_MK)
LOCAL_DEX_PREOPT := false
LOCAL_MULTILIB := both
include $(BUILD_PREBUILT)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值