预加载设备时,您可以在 /system
(ROM) 或 /data
分区上预装 GMS 中的 Google 应用(.apk 文件)。由于 Android 编译系统是模块化的,因此您只需放入二进制文件和 makefile 即可在细分版本中包含 GMS 应用。
添加 GMS 应用
按照下面的步骤操作,将 GMS 添加到您的设备中:
- 在 Android 根目录下创建
vendor/
子目录。 - 下载和解压缩适用于您的 Android 版本的 GMS 软件包,并将其放入新建的
vendor/
子目录中。解压后的结构类似于以下结构:vendor/google
apps/
frameworks/
products/
updatecmds/
- 要添加所有 Google 应用,请在给定设备的产品 makefile(例如
vendor/acme/products/mydevice.mk
)中添加以下行: -
$(call inherit-product, vendor/google/products/gms.mk)
例如,Nexus 5 (hammerhead) 设备 makefile (
device/lge/hammerhead/full_hammerhead.mk
) 如下所示:# 从常用开放源代码产品配置沿用
$(call inherit-product,$(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)PRODUCT_NAME := full_hammerhead
PRODUCT_DEVICE := hammerhead
PRODUCT_BRAND := Android
PRODUCT_MODEL := AOSP on HammerHead
PRODUCT_MANUFACTURER := LGE
PRODUCT_RESTRICT_VENDOR_FILES := true$(call inherit-product, device/lge/hammerhead/device.mk)
$(call inherit-product-if-exists, vendor/lge/hammerhead/device-vendor.mk)
$(call inherit-product, vendor/google/products/gms.mk)
自定义 GMS
要自定义 GMS,请修改 vendor/google/products/gms.mk
中的 GMS makefile(包含在 GMS 软件包中)。makefile 包含强制性和可选的 GMS 产品包列表,以及 GMS 编译中使用的编译设置和资源叠加层。
使用 gms.mk
进行以下更改:
- 添加或移除可选软件包。
- 添加或移除软件包所需的 jar 文件库和其他资源。
- 添加或移除与某些软件包关联的资源叠加层。
有关详情,请参阅自定义应用。
添加或移除软件包
要在编译中添加或移除软件包,请在 gms.mkconfiguration
文件的 PRODUCT_PACKAGES 列表中添加或移除产品包名称。例如:
# GMS optional application packages
PRODUCT_PACKAGES += \
AndroidForWork \
CalendarGoogle \
CloudPrint \
DeskC
lockGoo
gle \
EditorsDocs \
EditorsSheets \
EditorsSlides \
FaceLock \
GoogleCamera \
GoogleHome \
GoogleTTS \
Keep \
LatinImeGoogle \
NewsWeather \
TagGoogle \
talkback
从上面的列表中删除一行即可从设备上的 GMS 中排除相应的应用。
可用软件包
可用的 GMS 软件包位于 vendor/google/apps
中,其中包含每个 GMS 应用的子目录。子目录包含以下文件:
- 相应软件包的 APK 文件集。其中包括适用于不同处理器架构 (ABI) 的不同 APK 文件,具体因应用和不同的屏幕分辨率而异。
- 充当软件包的配置 makefile 的
Android.mk
文件。 - 用于编译软件包的依赖项,例如共享库、资源叠加层或支持的 APK 文件。
从 Android 5.0 开始,每个 ABI 特定文件都包含在一个分发包中。Make 文件会根据设备定义选择正确的 ABI,并且设备系统映像仅包含设备的相关文件。
查找软件包
要查找每个应用的可用软件包,请查看该应用的 Android.mk
文件并搜索该文件中列出的 LOCAL_MODULES
。Chrome 搜索示例:
/vendor/google$ cat Chrome/Android.mk | grep "LOCAL_MODULE "
LOCAL_MODULE := Chrome
LOCAL_MODULE := ChromeWithBrowser
结果显示有两个适用于 Chrome 的软件包:
Chrome
。当 Chrome 是设备上加载的唯一浏览器时使用。ChromeWithBrowser
。在与 Chrome 一起加载其他浏览器时使用。
要确定每个应用所需的支持库,请查找针对每个 LOCAL_MODULE
列出的 LOCAL_REQUIRED_MODULES
。例如,对于 Chrome
软件包:
LOCAL_REQUIRED_MODULES := BrowserProviderProxy PartnerBookmarksProvider