在设置过程中,系统会根据编译时填充的系统属性值 (ro.com.google.clientidbase
) 来设置客户端 ID 值。客户端 ID 值将存储在内容提供程序中,以供所有 Google 应用访问。系统属性上的 ro
前缀表示该属性为只读属性,且无法修改(在设备上运行时)。
使用客户端 ID 矩阵识别客户端 ID
Google 使用客户端 ID 值来跟踪应用的使用情况,在某些情况下,Google 也会将其用于跟踪每个合作伙伴的收益分成。合作伙伴必须为每次 Android 产品分发设置客户端 ID 值。由于某些合作伙伴既是移动网络运营商 (MNO),又是移动 OEM,因此为每个应用配置正确的客户端 ID 至关重要。
运营商和 OEM 均拥有由 Google 提供的特定客户端 ID。客户端 ID 通常采用 android-PARTNERNAME
的格式。在运营商和 OEM 确定必须在各发布设备上使用哪个客户端 ID 之后,OEM 负责在编译时设置正确的客户端 ID。
对于特定的 Android 产品分发,客户端 ID 矩阵会提供客户端 ID 值。客户端 ID 矩阵会列出哪些客户端 ID 值经批准可用于该矩阵中所列的相应运营商。
在查看该矩阵时,请注意以下几点:
- OEM 客户端 ID 会指明移动 OEM 应将相应值设置为 Google 根据 MADA 提供的特定客户端 ID。
- {country} 记号应完全按照说明进行设置。Google 应用会在运行时填写相应的国家/地区。
- 以下属性已被弃用,因此不用再指定:
ro.com.google.clientidbase.gmm
ro.com.google.clientidbase.vs
ro.com.google.clientidbase.yt
该矩阵会经常更新,因此请时常返回查看。要配置自动更改通知,请在专用浏览器窗口中打开该矩阵,然后依次选择“工具”>“通知规则”。
设置客户端 ID
通过将以下内容添加到您的产品配置文件中(使用客户端 ID 矩阵中的正确值替换突出显示的客户端 ID 值),在编译时设置客户端 ID 属性:
$(call inherit-product, vendor/google/products/gms.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
# Overrides
PRODUCT_BRAND := Acme
PRODUCT_NAME := MyDevice
PRODUCT_PROPERTY_OVERRIDES += \
ro.com.google.clientidbase=android-acme
基本客户端 ID (clientidbase
) 可用于为每个 GMS 应用自动生成实际客户端 ID。系统会为每个应用自动生成并添加应用前缀。
必须先设置设备上的客户端 ID 才能触发 BOOT_COMPLETED 广播,并且在下次恢复设备的出厂设置之前,此 ID 必须一直保持不变。
验证客户端 ID
要检查您的设备目前使用的实际客户端 ID,请在您的计算机上安装 adb,然后在启用 USB 调试功能的情况下开启设备上的开发者选项。
在计算机上运行以下命令(在设备已连接到计算机的前提下):
$ adb shell content query --uri content://com.google.settings/partner
Row: 0 _id=59, name=network_location_opt_in, value=1
Row: 1 _id=69, name=use_location_for_services, value=1
Row: 2 _id=1158, name=data_store_version, value=3
Row: 3 _id=1159, name=client_id, value=android-acme
Row: 4 _id=1160, name=search_client_id, value=ms-android-acme
Row: 5 _id=1161, name=chrome_client_id, value=ms-android-acme
Row: 6 _id=1162, name=maps_client_id, value=gmm-android-acme
Row: 7 _id=1163, name=youtube_client_id, value=mvapp-android-acme
Row: 8 _id=1164, name=market_client_id, value=am-android-acme
Row: 9 _id=1165, name=wallet_client_id, value=wallet-android-acme
替换客户端 ID
您可以替换应用的特定客户端 ID,使其比基本客户端 ID 更精确(可用于隔离应用以实现收益分成)。为此,请在 mydevice.mk
中添加下列突出显示的编译属性:
$(call inherit-product, vendor/google/products/gms.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
# Overrides
PRODUCT_BRAND := Acme
PRODUCT_NAME := MyDevice
PRODUCT_PROPERTY_OVERRIDES += \
ro.com.google.clientidbase=android-acme \
ro.com.google.clientidbase.ms=android-aaaa \
ro.com.google.clientidbase.yt=android-abcd \
ro.com.google.clientidbase.am=android-efgh \
ro.com.google.clientidbase.gmm=android-mnop \
您可以使用之前显示的相同 adb 命令来确认正在使用的实际客户端 ID。