加入编译GMS包,增加或去除谷歌相关GMS应用,移除GMS包,取消刷机后的认证弹窗通知,锁fingerprint。

S版本编译后生成的apkout_sys/目录

在配置文件加宏ProjectConfig.mk

#GMS

BUILD_GMS = yes

BUILD_AGO_GMS = no

GAPPS_PACKAGE_SetupWizard = no  //谷歌开机向导

GAPPS_PACKAGE_Chrome = no

GAPPS_PACKAGE_Drive = no

GAPPS_PACKAGE_Gmail2 = no

GAPPS_PACKAGE_Duo = no

GAPPS_PACKAGE_Maps = no

GAPPS_PACKAGE_Music2 = no

GAPPS_PACKAGE_Photos = no

GAPPS_PACKAGE_Velvet = no

GAPPS_PACKAGE_Videos = no

GAPPS_PACKAGE_YouTube = no

GAPPS_PACKAGE_Hangouts = no

GAPPS_PACKAGE_CarrierServices = no

GAPPS_PACKAGE_GoogleContacts = no

GAPPS_PACKAGE_GoogleDialer = no

GAPPS_PACKAGE_Messages = no

GAPPS_PACKAGE_CalendarGoogle = no

GAPPS_PACKAGE_LatinImeGoogle = no

GAPPS_PACKAGE_SearchLauncherQuickStep = no

GAPPS_PACKAGE_FilesGoogle = no

GAPPS_PACKAGE_YTMusic = no

GAPPS_PACKAGE_AssistantShell = no

//上面的这些宏控都是可以显示在launcher上的应用,当然不包括核心应用,比如谷歌商店也显示桌面但是没有宏控,这些宏控是在vendor/google/products/gms.mk

但也不一定会编译到这个路径,具体路径需要看配置!

vendor/google/gms.mk 看具体走了哪个gms.mk

可以看到里面有个宏控配值ifeq ($(strip $(EEA_TYPE)), type1)

EEA_TYPE这个宏控赋什么值,就调用哪个,源码是默认没定义的话是走else的那就是

else

$(call inherit-product-if-exists, vendor/google/products/gms.mk)

endif

如果赋值了比如说

else ifeq ($(strip $(EEA_TYPE)), eea_v2)

$(call inherit-product-if-exists, vendor/google/products/gms_eea_v2_type4c.mk)

那就是走vendor/google/products/gms_eea_v2_type4c.mk

这个宏控配置在ProjectConfig.mk可加上

EEA_TYPE = eea_v2,这种类型是过欧盟需要的

如果要增加或删除应用,就到对应的mk里面改

override/vendor/google/products/gms_eea_v2_type4c.mk

这个里面首句引用了

$(call inherit-product, vendor/google/products/eea_common.mk)

所以vendor/google/products/eea_common.mk这里也编译到了,两个文件都可以改

GMS_PRODUCT_PACKAGES += \

+    sysconfig_gks \

+    GoogleKidsSpace \

+    YouTubeKids \

+    Books \

下面三个应用新版的GMS认证需要加上,第一个十Google Kids Space的feture,也需要打开,adb shell "cmd package list features | grep -c KIDS_HOME_EXPERIENCE" 需要为1,

根据KIDS_HOME_EXPERIENCE 搜到在etc/sysconfig/gks.xml定义,然后在etc/sysconfig/Android.bp引用,名字就是sysconfig_gks,就相当于是个应用了

删除一些谷歌应用,有些可以overrideLOCAL_OVERRIDES_PACKAGES :=,有些是谷歌核心应用就无法被override

vendor/google/products/gms.mk

# GMS mandatory core packages(20)

$(call inherit-product, build/target/product/product_launched_with_p.mk)

GMS_PRODUCT_PACKAGES += \

这里面就是谷歌核心应用,这些要删除override就不生效,只能删除mk文件内容让它无法编译主要是用了inherit-product这编译模式,里面还有个开机向导虽然也包含在里面也是核心应用,但是重新定义了编译模式,所以可以通过宏控关掉,应该也可以override

$(call gapps-install-modules-vars,TARGET_BUILD_VARIANT,user, \

    SetupWizard \

   ) \

  从注释中可以看到,inherit-product 函数除了会执行通过其参数传入的 Makefile 文件之外,还会额外做 3 件事:

    1、继承通过参数传入的 Makefile 文件中的所有变量;

    2、在 .INHERITS_FROM 变量中记录下这些继承关系;

    3、在 ALL_PRODUCTS 变量中标识出当前操作的 Makefile 文件已经被访问过了(以免重复访问)。

include 则只会执行 Makefile 文件,不会进行上方所述的 3 个操作。

移除GMS包,去除谷歌所有应用及服务:

BUILD_GMS = no

BUILD_AGO_GMS= no

GAPPS_BUILD =

这三个宏都要加,注意,尤其是第三个,一定要写空

原理:

类似于下面的文件。编译若报错会出现路径,下面这个不是报错原因,只是个例子

vendor/google/ Android.mk

ifdef BUILD_GMS

ifneq ($(filter fuex,$(GAPPS_BUILD)),)

ifeq ($(strip $(BUILD_GMS)), yes)

ifneq ($(strip $(BUILD_AGO_GMS)), yes)

第二步,如果GAPPS_BUILD不为空(ifneq否定),那么就往下走,所以为空之后后面就不走了,报错的文件可能接下来走的话就有问题

加入gms包后连上网会有认证弹通知,若未锁fingerprint就会一直弹一直弹。如果需要不弹就是已认证,可以锁其他项目的

主要是三个宏

FREEME_PRODUCT_INFO_BRAND = YSF

FREEME_PRODUCT_INFO_NAME = Rugged_tablet_EEA

FREEME_PRODUCT_INFO_DEVICE = Rugged_tablet

上面只能保证这个名字过认证后不弹窗,都在ProjectConfig.mk

真正锁fingerprint 得加上

# lock fingerprint

BUILD_FINGERPRINT = YSF/Rugged_tablet_EEA/Rugged_tablet:12/SP1A.210812.016/1667361081:user/release-keys

BUILD_NUMBER = 1667361081     

PLATFORM_SECURITY_PATCH = 2022-11-01    这个得问下跑测的同事具体的日期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值