首页 > 编程知识 正文

怎么在安卓安装gms 框架,安卓源码管理

时间:2023-05-03 09:26:59 阅读:224992 作者:410

1. 下载GMS刷机包

在https://opengapps.org/根据API,platform,variant下载合适的gms包,这里推荐pice size,可以最精简地保证基础谷歌服务功能

  2.提取文件


解压GMS包

Core和Optional目录下为谷歌服务核心文件和应用,需要预置到源码中

GApps目录下为一些功能应用,可不预置到源码中

继续解压Core和Optional两个目录下的所有文件,得到一些APK,权限Config和jar包等

  3. 预置

 

稍作整理

对于非APK文件:

使用宏PRODUCT_COPY_FILES,在源码编译时将非APK文件拷贝到/system/下,在device.mk里加上

PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,$(LOCAL_PATH)/gms/copyToSystem,/system)

 

对于APK文件:

增加Android.mk预置到/system/app或/system/priv-app,开启预编译减少第一次开机时间

PS: 注意LOCAL_CERTIFICATE := PRESIGNED 保证使用APK本身的签名信息,否则无法正常使用

#预置到/system/app下include $(CLEAR_VARS)LOCAL_MODULE := GoogleContactsSyncAdapterLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := app/$(LOCAL_MODULE)/$(LOCAL_MODULE).apkLOCAL_MODULE_CLASS := APPSLOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_CERTIFICATE := PRESIGNEDLOCAL_DEX_PREOPT := trueinclude $(BUILD_PREBUILT)  #预置到/system/priv-app下include $(CLEAR_VARS)LOCAL_MODULE := ConfigUpdaterLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := priv-app/$(LOCAL_MODULE)/$(LOCAL_MODULE).apkLOCAL_MODULE_CLASS := APPSLOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_CERTIFICATE := PRESIGNEDLOCAL_DEX_PREOPT := trueLOCAL_PRIVILEGED_MODULE := trueinclude $(BUILD_PREBUILT)

 

在device.mk文件中开启APK模块编译PRODUCT_PACKAGES += GoogleContactsSyncAdapterPRODUCT_PACKAGES += GoogleExtSharedPRODUCT_PACKAGES += SoundPickerPrebuiltPRODUCT_PACKAGES += AndroidPlatformServicesPRODUCT_PACKAGES += CarrierSetupPRODUCT_PACKAGES += ConfigUpdaterPRODUCT_PACKAGES += GmsCoreSetupPrebuiltPRODUCT_PACKAGES += GoogleBackupTransportPRODUCT_PACKAGES += GoogleExtServicesPRODUCT_PACKAGES += GoogleFeedbackPRODUCT_PACKAGES += GoogleOneTimeInitializerPRODUCT_PACKAGES += GooglePartnerSetupPRODUCT_PACKAGES += GoogleServicesFrameworkPRODUCT_PACKAGES += Phonesky PRODUCT_PACKAGES += PrebuiltGmsCorePi PS: 也可以通过拷贝的方式预置到系统中,不过第一次开机要做DEX2OAT,影响开机时间,不推荐

如果拷贝预置,需要在vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_system_list.txt中添加需要预制APK的package name 

 

4. 增加System分区大小


if(如果全编系统成功) goto 5

else if error == out of space? the tree size of

{

因为谷歌服务会增加200M左右System分区大小,极有可能造成分区空间不足的问题不能打包system.img, 需要增加System分区大小检查System分区大小 :vim out/target/product/ac8257_demo_1g_32/obj/PTGEN/partition_size.mk 找到 BOARD_SYSTEMIMAGE_PARTITION_SIZE:=14344519681434451968 / 1024 = 1400832, 在 源码/device/ 目录下 grep -nr "1400832" 得到 Screenshot-6.png (如果没找到可以grep 1434451968 或 1434451968/1024 或 1434451968/1024/1024 找出定义大小的位置)增加 autochips/common/BoardConfig.mk 下 BOARD_MTK_GMO_SYSTEM_SIZE_KB 的大小全编系统

}

else 联系qq: 373683458

 

5. 通过谷歌设备验证

 

不能修改 build/core/MakeFile 中 的BUILD_FINGERPRINT生成方式,BUILD_FINGERPRINT的拼接格式影响CTS认证和GMS ANDROID ID的生成,可能导致谷歌设备认证不通过挂上代理,进入Play商店,等待出现设备未验证的提示,此时才会生成一个GMS ANDROID IDadb root ; adb shell 'sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = "android_id";"'    在 https://www.google.com/android/uncertified/中填入 GMS ANDROID ID 即可  Recovery中刷入GMS包时做了什么


翻下install.sh 

for gapp_name in $core_gapps_list; do  get_apparchives "Core/$gapp_name"  for archive in $apparchives; do    case $gapp_name in      setupwizarddefault) if [ "$device_type" != "tablet" ]; then extract_app "$archive"; fi;;      setupwizardtablet)  if [ "$device_type"  = "tablet" ]; then extract_app "$archive"; fi;;      googlepixelconfig) if [ "$googlepixel_compat" = "true" ]; then extract_app "$archive"; fi;;      backuprestore) if [ "$googlepixel_compat" = "false" ]; then extract_app "$archive"; fi;;      datatransfertool) if [ "$googlepixel_compat" = "true" ]; then extract_app "$archive"; fi;;      *)  extract_app "$archive";;    esac  donedone

 

看下extract_app做了什么extract_app() {  tarpath="$TMP/$1.tar" # NB no suffix specified here  if "$TMP/unzip-$BINARCH" -o "$OPENGAZIP" "$1.tar*" -d "$TMP"; then # wildcard for suffix    app_name="$(basename "$1")"    which_dpi "$app_name"    echo "Found $1 DPI path: $dpiapkpath"    folder_extract "$tarpath" "$dpiapkpath" "$app_name/common"  else    echo "Failed to extract $1.tar* from $OPENGAZIP"  fi} 继续看 folder_extract 做了什么folder_extract() {  archive="$1"  shift  if [ -e "$archive.xz" ]; then    for f in "$@"; do      if [ "$f" != "unknown" ]; then        "$TMP/xzdec-$BINARCH" "$archive.xz" | "$TMP/tar-$BINARCH" -x -C "$TMP" -f - "$f" && install_extracted "$f"      fi    done} 继续看install_extracted做了什么install_extracted() {  file_list="$(find "$TMP/$1/" -mindepth 1 -type f | cut -d/ -f5-)"  dir_list="$(find "$TMP/$1/" -mindepth 1 -type d | cut -d/ -f5-)"  for file in $file_list; do      install -D "$TMP/$1/${file}" "/system/${file}".....}

 

注意 install -D "$TMP/$1/${file}" "/system/${file}"

结论:gms包主要是把文件解压到/system/目录下,在源码中通过一些编译项可以达到类似效果


gapps所有组件中文明细


https://tieba.baidu.com/p/5032829149?fid=12980469&pid=105404260767&red_tag=1621002966#105404260767

margin

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。