A13 GMS应用预装
接到一个需求,需要预装GMS,在此记录一下
一需求:
预装GMS,使其能够正常打开使用
二步骤:
1 放置gms相关文件
因为GMS需要用自己的签名,不可以使用系统签名。不然导致认证不通过,我用传统方式预装开机应用是安装失败的,开机后看不到应用,我查看ylog,是签名不对
S002F1E 01-01 00:00:39.936 1041 1041 I PackageManager: /system/priv-app/GooglePlayStore changed; collecting certs
S002F1F 01-01 00:00:39.939 1041 1041 W PackageManager: Failed to scan /system/priv-app/GooglePlayStore: No APK Signature Scheme v2 signature in package /system/priv-app/GooglePlayStore/GooglePlayStore.apk
S002F20 01-01 00:00:39.939 1041 1041 I PackageManager: /system/priv-app/GooglePlayServices changed; collecting certs
S002F21 01-01 00:00:39.941 1041 1041 W PackageManager: Failed to scan /system/priv-app/GooglePlayServices: No APK Signature Scheme v2 signature in package /system/priv-app/GooglePlayServices/GooglePlayServices.apk
S002F22 01-01 00:00:39.954 1041 1041 D PackageManager: Scanning app dir /system/app, fileCount = 22
S002F23 01-01 00:00:39.954 1041 1041 I PackageManager: /system/app/BluetoothMidiService changed; collecting certs
S002F24 01-01 00:00:39.962 1041 1274 W PackageParsing: No actions in intent-filter at /system/app/CarrierDefaultApp/CarrierDefaultApp.apk Binary XML file line #44
S002F25 01-01 00:00:39.962 1041 1041 I PackageManager: /system/app/BookmarkProvider changed; collecting certs
S002F26 01-01 00:00:39.973 1041 1273 W PackageParsing: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.READ_PHONE_STATE in package: com.abupdate.fota_demo_iot at: Binary XML file line #15
看日志是 apk没有v2签名,导致系统预装时校验失败,查看apk 如下
查看预装gms应用包的签名信息PS E:\sync\ft18> apksigner verify --verbose .\com.google.android.gms252234.apk
Verifies
Verified using v1 scheme (JAR signing): false
Verified using v2 scheme (APK Signature Scheme v2): false
Verified using v3 scheme (APK Signature Scheme v3): true
Verified using v3.1 scheme (APK Signature Scheme v3.1): false
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: true
Number of signers: 1
PS E:\sync\ft18\gongwang\yiterui>
查阅资料,这种方式下,不能使用传统预装模式,需要复制apk到目标目录 ,所以Android.mk文件以GooglePlayStore应用为例,其他格式相同,只需更换名称内容如下
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
$(shell mkdir -p $(TARGET_OUT)/priv-app/GooglePlayStore) // 创建目标目录,
$(shell cp -r $(LOCAL_PATH)/GooglePlayStore45717.apk $(TARGET_OUT)/priv-app/GooglePlayStore) //将文件复制到目标目录
LOCAL_PACKAGE_NAME := GooglePlayStore //当前包名称
记得将该内容添加编译,如下:
Date: Tue Jul 15 18:13:38 2025 +0800gms集成编译Change-Id: I1b752641814a253fbd80ae37cacd940a1cf80754diff --git a/ums9158_1h10/product/var.mk b/ums9158_1h10/product/var.mk
index f76da1b..70853b3 100755
--- a/ums9158_1h10/product/var.mk
+++ b/ums9158_1h10/product/var.mk
@@ -22,8 +22,10 @@ $(call md-disable, ai)# disable vdsp nnhal and ai end ##system navigation 0show 1hiddenqemu.hw.mainkeys=1
-
+PRODUCT PACKAGES +=GooglePlayStore \
+ GoogleServicesFramework \
+ GooglePlayServices
这样就预装成功了。(登录google playstore 需要科学上网)
二GMS认证:
这边是借用了已经认证过的信息,修改如下:
commit 5b1cc8bd4f6634aa7953480c9a3cb462d3c61928
Author: lijp <lijp@flyscale.cn>
Date: Thu May 29 13:37:10 2025 +0800 修改fingerprint属性(谷歌GMS认证) Change-Id: I7bb2a441f9457136cdf43f04512a31bac061d71b diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 67bbb45e3..0a5ce5b83 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -651,8 +651,8 @@ class BuildInfo(object): except ExternalError: return "{}/{}/{}:{}/{}/{}:{}/{}".format( self.GetBuildProp("ro.product.brand"),
- self.GetBuildProp("sl8541e_1h10_32b_Natv"),
- self.GetBuildProp("sl8541e_1h10_32b"),
+ "sl8541e_1h10_32b_Natv",
+ "sl8541e_1h10_32b", self._GetPlatformVersion(), self.GetBuildProp("ro.build.id"), self.GetBuildProp("ro.build.version.incremental"), commit 4e13c07f018cb261d9722b87d4de2266887aadd4
Author: lijp <lijp@flyscale.cn>
Date: Thu May 29 13:24:38 2025 +0800 修改fingerprint属性(谷歌GMS认证) Change-Id: Id0b99d15a41af3411282b987f3db4ac747b474a0 diff --git a/core/sysprop.mk b/core/sysprop.mk
index 9fcedd759..7adcab5e6 100755
--- a/core/sysprop.mk
+++ b/core/sysprop.mk
@@ -178,7 +178,7 @@ ifeq (,$(strip $(BUILD_FINGERPRINT))) else BF_BUILD_NUMBER := $(file <$(BUILD_NUMBER_FILE)) endif
- BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(
TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)
+ BUILD_FINGERPRINT := $(PRODUCT_BRAND)/sl8541e_1h10_32b_Natv/sl8541e_1h10_32b:$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER
):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS) endif # unset it for safety. BF_BUILD_NUMBER :=
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index c2e6ad0bb..67bbb45e3 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -651,8 +651,8 @@ class BuildInfo(object): except ExternalError: return "{}/{}/{}:{}/{}/{}:{}/{}".format( self.GetBuildProp("ro.product.brand"),
- self.GetBuildProp("ro.product.name"),
- self.GetBuildProp("ro.product.device"),
+ self.GetBuildProp("sl8541e_1h10_32b_Natv"),
+ self.GetBuildProp("sl8541e_1h10_32b"), self._GetPlatformVersion(), self.GetBuildProp("ro.build.id"), self.GetBuildProp("ro.build.version.incremental"),
然后编译测试就额可以了~