GMS(Google Mobile Service)预制方法

一、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库移除,

二、L版本  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_<YourProjectName>-user && source ./mbldenv.sh && BUILD_GMS=yes make -j24
 
 
若提示找不到mbldenv.sh,则使用如下命令:
source build/envsetup.sh && lunch full_<YourProjectName>-user && BUILD_GMS=yes make -j24
 
注意,源代码的build文件中会有判断 BUILD_GMS 的值做不同build行为的语句,请不要修改,否则会造成GMS预置冲突或者预置不完整问题

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

既然都看到这里,领两个红包在走吧!
以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

 

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

posted @ 2016-01-25 18:02  程序员Android的博客  阅读(576)  评论(0编辑  收藏  举报