首页系统综合问题[技术篇] Android11导入GMS后登录账号提示“您的账号未成功添加”

[技术篇] Android11导入GMS后登录账号提示“您的账号未成功添加”

时间2023-06-02 18:00:42发布分享专员分类系统综合问题浏览274

一、项目需求:

在项目中导入Google框架,Google相关功能可以正常使用。

二、功能实现:

1、首先下载Google框架GMS包,可以在The Open GApps Project网站下载。选择相关配置后下载即可,有些包比较大,下载需要耐心等待一下,最后翻墙下载会快一些。

​编辑

2、由于本人使用的TV平台,Google版本需要使用手机版,不能使用TV版,因为TV版很多apk在Google商店中无法搜索到。修改mtv_core_hardware.xml文件,把TV版改成手机版。有多个路径:device/google/atv/permissions/tv_core_hardware.xml ,vendor/mediatek/common-tv/configs/mtv_core_hardware.xml,vendor/mediatek/proprietary_tv/open/common/preinstall/permission/mtv_core_hardware.xml

<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2011 The Android Open Source Project     Licensed under the Apache License, Version 2.0 (the "License");     you may not use this file except in compliance with the License.     You may obtain a copy of the License at          http:///tos-cn-i-qvj2lq49k0/1dfe913497a74e6591e34c5c36db1ed6~noop.image?_iz=58558&from=article.pc_detail&x-expires=1667563851&x-signature=%2BZhpHHK3t1EcA6W8AFDnchPaBpA%3D" img_width="1" img_height="1" image_type="1" mime_type="image/gif" web_uri="tos-cn-i-qvj2lq49k0/1dfe913497a74e6591e34c5c36db1ed6">

3、由于Google GMS包比较大,打包会占用很大空间。所以分区需要加大,具体加多少需要根据自己打包的内容而定。修改文件device/mediatek/xxxxx/BoardConfig.mk

include $(DEVICE_SOURCES)/BoardConfigCommon.mk# Change on this file should go below this line# -----------------------------------------------------------------------TARGET_BOOTLOADER_BOARD_NAME := $(TARGET_PRODUCT)BOARD_KERNEL_CMDLINE += androidboot.boot_devices=mstar_mci.0ifeq ($(findstring true, $(FILE_BASED_ENCRYPTION) $(AB_UPDATE_ENABLE)), true)# Android UserData Checkpoint (UDC)BOARD_USES_METADATA_PARTITION := trueBOARD_ROOT_EXTRA_FOLDERS += /metadataendif# mmc part#index: type name           (size)# 1:      MBOOT          (5.000M)# 2:      MPOOL          (3.000M)# 3:      MBOOTB         (5.000M)# 4:      tvcertificate  (8.000M)# 5:      eeprom_a       (1.000M)# 6:      tvconfig       (32.000M)# MTK_DATA_SEPARATION=true# 7:      cusdata        (150.000M)# 8:      project_id     (5.000M)# 9:      misc           (1.000M)#AVB enable# 10:      vbmeta         (1.000M)# 11:      recovery       (40.000M)#12:      boot           (40.000M)#13:      optee          (18.000M)#14:      armfw          (1.000M)#15:      RTPM           (1.000M)#16:      dtb            (1.000M)#AVB enable#17:      dtbo           (8.000M)#18:      metadata       (16.000M)#19:      frc            (1.000M)#20:      linux_rootfs_a (50.000M)#21:      basic_a        (1.000M)#22:      3rd_a          (30.000M)#23:      3rd_rw         (30.000M)#24:      vbmeta_a       (1.000M)#25:      ciplus         (1.000M)#26:      dvbsdb_a       (1.000M)#27:      cha            (1.000M)#28:      chb            (1.000M)#29:      upgrade        (112.000M)#30:      schedpvr       (1.000M)#31:      cm4            (1.000M)#32:      demura         (3.000M)#33:  factory_a      (5.000M)## ANDROID_DYNAMIC_PARTITION_SUPPORT=false##34:      system         (1.464G)#35:      vendor         (327.000M)#36:      product        (300.00M)#37:      odm_a          (1.000M)#38:      cache          (100.000M)#39:      tvservice      (130.000M)#40:      factory_a      (1.000M)#41:      userdata       (3.993G)or(4.082G for dtv_svc debug)# ANDROID_DYNAMIC_PARTITION_SUPPORT=true##34:      super          (2122.000M)#35:      odm_a          (1.000M)#36:      cache          (100.000M)#37:      tvservice      (130.000M)#38:      factory_a      (1.000M)#39:      userdata       (3.993G)or(4.082G for dtv_svc debug)BOARD_MBOOTIMAGE_PARTITION_SIZE         := 5242880 #0x000500000BOARD_VBMETAIMAGE_PARTITION_SIZE        := 65536BOARD_TVCERTIFICATEIMAGE_PARTITION_SIZE := 8388608BOARD_TVCONFIGIMAGE_PARTITION_SIZE      := 33554432BOARD_RECOVERYIMAGE_PARTITION_SIZE      := 41943040BOARD_BOOTIMAGE_PARTITION_SIZE          := 41943040BOARD_OPTEEIMAGE_PARTITION_SIZE         := 18874368BOARD_ARMFWIMAGE_PARTITION_SIZE         := 1048576BOARD_RTPMIMAGE_PARTITION_SIZE          := 1048576BOARD_DTBIMAGE_PARTITION_SIZE           := 1048576BOARD_DTBOIMG_PARTITION_SIZE            := 8388608#BOARD_METADATAIMAGE_PARTITION_SIZE      := 16777216BOARD_FRCIMAGE_PARTITION_SIZE           := 1048576ifeq ($(findstring true, $(FILE_BASED_ENCRYPTION) $(AB_UPDATE_ENABLE)), true)BOARD_METADATAIMAGE_PARTITION_SIZE      := 16777216endif# for AB Updateifeq "$(BOARD_USES_RECOVERY_AS_BOOT)" "true"BOARD_BOOTIMAGE_PARTITION_SIZE          :=   $(BOARD_RECOVERYIMAGE_PARTITION_SIZE)BOARD_RECOVERYIMAGE_PARTITION_SIZE      :=endififneq "$(DDI_SUPPORT)" "true"BOARD_APOLLO_EEPROM_PARTITION_SIZE      := 1048576ifeq "$(DTV_SVC_DBG)" "true"BOARD_APOLLO_LINUXROOTFS_PARTITION_SIZE := 209715200BOARD_APOLLO_3RD_PARTITION_SIZE         := 209715200elseBOARD_APOLLO_LINUXROOTFS_PARTITION_SIZE := 52428800BOARD_APOLLO_3RD_PARTITION_SIZE         := 31457280endifBOARD_APOLLO_3RD_RW_PARTITION_SIZE      := 31457280BOARD_APOLLO_VBMETA_PARTITION_SIZE      := 1048576BOARD_APOLLO_CHANNELA_PARTITION_SIZE    := 1048576BOARD_APOLLO_CHANNELB_PARTITION_SIZE    := 1048576BOARD_APOLLO_FACTORY_PARTITION_SIZE     := 5242880#BOARD_APOLLO_ODM_PARTITION_SIZE         := 1048576ifneq "$(MODEL_REGION)" "cn"BOARD_APOLLO_CIPLUS_PARTITION_SIZE      := 1048576BOARD_APOLLO_DVBSDB_PARTITION_SIZE      := 1048576BOARD_APOLLO_SCHEDPVR_PARTITION_SIZE    := 1048576endif#endof DDI_SUPPORTendif#ifeq "$(MTK_DATA_SEPARATION)" "true"#BOARD_PROJECT_ID_PARTITION_SIZE         :=    5242880 #0x000500000#BOARD_CUSDATA_PARTITION_SIZE            :=  157286400 #0x009600000#endif#USERDATAIMAGE Size == EMMC Size - ALL PARTITION SIZE#when mboot set CONFIG_USERDATA_PARTITION_SELF_ADAPTION=y USERDATAIMAGE will self-adaption#ifeq "$(MTK_DATA_SEPARATION)" "true"#ifeq "$(DTV_SVC_DBG)" "true"#BOARD_USERDATAIMAGE_PARTITION_SIZE      := 4232052736#else#BOARD_USERDATAIMAGE_PARTITION_SIZE      := 4462739456#endif#elseifeq "$(DTV_SVC_DBG)" "true"BOARD_USERDATAIMAGE_PARTITION_SIZE      := 4394582016elseBOARD_USERDATAIMAGE_PARTITION_SIZE      := 4625268736endif#endifBOARD_APOLLO_UPGRADE_PARTITION_SIZE     := 209715200BOARD_CM4IMAGE_PARTITION_SIZE           := 1048576BOARD_DEMURAIMAGE_PARTITION_SIZE        := 3145728BOARD_TVSERVICEIMAGE_PARTITION_SIZE     := 146800640BOARD_CACHEIMAGE_PARTITION_SIZE         := 104857600ifeq "$(ANDROID_DYNAMIC_PARTITION_SUPPORT)" "true"# For non-A/B devices and retrofit A/B devices,# the sum of maximum sizes of all groups must be:# BOARD_SUPER_PARTITION_SIZE - overhead# Overhead is required in the computation to account for metadata, alignments,# and so on. A reasonable overhead is 4 MiB, but you can pick a larger overhead as needed by the device.#BOARD_SUPER_PARTITION_SIZE 2254438400  1024*1024 = 2097152 *2 =4194304 + 2254438400= 2258632704#BOARD_GROUP_OEM_SIZE 2250244096 + 4194304 = 2588532736BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 52428800BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE := 52428800BOARD_SUPER_PARTITION_SIZE              := 2778726400BOARD_SUPER_PARTITION_GROUPS            := group_oemBOARD_GROUP_OEM_SIZE                    := 2774532096BOARD_GROUP_OEM_PARTITION_LIST          := system vendorelseBOARD_SYSTEMIMAGE_PARTITION_SIZE        := 1572864000BOARD_VENDORIMAGE_PARTITION_SIZE        := 367001600BOARD_PRODUCTIMAGE_PARTITION_SIZE       := 314572800endifBOARD_FLASH_BLOCK_SIZE := 512

4、把下载好的GMS包放到目录下vendor/partner_gms/

​编辑

5、在文件中添加Google编译:device/mediatek/xxxx/device.mk,添加以下代码即可。

#***************************************Google play************************************#add by jude for google play service$(call inherit-product-if-exists, vendor/partner_gms/products/gms_tv.mk)#***************************************Google play************************************

添加以上修改之后,编译出ROM之后可以正常打开Google商店等应用。

三、遇到问题:

在登录Google账号时,一直提示“您的账号未成功添加,请重试!”。遇到这问题时,一开始以为账号有问题,但在windows下可以正常使用。然后怀疑是不是apk版本问题,替换多版后还是无法解决。

四、解决方案:

1、在替换Google 商店、Google服务等apk后,发现还是一样的问题,排除apk版本问题。

2、通过修改权限也无法解决该问题。

3、最后发现跟设备认证有关,通过手动翻墙注册设备后,发现问题解决。为什么需要设备认证,官方解释如下。

​编辑

4、手动认证可以,代码如何自动认证呢?方法如下就是需要修改fingerprint相关属性。首先修改build/make/core/Makefile文件中的BUILD_FINGERPRINT,BUILD_FINGERPRINT的格式是组合起来的。相关文件:build\make\core\version_defaults.mk

........................# The string used to uniquely identify the combined build and product; used by the OTA server.ifeq (,$(strip $(BUILD_FINGERPRINT)))  ifeq ($(strip $(HAS_BUILD_NUMBER)),false)    BF_BUILD_NUMBER := $(BUILD_USERNAME)$($(DATE_FROM_FILE) +%m%d%H%M)  else    BF_BUILD_NUMBER := $(file <$(BUILD_NUMBER_FILE))  endif#add by jude for  google play_BRAND := MediaTek_PRODUCT := m7332_eu_DEVICE := m7332_eu#_BUILD_NUMBER := eng.$(shell echo ${BUILD_USERNAME:0:6}).$(shell $(DATE) +%Y%m%d.%H%M%S)BUILD_FINGERPRINT := $(_BRAND)/$(_PRODUCT)/$(_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)#BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)#add endendif# unset it for safety.BF_BUILD_NUMBER :=........................

然后还得修改system\core\init\property_service.cpp文件中的property_derive_build_fingerprint函数,ro.build.fingerprint前面的内容需要跟BUILD_FINGERPRINT中的保持一致。

// If the ro.build.fingerprint property has not been set, derive it from constituent piecesstatic void property_derive_build_fingerprint() {    std::string build_fingerprint = GetProperty("ro.build.fingerprint", "");    if (!build_fingerprint.empty()) {        return;    }    const std::string UNKNOWN = "unknown";    build_fingerprint = "MediaTek";//GetProperty("ro.product.brand", UNKNOWN);//add by jude    build_fingerprint += '/';    build_fingerprint += "m7332_eu";//GetProperty("ro.product.name", UNKNOWN);    build_fingerprint += '/';    build_fingerprint += "m7332_eu";//GetProperty("ro.product.device", UNKNOWN);    build_fingerprint += ':';    build_fingerprint += GetProperty("ro.build.version.release", UNKNOWN);    build_fingerprint += '/';    build_fingerprint += GetProperty("ro.build.id", UNKNOWN);    build_fingerprint += '/';    build_fingerprint += GetProperty("ro.build.version.incremental", UNKNOWN);    build_fingerprint += ':';    build_fingerprint += GetProperty("ro.build.type", UNKNOWN);    build_fingerprint += '/';    build_fingerprint += GetProperty("ro.build.tags", UNKNOWN);    LOG(INFO) << "Setting property 'ro.build.fingerprint' to '" << build_fingerprint << "'";    std::string error;    uint32_t res = PropertySet("ro.build.fingerprint", build_fingerprint, &error);    if (res != PROP_SUCCESS) {        LOG(ERROR) << "Error setting property 'ro.build.fingerprint': err=" << res << " (" << error                   << ")";    }}

通过以上修改,问题得到最终解决。

​编辑

爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

无法登录到你的账户
CorelDrawX破解版和正版有何区别? coreldraw破解版使用经验分享