zoukankan      html  css  js  c++  java
  • Android 9.0 导入GMS组件及Google Play Store

    一、Android P之后的差异

    可查看GMS P Initial Release Notes 了解:

    1、P上增加了一些core app :AndroidPlatformServices、GoogleRestore、Device Health Services (Turbo)

    2、GoogleContacts is Non-privileged ,其实2018-10 GMS 开始 8.1上也不再是特权app了。

    3、AndroidPlatformServices、GoogleRestore 在P之前都是GmsCore的一部分,9.0 and later 分离出来了

    4、关于Turbo这个,在原生Android one上是必须预置的,详细可参考文档Integrating Turbo apk - 20180816.pdf

    其他一些区别包括EEA的都可以看相关Release Notes :https://support.google.com/androidpartners_gms/answer/6173316?hl=en&ref_topic=6173346

    二、下载GMS刷机包

    下载网址: https://opengapps.org/ 根据API,platform,variant下载合适的gms包。

    Open Gapps各版本差异

    OpenGApps有几个不同的版本,super、stock、full、mini、micro、nano、pico,很多人不知道差别是什么,这里说明一下

    sup

    包含了所有 GApps ,像韩语日语中文拼音中文注音输入法等。(请注意:如果你是用的是基于原生的 ROM ,本版本会替换相机,通讯录等等所有有关应用)。体积1G左右,如果System分区剩余空间不够,就会刷入失败。

    stock

    类似于 Google Pixel 出厂内置的 GApps ,相比 super 版少了其他语种的输入法以及 Google 地球等。(请注意:如果你是用的是基于原生的 ROM ,本版本会替换相机,通讯录等等所有有关应用)。体积820M~840M左右,如果System分区剩余空间不够,就会刷入失败。

    full

    与 stock 版所包含的内容相同,但此版本不会替换手机原本的应用。体积670~690M左右,如果System分区剩余空间不够,就会刷入失败。

    mini

    包含基础的 Google 服务框架,以及一些影响力较大的 GApps ,相比 full 版去掉了 Docs 等应用。体积370M~390M左右,如果System分区剩余空间不够,就会刷入失败。

    micro

    包含基础的 Google 服务框架和 Gmail 等常见 GApps。体积190~210M左右,如果System分区剩余空间不够,就会刷入失败。

    nano

    包含基础的 Google 服务框架,但不会有其他 不必要的 GApps。体积160M~180M左右,如果System分区剩余空间不够,就会刷入失败。

    pico

    包含最迷你的 Google 服务框架,但由于框架并非完整,部分 GApps 可能无法运行。体积110~120M左右,如果System分区剩余空间不够,就会刷入失败。

     

    三. 预置

     下载版本 open_gapps-arm-9.0-stock-20201223,解压后内容如下:

    Core和Optional目录下为谷歌服务核心文件和应用,需要预置到源码中。

    GApps目录下为一些功能应用,可不预置到源码中。

    为了整合到系统源码,提取需要的文件整理后目录如下:

    ├─gms
    │  ├─app
    │  │  ├─CalculatorGooglePrebuilt
    │  │  │      Android.mk
    │  │  │      CalculatorGooglePrebuilt.apk
    │  │  │
    │  │  ├─CalendarGooglePrebuilt
    │  │  │      Android.mk
    │  │  │      CalendarGooglePrebuilt.apk
    │  │  │
    │  │  ├─Chrome
    │  │  │      Android.mk
    │  │  │      Chrome.apk
    │  │  │
    │  │  ├─Drive
    │  │  │      Android.mk
    │  │  │      Drive.apk
    │  │  │
    │  │  ├─GoogleContactsSyncAdapter
    │  │  │      Android.mk
    │  │  │      GoogleContactsSyncAdapter.apk
    │  │  │
    │  │  ├─GoogleExtShared
    │  │  │      Android.mk
    │  │  │      GoogleExtShared.apk
    │  │  │
    │  │  └─LatinIMEGooglePrebuilt
    │  │          Android.mk
    │  │          LatinIMEGooglePrebuilt.apk
    │  │
    │  ├─priv-app
    │  │  ├─AndroidMigratePrebuilt
    │  │  │      Android.mk
    │  │  │      AndroidMigratePrebuilt.apk
    │  │  │
    │  │  ├─CarrierSetup
    │  │  │      Android.mk
    │  │  │      CarrierSetup.apk
    │  │  │
    │  │  ├─ConfigUpdater
    │  │  │      Android.mk
    │  │  │      ConfigUpdater.apk
    │  │  │
    │  │  ├─GoogleBackupTransport
    │  │  │      Android.mk
    │  │  │      GoogleBackupTransport.apk
    │  │  │
    │  │  ├─GoogleContacts
    │  │  │      Android.mk
    │  │  │      GoogleContacts.apk
    │  │  │
    │  │  ├─GoogleExtServices
    │  │  │      Android.mk
    │  │  │      GoogleExtServices.apk
    │  │  │
    │  │  ├─GoogleFeedback
    │  │  │      Android.mk
    │  │  │      GoogleFeedback.apk
    │  │  │
    │  │  ├─GoogleOneTimeInitializer
    │  │  │      Android.mk
    │  │  │      GoogleOneTimeInitializer.apk
    │  │  │
    │  │  ├─GooglePartnerSetup
    │  │  │      Android.mk
    │  │  │      GooglePartnerSetup.apk
    │  │  │
    │  │  ├─GoogleRestore
    │  │  │      Android.mk
    │  │  │      GoogleRestore.apk
    │  │  │
    │  │  ├─GoogleServicesFramework
    │  │  │      Android.mk
    │  │  │      GoogleServicesFramework.apk
    │  │  │
    │  │  ├─Phonesky
    │  │  │      Android.mk
    │  │  │      Phonesky.apk
    │  │  │
    │  │  ├─PrebuiltGmsCorePi
    │  │  │      Android.mk
    │  │  │      PrebuiltGmsCorePi.apk
    │  │  │
    │  │  └─SetupWizard
    │  │          Android.mk
    │  │          SetupWizard.apk
    │  │
    │  └─system
    │      ├─etc
    │      │  ├─default-permissions
    │      │  │      default-permissions.xml
    │      │  │      opengapps-permissions.xml
    │      │  │
    │      │  ├─permissions
    │      │  │      android.feature.additions.xml
    │      │  │      com.google.android.maps.xml
    │      │  │      com.google.android.media.effects.xml
    │      │  │      privapp-permissions-google.xml
    │      │  │
    │      │  ├─preferred-apps
    │      │  │      google.xml
    │      │  │
    │      │  └─sysconfig
    │      │          google-hiddenapi-package-whitelist.xml
    │      │          google.xml
    │      │          google_build.xml
    │      │          google_exclusives_enable.xml
    │      │          nexus.xml
    │      │          pixel_2018_exclusive.xml
    │      │          pixel_experience_2017.xml
    │      │          pixel_experience_2018.xml
    │      │
    │      ├─framework
    │      │      com.google.android.maps.jar
    │      │      com.google.android.media.effects.jar
    │      │
    │      └─lib
    │              libjni_latinimegoogle.so
    │
    └─products
            gms.mk

    其中google 商店为:Tubesky(TV版本)和 Phonesky(手机版本),根据平台导入对应的版本,否则打开时会提示与设备不兼容。

    (1)对于非APK文件(system目录):

    使用宏PRODUCT_COPY_FILES,在源码编译时将非APK文件拷贝到/system/下,在gms.mk里加上:

    # Configuration files for GMS apps
    PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,$(ANDROID_PARTNER_GMS_HOME)/system,/system)

    (2)对于APK文件:

    增加Android.mk预置到/system/app/或/system/priv-app/下,开启预编译减少第一次开机时间。

    例如:Chrome.apk预置到/system/app/下,添加对应的Android.mk内容如下:

    ###############################################################################
    # Chrome
    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := Chrome
    LOCAL_MODULE_TAGS := optional
    LOCAL_SRC_FILES := Chrome.apk
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_CERTIFICATE := PRESIGNED
    LOCAL_DEX_PREOPT := true
    include $(BUILD_PREBUILT)

    例如:AndroidPlatformServices.apk 预置到/system/priv-app/下,添加LOCAL_PRIVILEGED_MODULE := true

    #
    ###############################################################################
    # AndroidPlatformServices
    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := AndroidPlatformServices
    LOCAL_MODULE_TAGS := optional
    LOCAL_SRC_FILES := AndroidPlatformServices.apk
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_CERTIFICATE := PRESIGNED
    LOCAL_DEX_PREOPT := true
    LOCAL_PRIVILEGED_MODULE := true
    include $(BUILD_PREBUILT)

    PS: 注意LOCAL_CERTIFICATE := PRESIGNED 保证使用APK本身的签名信息,否则无法正常使用

    四. 通过谷歌设备验证

    • 不能修改 build/core/MakeFile 中 的BUILD_FINGERPRINT生成方式,BUILD_FINGERPRINT的拼接格式影响CTS认证和GMS ANDROID ID的生成,可能导致谷歌设备认证不通过
    • 挂上代理,进入Play商店,等待出现设备未验证的提示,此时才会生成一个GMS ANDROID ID
    • adb root ; adb shell 'sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = "android_id";"'    
    • https://www.google.com/android/uncertified/中填入 GMS ANDROID ID 即可。

          注:平台原厂一般会将对应的设备进行google认证,在devicexxxxxxdevice.mk 文件中会配置对应的fingerprint,由以下信息组成:

    BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(GP_TARGET_PRODUCT)/$(GP_TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)

      通过读取系统属性[ro.build.fingerprint]或[ro.vendor.build.fingerprint]查看fingerprint信息,如果设备已经过了google认证,则导入GMS包后可直接登录Google账号。

  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/blogs-of-lxl/p/14271830.html
Copyright © 2011-2022 走看看