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.微信红包,微信扫一扫即可领取红包
微信扫一扫,每天领取微信红包
小礼物走一走,来简书关注我