android gms包

android gms包

Android手机刷 9.0 的GMS包介绍

2018-11-27 20:34:15 WTBEE 阅读数 10782

    众所周知,国内发布的手机基本上都不包含Google GMS服务,所以要使用Google原生的一些应用或是从GooglePlay下载国外的APP的话就必须刷GMS服务,本文记录了基于Android 9.0版本刷GMS包的全过程,供有需要的人参考!说明:下面步骤介绍的某些网站或资源需要FQ才能获取(你懂的...),此外,手机要能root。

1. 从如下链接 Open GAPPS下载所需要的GMS包

https://opengapps.org/

关于各Variant差异的说明可以参考:https://jakting.com/archives/gapps-links-what.html

 

2. 下载好相应的包后(我这里下载的是aroma版本),请解压到个人电脑指定的路径下面(文件路径中的压缩包,也需要一并解压出来)。解压出来的文件目录大致如下:

其中Core路径下是GMS服务的一些核心APK,是我们能否使用GMS服务的基础。比如:

Core\gmscore-arm64\gmscore-arm64\nodpi\priv-app\PrebuiltGmsCorePi\PrebuiltGmsCorePi.apk

Core\gsfcore-all\gsfcore-all\nodpi\priv-app\GoogleServicesFramework\GoogleServicesFramework.apk

GApps路径下是Google的一些原生应用,在GMS服务安装好之后可以根据喜好自行安装即可。

 

3. 前面解压出来的文件通过上面的路径就可以看出,他们原本应该在系统中的路径是什么,比如前面的GoogleServicesFramework.apk应该在/system/priv-app/路径中,以此类推,有的配置文件、jar包等都可以通过解压出来的路径推断出其在系统中的路径。我这里将所有需要用到的资源整理如下:

priv-app路径内容一览:

 

4.   第3步中将解压出来的资源归类整理的目的是方便后续将这些APK等用adb脚本批量push到手机中、以达到刷入GMS服务的目的。所以,接下来我们就可以新建脚本将这些资源通过adb push到手机对应的路径中去,我这里编写的脚本主要内容如下(如第3步,整理的资源路径在D盘的gms文件夹下):

    adb wait-for-device
    adb root
	adb remount
    adb wait-for-device
	
	echo "------------------- wtbee start push GMS --------------------"
	adb push D:\gms\9.0\app\. /system/app/
	adb push D:\gms\9.0\priv-app\. /system/priv-app/
	adb push D:\gms\9.0\system\etc\default-permissions /system/etc/
	adb push D:\gms\9.0\system\etc\permissions\. /system/etc/permissions/
	adb push D:\gms\9.0\system\etc\preferred-apps\ /system/etc/
	adb push D:\gms\9.0\system\etc\sysconfig\. /system/etc/sysconfig/
	adb push D:\gms\9.0\system\framework\. /system/framework/
	adb push D:\gms\9.0\system\lib64\. /system/lib64/
	echo "------------------- wtbee push GMS done -------------------------"	

5. 待脚本执行成功之后,重启手机并生效。此时,手机基本就具备了GMS服务。但是,Google为了确保装有 Google 应用的 Android 设备可以正常运行,设备必须符合以下条件才能获得 Google 认证:

    装有获得 Google 许可的专属应用

    通过了 Android 兼容性测试

所以,此时手机联网且能FQ的前提下,机器会提示进行Google GMS设备认证。如果你的设备无法认证,没关系、好在Google提供了自定义ROM用户设备注册的功能,可以在如下网站中输入GMS框架的Android ID来注册。

https://www.google.com/android/uncertified/

如何获得这个Android ID了? 有两种办法,一种是通过连接电脑后,使用 ADB 命令:

adb shell settings get secure android_id

另外一种方法是安装一个叫做 Device ID 的应用,这是由著名的 apk 下载服务商 Evozi 提供的应用。(注意,如果应用打开后没有显示GSF的ID,可以在第4步完毕后重启手机,并联网开启Google服务认证,过会时间后重启手机再次打开APK就可以看到。 )

说明,一定要将GSF ID转换为十进制去注册。有一个网站可以参考:https://www.rapidtables.com/convert/number/hex-to-decimal.html

 

6. 待设备注册完成后,过会时间再进行设备认证的话就可以成功了,此时会让你登录Google账号。到此,恭喜你!!!你的设备可以使用Google GMS 服务以及Google 原生应用了。

 

附录:

手机注册Android服务需要FQ,介绍一款VPN应用:

https://download.csdn.net/download/wtbee/10811482

Device ID APK:

https://download.csdn.net/download/wtbee/10811472

我实测可用的完整GMS包整理(内含使用说明):

https://download.csdn.net/download/wtbee/10811497

 

展开阅读原文
                                        
                                    
                                

Android 8.1 MTK平台 导入GMS包后安装的应用无法启动, GoogleDialerGo

2018-05-08 18:26:30 zengxx1989 阅读数 1807

在Android 8.1 的代码里面,导入GMS包后发现系统应用可以正常运动,但安装的三方应用直接 就是闪退,一直以为是GMS导致的问题。

添加GMS 包(GooglepackageInstaller里面有LOCAL_OVERRIDES_PACKAGES MtkPackageInstaller ), 后安装的应用无法启动,闪退 

经过验证,发现是由于使用了google 的 GooglepackageInstaller,换成MtkPackageInstaller就可以了,根据GOOGLE 的要求,GooglepackageInstaller是mandatory的包。为什么使用GooglepackageInstaller安装应用会造成应用无法启动?

解决方法:

关闭这两个宏测试看下:
MTK_MOBILE_MANAGEMENT = no和MTK_PERMISSION_CONTROL = no。
这两个宏是mtk自己的权限管理。
安装了GMS后用的是google的,目前遇到的case会有冲突的情况,导致应用打不开。
所以需要关闭这两个宏。

因为安装了GMS后,是不需要使用MTK的权限管理的,所以关闭宏没有影响。

二,导入GoogleDialerGo 之后,拨号之后无法正常显示CallUI,

分析原因还是因为MTK把默认的Telecomm 从 packages\services 下移到了 vendor/mediatek/proprietary/packages/services 目录下去,导致GoogleDialerGo 里面的overlay 失效;

解决方法:修改GMS包 partner_gms\apps_go\GoogleDialerGo 目录 下的 overlay ,添加复制packages/services/Telecomm/res/values/config.xml,把文件夹名字改成下面这样, v endor/mediatek/proprietary/packages/services/Telecomm/res/values/config.xml

config.xml 内容修改后如下:


    
    com.google.android.dialer
<!-- Class name for the default main Dialer activity [DO NOT TRANSLATE] -->
<string name="dialer_default_class" translatable="false">com.google.android.dialer.extensions.GoogleDialtactsActivity</string>

<!-- Class name for the default incall activity [DO NOT TRANSLATE] -->
<string name="incall_default_class" translatable="false">com.android.incallui.InCallServiceImpl</string>

修改前内容:

    
com.android.dialer
<!-- Class name for the default in-call UI Service [DO NOT TRANSLATE] -->
<string name="incall_default_class" translatable="false">com.android.incallui.InCallServiceImpl</string>

<!-- Class name for the default main dialer activity [DO NOT TRANSLATE] -->
<string name="dialer_default_class" translatable="false">com.android.dialer.DialtactsActivity</string>



GMS 包配置说明

2017-11-01 20:20:30 wed110 阅读数 3048

\build\target\product\generic_no_telephony.mk 

添加 

$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)   --原有位置下面加下面这行
$(call inherit-product, vendor/google/products/gms.mk) 


build\tools\buildinfo.sh 

添加4个属性




L 、M版本  GMS包预制

Google为了简化GMS的预置流程,对Android源代码和GMS做了相应的处理
所以L版本GMS预置比较简单,只需要把GMS需要预置内容放置在 

1.在alps/vendor/google/下创建Android.mk 文件

文件夹下(google文件夹需要自行创建) 
  
然后检查vendor/google/下是否存在Android.mk文件,若没有此Android.mk,请新建一个,并把以下内容拷贝进去: 
ifdef BUILD_GMS 
ifeq ($(strip $(BUILD_GMS)), yes) 
include $(call all-subdir-makefiles) 
endif 
endif 
  

2.检查vendor/google/以下两个文件夹apps/ 和 frameworks/

第一层目录下是否存在Android.mk
如果不存在,也各新建一个,将以下内容拷贝进去:
include $(call all-subdir-makefiles)
 
最后在build的时候带入"BUILD_GMS=yes",如:
source build/envsetup.sh && lunch full_-user && source ./mbldenv.sh && BUILD_GMS=yes make -j24
 
 
若提示找不到mbldenv.sh,则使用如下命令:
source build/envsetup.sh && lunch full_-user && BUILD_GMS=yes make -j24   

注意,源代码的build文件中会有判断 BUILD_GMS 的值做不同build行为的语句,请不要修改,否则会造成GMS预置冲突或者预置不完整问题


KK版本GMS包预制方法

1.打开GMS编译开关

/mediatek/config/common/ProjectConfig.mk 
BUILD_GMS = yes 
  

2.修改GMS预置条件

/build/target/product/common.mk

将以下内容(如果有出入,请以修改后为标准):

#--GMS feature----- 
ifeq ($(strip $(BUILD_GMS)), yes) 
$(call inherit-product-if-exists, vendor/google/products/gms.mk) 
PRODUCT_PROPERTY_OVERRIDES += \ 
>>>> ORIGINAL //ALPS_SW/FPB/KK1.MP1.FPB/alps/build/target/product/common.mk#1 
==== THEIRS //ALPS_SW/FPB/KK1.MP1.FPB/alps/build/target/product/common.mk#8 
    ro.com.google.clientidbase=alps-$(TARGET_PRODUCT)-{country} \ 
    ro.com.google.clientidbase.ms=alps-$(TARGET_PRODUCT)-{country} \ 
    ro.com.google.clientidbase.yt=alps-$(TARGET_PRODUCT)-{country} \ 
    ro.com.google.clientidbase.am=alps-$(TARGET_PRODUCT)-{country} \ 
    ro.com.google.clientidbase.gmm=alps-$(TARGET_PRODUCT)-{country} 
==== YOURS //ws_wcpadmin_3010_bj/ALPS_SW/MP/KK1.MP1/alps/build/target/product/common.mk 
      ro.com.google.clientidbase=alps-$(TARGET_PRODUCT)-{country} \ 
      ro.com.google.clientidbase.ms=alps-$(TARGET_PRODUCT)-{country} \ 
      ro.com.google.clientidbase.yt=alps-$(TARGET_PRODUCT)-{country} \ 
      ro.com.google.clientidbase.am=alps-$(TARGET_PRODUCT)-{country} \ 
      ro.com.google.clientidbase.gmm=alps-$(TARGET_PRODUCT)-{country} 
<<<< 
endif 
  
修改为=>  
  
#--GMS feature----- 
ifeq ($(strip $(BUILD_GMS)), yes) 
$(call inherit-product-if-exists, vendor/google/products/gms.mk)  
PRODUCT_PROPERTY_OVERRIDES += \ 
     ro.com.google.clientidbase=alps-$(TARGET_PRODUCT)-{country}  
endif 
  
ps: 以上内容(第2步骤)包含调用gms.mk,以及设置client id 
如果贵司此项目不需要设置client id,请将其中的 
PRODUCT_PROPERTY_OVERRIDES += \
    ro.com.google.clientidbase=alps-$(TARGET_PRODUCT)-{country}
 
去掉; 
如果需要预置,则将“alps-$(TARGET_PRODUCT)”修改为对应的client id值; 
字段"-{country}"的作用是,根据插入的sim卡自适应显示对应的国家码,如果此项目不需要client id根据mcc自适应,则将字段"-{country}"去掉即可 
  

3. webview实现冲突解决方案

由于Google对GMS的WebView检测策略的改变,所以如果预置GMS必须预置其中的WebViewGoogle,这样将会把默认的webview覆盖掉 
具体预置操作方法请参考[FAQ11120] KK版本GMS包Chromium相关文件合入注意事项_FAQ 
  

4. 如果预置以下所列GMS应用,需要给它们获取系统权限

ConfigUpdater.apk 

GmsCore.apk 

GoogleBackupTransport.apk 

GoogleFeedback.apk 

GoogleLoginService.apk

GoogleOneTimeInitializer.apk 

GooglePartnerSetup.apk

GoogleServicesFramework.apk 

Phonesky.apk

SetupWizard.apk 

Velvet.apk

请在/vendor/google/apps/Android.mk
每一个应用对应的build语句添加:
LOCAL_PRIVILEGED_MODULE := true
 
  

5. 如果预置GMS中的Videos.apk,则将/mediatek/packages/apps/VideoPlayer/Android.mk删除

  

6.lib库重命名

frameworks/support/renderscript/v8/rs_support/Android.mk:     libRSSupport -> libRSSupport_old (2 places)  
frameworks/support/renderscript/v8/jni/Android.mk:                    librsjni -> librsjni_old and libRSSupport -> libRSSupport_old (2 places)
libnativehelper/Android.mk:                                                              libnativehelper_compat -> libnativehelper_compat_old  
  
ps: 第6步骤的修改,如果您发现在原生code中,这些库的修改已经包含在 
ifeq ($(strip $(BUILD_GMS)), yes) 
endif 
中,可以不再修改 
  

7. 由于兼容性问题,请不要预置GoogleCamera.apk和GalleryGoogle.apk:

7.1 将\google\libs\Android.mk中的以下内容注释掉:

include $(CLEAR_VARS) 
LOCAL_PREBUILT_LIBS := libgcam.so \ 
                       libgcam_swig_jni.so \ 
                       libjni_eglfence.so \ 
                       libjni_filtershow_filters.so \ 
                       libjni_mosaic.so \ 
                       libjni_tinyplanet.so \ 
                       libjpeg.so \ 
                       liblightcycle.so \ 
                       libnativehelper_compat.so 
LOCAL_MODULE_TAGS := optional 
include $(BUILD_MULTI_PREBUILT) 
  

7.2 将\google\apps\Android.mk中的以下内容注释掉:

include $(CLEAR_VARS) 
LOCAL_MODULE := GoogleCamera 
LOCAL_MODULE_TAGS := optional 
LOCAL_OVERRIDES_PACKAGES := Camera2 
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk 
LOCAL_MODULE_CLASS := APPS 
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) 
LOCAL_REQUIRED_MODULES := libgcam \ 
                          libgcam_swig_jni \ 
                          libjni_eglfence \ 
                          libjni_filtershow_filters \ 
                          libjni_mosaic \ 
                          libjni_tinyplanet \ 
                          libjpeg \ 
                          liblightcycle \ 
                          libnativehelper_compat 
LOCAL_CERTIFICATE := PRESIGNED 
include $(BUILD_PREBUILT) 
  
以及 
  
include $(CLEAR_VARS) 
LOCAL_MODULE := GalleryGoogle 
LOCAL_MODULE_TAGS := optional 
LOCAL_OVERRIDES_PACKAGES := Gallery2 
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk 
LOCAL_MODULE_CLASS := APPS 
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) 
LOCAL_CERTIFICATE := PRESIGNED 
include $(BUILD_PREBUILT) 
  

7.3 将\google\products\gms.mk

PRODUCT_PACKAGES += \下面的 
#     GoogleCamera \ 
#     GalleryGoogle \ 
注释掉 
  

ps: 以上内容(第7步骤)是把GoogleCamera、GalleryGoogle以及相关的lib库移除,



展开阅读原文
                                        
                                    
                                

android 添加gms包-7.0

2018-04-17 11:54:34 u010672559 阅读数 2587

1.打包步骤

先将解压的partner_gms复制粘贴到vender下面,然后在

device\xxx\xxx\full_xxx_.mk中添加,

#xiaozheng add

BUILD_GMS := yes

注:实际是使device\mediatek\common\device.mk中的

ifdef BUILD_GMS

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

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

2.编译报错

vendor/google/apps/WebViewGoogle/Android.mk:21: *** ro.product.first_api_level property is undefined

需要在

vendor\partner_gms\products\gms.mk中添加

#xiaozheng add

PRODUCT_PROPERTY_OVERRIDES +=

ro.product.first_api_level=24

注:关联gms.mk文件的语句记得跟实际路径想对应,才能关联上,别搞成了vendor/google/products/gms.mk

device\mediatek\common\device.mk

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

3.编译报错

ninja: error: ‘vendor/partner_gms/etc/preferred-apps/google.xml’, needed by ‘out/target/product/xxx/system/etc/preferred-apps/google.xml’, missing and no known rule to make it

make: *** [ninja_wrapper] 错误 1

vender下面的文件夹命名不能按以前的google了,应该按实际的路径来写为partner_gms

4.开机导航跳不过去,修改vendor/partner_gms/products/gms.mk里面的属性值any改成OPTIONAL

PRODUCT_PROPERTY_OVERRIDES +=

    ro.product.first_api_level=24

    ro.setupwizard.require_network=OPTIONAL

    ro.setupwizard.mode=OPTIONAL

    ro.com.google.gmsversion=7.0_r7

                                

Android 增加GMS包后提示权限问题

2017-09-15 10:33:39 CodingNotes 阅读数 1188

问题:Android 7.1.1 增加GMS包后提示“权限被拒绝。您可以依次选择'设置'>'应用'来更改权限。

该问题是GMS包里面的APK和系统应用冲突

例如:MtkCalendar 和 CalendarGoogle

    Chrome 和  MtkBrowser   

在GMS包的相应的APK中的Android.mk文件修改:LOCAL_OVERRIDES_PACKAGES := MtkBrowser Browser2

展开阅读原文
                                        
                                    
                                

你可能感兴趣的:(android gms包)