Android源码集成 Google Play

1、 The Open GApps Project 下载 对应系统和平台的gms压缩包,压缩包文件如下:

Core和Optional目录下为谷歌服务核心文件和应用,需要预置到源码中。解压Core 和 Optional 目录所有文件,得到如下文件夹:

 

其中 etc 和 lib64 以及 framework 为库文件和配置文件, 需要拷贝到 /system 目录

将 etc lib64 和 framework 拷贝到源码 /gms/copyToSystem 目录下,并在 /build/target/product/base_product.mk 中添加如下拷贝命令

PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,/data1/rom/android/lineageOS2/gms/copyToSystem,/system)

将app 和 product 文件夹下的所有apk文件拷贝到 /gms/app目录下,将 priv-app文件夹下的apk拷贝到 /gms/priv-app目录下,在 gms目录下 新建 Android.bp文件,配置预装的app

android_app_import {name: "GoogleContactsSyncAdapter",presigned: true,dex_preopt: {enabled: false,},apk: "GoogleContactsSyncAdapter.apk",
}android_app_import {name: "GoogleExtShared",presigned: true,dex_preopt: {enabled: false,},apk: "GoogleExtShared.apk",
}android_app_import {name: "PlayStoreOverlay",presigned: true,dex_preopt: {enabled: false,},apk: "PlayStoreOverlay.apk",
}android_app_import {name: "AndroidMigratePrebuilt",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "AndroidMigratePrebuilt.apk",
}android_app_import {name: "CarrierSetup",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "CarrierSetup.apk",
}android_app_import {name: "ConfigUpdater",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "ConfigUpdater.apk",
}android_app_import {name: "GoogleBackupTransport",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "GoogleBackupTransport.apk",
}android_app_import {name: "GoogleExtServices",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "GoogleExtServices.apk",
}android_app_import {name: "GoogleFeedback",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "GoogleFeedback.apk",
}android_app_import {name: "GoogleOneTimeInitializer",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "GoogleOneTimeInitializer.apk",
}android_app_import {name: "GooglePartnerSetup",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "GooglePartnerSetup.apk",
}android_app_import {name: "GoogleRestore",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "GoogleRestore.apk",
}android_app_import {name: "GoogleServicesFramework",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "GoogleServicesFramework.apk",
}android_app_import {name: "Phonesky",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "Phonesky.apk",
}android_app_import {name: "PrebuiltGmsCore",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "PrebuiltGmsCore.apk",
}android_app_import {name: "SetupWizard",privileged: true,presigned: true,dex_preopt: {enabled: false,},apk: "SetupWizard.apk",
}

在 build/target/product/base_product.mk中添加要预装的app:

#预编译GMS中的APP
PRODUCT_PACKAGES += GoogleContactsSyncAdapter \GoogleExtShared \AndroidMigratePrebuilt \CarrierSetup \ConfigUpdater \GoogleBackupTransport \GoogleExtServices \GoogleFeedback \GoogleOneTimeInitializer \GooglePartnerSetup \GoogleRestore \GoogleServicesFramework \Phonesky \PrebuiltGmsCore \SetupWizard \PlayStoreOverlay

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1537007.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第412题Fizz Buzz

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<string> fizzBuzz(int n) {vector<string> answer;for (int i 1; i < n; i) {string curr;if (i % 3 0) {curr  "Fizz";}if (i % 5 0) {curr "Buzz";}if (curr.si…

Django学习实战篇五(适合略有基础的新手小白学习)(从0开发项目)

前言&#xff1a; 本章中&#xff0c;我们开始引入前端框架Bootstrap 来美化界面。在前面的章节中&#xff0c;我们通过编写后端代码来处理数据。数据之于网站&#xff0c;就相当于灵魂之于人类。而网站的前端就相当于人的形体外貌。其中HTML是骨架&#xff0c;而CSS是皮肤&…

创造增强叙事的互动:Allison Crank的沉浸式体验设计理念

在沉浸式技术日新月异的今天,如何通过用户交互增强叙事,而非分散注意力,成为了设计师们共同面临的挑战。作为用户体验设计师和研究员,Allison Crank以其独特的视角和丰富的经验,为我们揭示了这一领域的核心原则与实践方法。 叙事与互动的和谐共生 Allison Crank强调,互…

STM32使用ESP-01S连接WiFi通过云平台与手机APP联动

ESP-01S测试 我们买回来ESP-01S模块之后&#xff0c;首先要对模块的好坏进行测试&#xff0c;是否能正常通过串口通信&#xff0c;是否能正常连接手机热点或WiFi&#xff0c;一般模块买回来默认出厂烧录了AT固件&#xff0c;如果我们需要使用一些特殊的协议&#xff08;如MQTT协…

【云岚到家-即刻体检】-day07-2-项目介绍及准备

【云岚到家-即刻体检】-day07-2-项目介绍及准备 1 项目介绍1&#xff09;项目简介2&#xff09;界面原型3&#xff09;实战目标 2 搭建实战环境1&#xff09;服务端2&#xff09;管理端前端工程3&#xff09;用户端前端工程4&#xff09;测试 3 熟悉项目代码1&#xff09;接口文…

《程序猿之设计模式实战 · 观察者模式》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

【混淆矩阵】Confusion Matrix!定量评价的基础!如何计算全面、准确的定量指标去衡量模型分类的好坏??

【混淆矩阵】Confusion Matrix&#xff01;定量评价的基础&#xff01; 如何计算全面、准确的定量指标去衡量模型分类的好坏&#xff1f;&#xff1f; 文章目录 【混淆矩阵】Confusion Matrix&#xff01;定量评价的基础&#xff01;1. 混淆矩阵2.评价指标3.混淆矩阵及评价指标…

【AI大模型】Transformer模型:Postion Embedding概述、应用场景和实现方式的详细介绍。

一、位置嵌入概述 \1. 什么是位置嵌入&#xff1f; 位置嵌入是一种用于编码序列中元素位置信息的技术。在Transformer模型中&#xff0c;输入序列中的每个元素都会被映射到一个高维空间中的向量表示。然而&#xff0c;传统的自注意力机制并不包含位置信息&#xff0c;因此需要…

强化学习Reinforcement Learning|Q-Learning|SARSA|DQN以及改进算法

一、强化学习RL 强化学习是机器学习的一个重要的分支&#xff0c;是一种有效的工具&#xff0c;在文献中被广泛用于解决MDP问题。在一个强化学习过程中&#xff0c;一个智能体只能通过和它所处的环境互动学习最优策略。特别地&#xff0c;智能体首先观察自己当前的状态&#xf…

CRE62539 不同尾缀功率不同

CRE62539MSQ 是一款内置高压 MOS 功率开关管的高性能多模式原边控制的12W开关电源芯片。CRE62539MSQ以较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE62539MSQ 提供了极为全面和性能优异的智能化保护功能&#xff0c;包括逐周期过流保护、软启动、芯片…

Linux:RPM软件包管理以及Yum软件包仓库

挂载光驱设备 RPM软件包管理 RPM软件包简介 区分软件名和软件包名 软件名&#xff1a;firefox 软件包名&#xff1a;firefox-52.7.0-1.el7.centos.x86_64.rpm 查询软件信息 查询软件&#xff08;参数为软件名&#xff09; ]# rpm -qa #当前系统中所有已安装的软件包 ]# r…

Elment-plus组件失效(没有样式)(0916)

在学习Vue3时&#xff0c;使用Element-plus组件库开发登录页面&#xff0c;发现无法显示反馈组件的样式 然后查找相关博客后&#xff0c;发现原来是因为我使用按需导入&#xff0c;然后又在登录页面导入&#xff0c;导致组件样式失效 删除导入语句后&#xff0c;成功显示反馈组…

大数据处理技术:HBase的安装与基本操作

目录 1 实验名称 2 实验目的 3 实验内容 4 实验原理 5 实验过程或源代码 5.1 Hbase数据库的安装 5.2 创建表 5.3 添加数据、删除数据、删除表 5.4 使用Java操作HBase 6 实验结果 6.1 Hbase数据库的安装 6.2 创建表 6.3 添加数据、删除数据、删除表 6.4 使用Java操…

Linux进阶 修改文件权限

linux文件权限 查看文件权限 用 ls -l 查看当前目录下文件权限 各部分对应的内容: 第一个字符代表这个文件类型[d]:目录[-] :文件[l]:连结档(link file);[b]:装置文件里面的可供储存的接口设备(可随机存取装置)[c]:装置文件里面的串行端口设备,例如键盘、鼠标(一次性…

Linux常用目录结构

一、Linux常用目录结构 目录名 目录作用 /bin/ 存放系统命令的目录,普通用户和超级用户都可以执行。 是/usr/bin/目录的软链接 /sbin/ 存放系统命令的目录,只有超级用户才可以执行。是/ usr/ sbin/目录的软链接 /usr/bin/ 存放系统命令的目录,普通用户和超级用户都可以…

在麒麟操作系统中查看进程运行时间

在麒麟操作系统中查看进程运行时间 1、使用ps命令查看进程运行时间1.1 基本命令结构1.2 示例&#xff1a;查看sshd进程的运行时间 2、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Linux操作系统中&#xff0c;包括麒麟&#xff08…

神经网络通俗理解学习笔记(4) 深度生成模型VAE、GAN

深度生成模型 什么是生成式模型蒙特卡洛方法变分推断Variational Inference变分自编码器VAE生成对抗网络Generative Adversarial NetworkDiffusion 扩散模型VAE和GAN 代码实现 什么是生成式模型 判别式和生成式模型 判别式:CNN/RNN/transformer;生成式:AE/VAE/GAN 判别式模型学…

【例题】lanqiao3236 小蓝的零花钱

样例输入 6 3 1 2 3 4 5 6样例输出 2解题思路 在序列中选取一个位置将序列分成两段&#xff0c;要求每一段中偶数和奇数的数量都相等尽可能多地进行这个操作&#xff0c;但每次操作都需要花费代价切割需要花费的代价为切割两端的元素的差的绝对值在他的预算范围内&#xff0…

基于51单片机的智能风扇控制系统Protues仿真设计

目录 一、设计背景 二、实现功能 三、仿真演示 四、源程序&#xff08;部分&#xff09; 一、设计背景 在当今这个科技日新月异的时代&#xff0c;家电产品正以前所未有的速度向智能化、自动化迈进&#xff0c;旨在为用户带来更加便捷、舒适的生活体验。电风扇&#xff0c;…

一次RPC调用过程是怎么样的?

注册中心 RPC&#xff08;Remote Procedure Call&#xff09;翻译成中文就是 {远程过程调用}。RPC 框架起到的作用就是为了实现&#xff0c;调用远程方法时&#xff0c;能够做到和调用本地方法一样&#xff0c;让开发人员更专注于业务开发&#xff0c;不用去考虑网络编程等细节…