Android 9.0 TV版导入GMS组件以及Google Play

article/2025/9/20 8:15:44

一、Android P之后的差异

参照phone版本整理出一版适合电视或者电视盒子相关GMS框架导入方法

可查看GMS P Initial Release Notes 了解:

1、P上增加了一些core app :AndroidPlatformServices、GoogleRestore、Device Health Services (Turbo)

2、GoogleContacts is Non-privileged ,其实2018-10 GMS 开始 8.1上也不再是特权app了。

3、AndroidPlatformServices、GoogleRestore 在P之前都是GmsCore的一部分,9.0 and later 独立出来

其他一些区别包括EEA的都可以看相关Release Notes :https://support.google.com/androidpartners_gms/answer/6173316?hl=en&ref_topic=6173346

移植最主要模块如下:

GoogleServicesFramework--  谷歌服务框架

Phonesky or Tubesky--  谷歌商店(手机版和TV版)

PrebuiltGmsCorePano--  谷歌核心服务

二、下载GMS刷机包

下载网址: https://opengapps.org/ 根据API,platform,variant下载合适的gms包。

Open Gapps各版本差异(根据自己目标机器ROM选择合适版本下载

OpenGApps有几个不同的版本,aroma,super、stock、full、mini、micro、nano、pico,TV版本,tv_stock、tv_mini,具体详情如下:

super

包含了所有 GApps ,像韩语日语中文拼音中文注音输入法等。(请注意:如果你是用的是基于原生的 ROM ,本版本会替换相机,通讯录等等所有有关应用)。体积1G左右

stock

类似于 Google Pixel 出厂内置的 GApps ,相比 super 版少了其他语种的输入法以及 Google 地球等。(请注意:如果你是用的是基于原生的 ROM ,本版本会替换相机,通讯录等等所有有关应用)。体积820M~840M左右

full

与 stock 版所包含的内容相同,但此版本不会替换手机原本的应用。体积670~690M左右,

mini

包含基础的 Google 服务框架,以及一些影响力较大的 GApps ,相比 full 版去掉了 Docs 等应用。体积370M~390M左右

nano

包含基础的 Google 服务框架,但不会有其他 不必要的 GApps。体积160M~180M左右

aroma

基于super包,允许用户选择哪些apk进行安装

 

另外针对TV还有对应版本:

tvstock

stock的Tv版本

tvmini

基于nano版本加上tv版的gms服务和应用

 

 

 

三. 需要整合到android源码中

 下载版本open_gapps-arm-9.0-tvmini-20210131,解压后内容如下:

OpenGapp 本身是使用installer.sh,进行安装的配置的;

对于生成开发版的gms框架系统的开发者来说,只需要把里面核心的几个app拿出来,验证下功能即可,install.sh 有点乱,不建议使用

 

Core目录下为谷歌服务核心文件和应用,需要预置到源码中(可以根据需要配置,前提是知道每个模块的作用)。

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

为了整合到系统源码,根据项目需要提取对应的文件,详细目录如下:

预置app时需要考虑apk版本是否为tv版,手机版本肯能在电视或者电视盒子上效果不佳甚至打开时会提示与设备不兼容。

(1)对于非APK文件(system目录):

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

# Configuration files for GMS apps PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,

$(ANDROID_PARTNER_GMS_HOME)/system,/system)

 

注:这里主要是permission和config文件,不要盲目全部导入,需要耐心的看一下作用

(2)对于APK文件:

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

例如:Chrome.apk预置到/system/app/下,添加对应的Android.mk内容如下:

###############################################################################

# Chrome

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)

LOCAL_MODULE := Chrome

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := Chrome.apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := PRESIGNED

LOCAL_DEX_PREOPT := true include $(BUILD_PREBUILT)

 

例如:AndroidPlatformServices.apk 预置到/system/priv-app/下,添加LOCAL_PRIVILEGED_MODULE := true

# ###############################################################################

# AndroidPlatformServices

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)

LOCAL_MODULE := AndroidPlatformServices

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := AndroidPlatformServices.apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := PRESIGNED

LOCAL_DEX_PREOPT := true

LOCAL_PRIVILEGED_MODULE := true include $(BUILD_PREBUILT)

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

 

四. 通过谷歌设备验证 (TV版本没有经过这一步验证,谷歌要求必须使用Android TV或者现在主推的Google TV 

  • 不能修改 build/core/MakeFile 中 的BUILD_FINGERPRINT生成方式,BUILD_FINGERPRINT的拼接格式影响CTS认证和GMS ANDROID ID的生成,可能导致谷歌设备认证不通过
  • 挂上代理,进入Play商店,等待出现设备未验证的提示,此时才会生成一个GMS ANDROID ID
  • adb 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 即可。

      注:平台原厂一般会将对应的设备进行google认证,在\device\xxx\xxx\device.mk 文件中会配置对应的fingerprint,由以下信息组成:

BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(GP_TARGET_PRODUCT)/$(GP_TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)

  通过读取系统属性[ro.build.fingerprint]或[ro.vendor.build.fingerprint]查看fingerprint信息,如果设备已经过了google认证,则导入GMS包后可直接登录Google账号。

 

 


http://chatgpt.dhexx.cn/article/A5vCnpBj.shtml

相关文章

Android 玩机指南详细汇总(刷机、root、Xposed等)

点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达! 目录 Android 系统简介Android 系统版本Android API 等级基于原生安卓的定制系统第三方 ROMOEM 定制 ROM无处不在的 Android 系统任何人都可以免费为安卓系统开发应用安卓…

【LineageOS】编译安装及windows下推送更新记录

【LineageOS】编译安装及windows下推送更新记录 背景说明编译安装GApps 安装windows下推送更新 背景说明 AOSP装谷歌服务,遇到很多问题,于是选择其它的rom,之前装了piexlExperience没有成功,后来又换了LineageOS,终于…

iOS 和 Android 的后台推送原理各是什么?有什么区别?

2019独角兽企业重金招聘Python工程师标准>>> 郑紫阳,ziyangzhihu.com 炉门、尘规、陈汤姆 等人赞同 • 收录于 知乎周刊 iOS 系统的推送(APNS,即 Apple Push Notification Service)依托一个或几个系统常驻进程运作&…

android 版本选择,谷歌服务框架版本如何选择 我该下载哪个版本解析

谷歌服务框架版本如何选择 我该下载哪个版本解析 来源:www.18183.com作者:似水流年时间:2017-06-29 谷歌服务框架版本如何选择呢?本文小编为您带来谷歌服务框架版本如何选择 我该下载哪个版本解析。 谷歌服务框架版本如何选择呢?…

GAPPS版本区别

细雨灯花落,泪眼若为容。 Open Gapps GAPPS是谷歌软件服务集合(Google Apps)的缩写形式。由于移动设备生产厂商的某些限制,一些运行Android系统的设备没有安装谷歌服务框架。这类设备在无法运行一些基于谷歌服务框架开发的应用软…

线性代数(矩阵和向量)

目录 矩阵和向量加法和标量乘法矩阵向量乘法矩阵乘法矩阵乘法特征逆和转置 矩阵和向量 矩阵: 下图为一个R(4x2)和一个R(2x3)的矩阵 矩阵优点:快速整理,索引和访问大量数据。 向量: 下图为一个R(4)的向量 加法和标量乘法 加…

线性代数(7):矩阵的应用

一、简化矩阵 (1)阶梯形矩阵 1.1.1 定义 a. 如果矩阵有零行( 元素全为 0 的行 ), 零行 全在下面; b. 各非零行的第一个非零元素列标随行标增大而增大; 1.1.2 展示 下图两个矩阵都是阶梯矩阵 …

线性代数之矩阵

矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,矩阵是许多学科中常用的数学工具。 1 矩阵运算 m*n个数aij(i1,2,...,m;j1,2,...,n)排成m行n列的矩形数表: 称为m*n矩阵,一般记为Am*n。 元素是实数就是实矩阵&…

线性代数2:矩阵(1)

目录 矩阵: 矩阵的定义: 0矩阵 方阵 同型矩阵: 矩阵相等的判定条件 矩阵的三则运算: 乘法的适用条件 矩阵与常数的乘法: 矩阵的乘法: 矩阵的乘法法则: Note1: Note2&…

线性代数:矩阵运算之乘法?

线性代数:矩阵运算之乘法? 分步阅读 授人予鱼不如授人予渔,在《线性代数》的学习中,方法尤为重要。下面就让我们一起解决《线性代数》中令人头痛的——矩阵的乘法运算吧! 如果您对——矩阵乘法的学习比较吃力&#…

线性代数:矩阵及其运算

总体结构图: 矩阵的定义: 由m*n个数,组成的m行n列的表格(注意,这里的表格,表明了矩阵和行列式的本质区别,行列式本质桑是一个数,并且行列式一定是方方正正的,行数和列数…

3.线性代数-矩阵

矩阵和Tensor 1. Tensor2.矩阵3.线性代数正确打开方式3.1 行视图3.2 列视图 4.线性相关和线性无关5. Span、基和子空间(Subspace)6.四个基本的子空间6.1 列空间6.2 零空间6.3 行空间6.4 左零空间6.5 四个基本子空间的关系 7.可逆矩阵8.方阵的特征值与特征向量9.特征分解9.1一般…

【线性代数】矩阵及其运算

【线性代数】矩阵及其运算 写在前面从向量到矩阵线性在何处,矩阵怎么来的秩,矩阵,逆矩阵 具体运算乘法行列式点乘和叉乘 线性方程组和矩阵的关系Gramer法则高斯消元法求逆矩阵解方程组 参考资料 写在前面 本文是笔者用于复习本科期间所学线性…

人工智能数学基础-线性代数4:矩阵及矩阵运算

☞ ░ 老猿Python博文目录░ 本节用到了行列式的相关知识,而在行列式中用到了矩阵知识,但总体来说先介绍矩阵再介绍行列式更合适一些,行列式的知识大家只需要知道一个矩阵A对应的行列式记为符号|A|,其结果为一个标量,…

矩阵【线性代数系列(二)】

矩阵【线性代数系列(二)】 文章目录 1.线性方程组2.矩阵的概念3. 对角矩阵 与 单位矩阵4.矩阵的运算4.1 矩阵的加法4.2 矩阵的数乘4.3 矩阵的乘法4.4 矩阵的幂4.5 交换率结合率分配率汇总4.6 矩阵的转置 5. 矩阵的行列式6.矩阵的线性变换6.逆矩阵7.克拉…

线性代数(3):矩阵

一、矩阵是什么 (1)矩阵的概念 矩阵就是 m x n 个数排列成 m 行 n 列的表格,其具体形式为: (2)矩阵与行列式的区别 a. 矩阵是一个数表,而行列式只是一个n阶的方阵; b. 矩阵的行数和列数可以不…

矩阵如何运算?——线性代数

同样是对李永乐老师的笔记做个总结和叙述&#xff08;我不写过于难懂的概念&#xff0c;只写有利于解题的干货&#xff09;&#xff0c;方便大家复习巩固 关于行列式的计算&#xff1a;<点这里> 文章目录 一、矩阵的概念及其运算1.1 矩阵的概念1.2 矩阵的运算1.2.1 基本运…

线性代数矩阵运算

线性代数的概念对于理解机器学习背后的原理非常重要&#xff0c;尤其是在深度学习领域中。它可以帮助我们更好地理解算法内部到底是怎么运行的&#xff0c;借此&#xff0c;我们就能够更好的做出决策。所以&#xff0c;如果你真的希望了解机器学习具体算法&#xff0c;就不可避…

矩阵和线性代数的应用

矩阵和线性代数是数学中重要的概念&#xff0c;它们被广泛应用于物理、工程、计算机科学、经济学等众多领域。本文将讨论矩阵和线性代数的一些基本概念以及它们在实际应用中的重要性和影响。 一、矩阵和线性代数的基本概念 矩阵是由数字组成的矩形数组。它可以表示线性方程组…

线性代数—矩阵

矩阵 矩阵的定义同型矩阵运算1、同型矩阵可加减2、矩阵乘以k&#xff08;≠0&#xff09;&#xff0c;矩阵中所有元素乘以k3、Amn * Bns Cms4、转置矩阵5、 伴随矩阵6、逆矩阵(矩阵的逆理论&#xff09;7、行阶梯矩阵8、正交矩阵 矩阵的初等变换矩阵理论矩阵的逆理论—见逆矩阵…