本页将介绍 Google Play Core 库以及如何将其添加到您的项目中。
什么是 Play Core?
Play Core 库是您的应用与 Google Play 商店的运行时接口。您可以使用 Play Core 执行的操作包括:
Play Core 库支持 Java、原生代码和 Unity。如需详细了解最新的 Play Core 库版本,请参阅版本说明。
将 Play Core 库添加到您的项目中
开始使用 Play Core 库之前,您需要先将其添加到您的应用项目中。您需要采取的步骤取决于您是使用 Java、Kotlin、原生开发还是使用 Unity 进行开发。
Java 或 Kotlin
如果您使用 Java 或 Kotlin 开发项目,则可以将 Play Core 库作为 Gradle 依赖项导入 Android 项目,如下所示:
Groovy
// In your app’s build.gradle file: ... dependencies { // This dependency is downloaded from the Google’s Maven repository. // So, make sure you also include that repository in your project's build.gradle file. implementation 'com.google.android.play:core:1.10.3' // For Kotlin users also add the Kotlin extensions library for Play Core: implementation 'com.google.android.play:core-ktx:1.8.1' ... }
Kotlin
// In your app’s build.gradle file: ... dependencies { // This dependency is downloaded from the Google’s Maven repository. // So, make sure you also include that repository in your project's build.gradle file. implementation("com.google.android.play:core:1.10.3") // For Kotlin users also import the Kotlin extensions library for Play Core: implementation("com.google.android.play:core-ktx:1.8.1") ... }
Play Core KTX 库是可选的,为常规 Play Core 库中的异步方法调用提供了 Kotlin 协程版本,并且提供了其他有用的扩展,使得从 Kotlin 使用 API 更为得心应手。
原生代码
Play Core 原生 SDK 为 Play Asset Delivery 提供 C/C++ API 接口。该 SDK 设计用于使用 CMake 构建 ARM 和 x86 原生库,以及使用 Gradle 生成 Android App Bundle 和 APK。
设置您的开发环境
执行以下其中一项操作:
- 安装 Android Studio 4.0 或更高版本。使用 SDK 管理器界面安装 Android SDK Platform 版本 10.0(API 级别 29)。
- 安装 Android SDK 命令行工具,然后使用
sdkmanager
安装 Android SDK Platform 版本 10.0(API 级别 29)。
使用 SDK 管理器安装最新的 CMake 和 Android 原生开发套件 (NDK),让 Android Studio 做好原生开发准备。如需详细了解如何创建或导入原生项目,请参阅 NDK 入门指南。
下载 zip 文件并将其解压缩到您的项目所在位置。
下载链接 大小 SHA-256 校验和 55.6 MB 058b4069f09714da938656d43b6dc28d3bc6f821c9d406e9c96a1c3af014dc45 更新应用的
build.gradle
文件,如下所示:Groovy
// App build.gradle plugins { id 'com.android.application' } // Define a path to the extracted Play Core SDK files. // If using a relative path, wrap it with file() since CMake requires absolute paths. def playcoreDir = file('../path/to/playcore-native-sdk') android { defaultConfig { ... externalNativeBuild { cmake { // Define the PLAYCORE_LOCATION directive. arguments "-DANDROID_STL=c++_static", "-DPLAYCORE_LOCATION=$playcoreDir" } } ndk { // Skip deprecated ABIs. Only required when using NDK 16 or earlier. abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } buildTypes { release { // Include Play Core Library proguard config files to strip unused code while retaining the Java symbols needed for JNI. proguardFile "$playcoreDir/proguard/common.pgcfg" proguardFile "$playcoreDir/proguard/per-feature-proguard-files" ... } debug { ... } } externalNativeBuild { cmake { path 'src/main/CMakeLists.txt' } } } dependencies { // Use the Play Core AAR included with the SDK. implementation files("$playcoreDir/playcore.aar") // Use the following dependency for the Play Integrity API. implementation("com.google.android.play:integrity:1.0.0") ... }
Kotlin
// App build.gradle plugins { id("com.android.application") } // Define a path to the extracted Play Core SDK files. // If using a relative path, wrap it with file() since CMake requires absolute paths. val playcoreDir = file("../path/to/playcore-native-sdk") android { defaultConfig { ... externalNativeBuild { cmake { // Define the PLAYCORE_LOCATION directive. arguments += listOf("-DANDROID_STL=c++_static", "-DPLAYCORE_LOCATION=$playcoreDir") } } ndk { // Skip deprecated ABIs. Only required when using NDK 16 or earlier. abiFilters.clear() abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64") } } buildTypes { release { // Include Play Core Library proguard config files to strip unused code while retaining the Java symbols needed for JNI. proguardFile("$playcoreDir/proguard/common.pgcfg") proguardFile("$playcoreDir/proguard/per-feature-proguard-files") ... } debug { ... } } externalNativeBuild { cmake { path = "src/main/CMakeLists.txt" } } } dependencies { // Use the Play Core AAR included with the SDK. implementation(files("$playcoreDir/playcore.aar")) ... }
更新应用的
CMakeLists.txt
文件,如下所示:cmake_minimum_required(VERSION 3.6) ... # Add a static library called “playcore” built with the c++_static STL. include(${PLAYCORE_LOCATION}/playcore.cmake) add_playcore_static_library() // In this example “main” is your native code library, i.e. libmain.so. add_library(main SHARED ...) target_include_directories(main PRIVATE ${PLAYCORE_LOCATION}/include ...) target_link_libraries(main android playcore ...)
Unity
部分 Play Core API 提供了 Unity 插件,包括 Play Asset Delivery。从适用于 Unity 的 Google Play 插件版本页面下载最新版本。 这是一个单独的软件包,里面包含 Play Core 插件以及其他 Play 插件,例如 Play 应用内购买结算插件和 Play 免安装体验插件。
下载 Play Core Native SDK
您必须先接受以下条款及条件才能下载。
条款及条件
上次修改时间:2020 年 9 月 24 日- 使用 Play Core 软件开发套件,即表示您同意在遵守 Google API 服务条款(以下简称“API 服务条款”)的同时,也遵守这些条款。如果这些条款与 API 服务条款存在冲突,以这些条款为准。请仔细阅读这些条款和 API 服务条款。
- 就这些条款而言,“API”是指 Google 的 API、其他开发者服务和相关软件(包括任何可再分发代码)。
- “可再分发代码”是指 Google 提供的调用 API 的对象代码或头文件。
- 根据这些条款和 API 服务条款的规定,您可以复制和分发可再分发代码,但只能纳入为您的 API 客户端的一部分。Google 及其许可人拥有可再分发代码的所有权利、所有权和利益,包括任何及所有知识产权和其他专有权利。您不得修改、翻译可再分发代码,也不得创作可再分发代码的衍生作品。
- Google 随时可变更这些条款,如有变更,Google 会向您发出通知,同时您可以选择不继续使用 Play Core 软件开发套件。Google 会在 https://developer.android.com/guide/playcore/license 上发布条款修改通知。变更不具有追溯效力。
Play Core 软件开发套件服务条款
上次修改时间:2020 年 9 月 24 日- 使用 Play Core 软件开发套件,即表示您同意在遵守 Google API 服务条款(以下简称“API 服务条款”)的同时,也遵守这些条款。如果这些条款与 API 服务条款存在冲突,以这些条款为准。请仔细阅读这些条款和 API 服务条款。
- 就这些条款而言,“API”是指 Google 的 API、其他开发者服务和相关软件(包括任何可再分发代码)。
- “可再分发代码”是指 Google 提供的调用 API 的对象代码或头文件。
- 根据这些条款和 API 服务条款的规定,您可以复制和分发可再分发代码,但只能纳入为您的 API 客户端的一部分。Google 及其许可人拥有可再分发代码的所有权利、所有权和利益,包括任何及所有知识产权和其他专有权利。您不得修改、翻译可再分发代码,也不得创作可再分发代码的衍生作品。
- Google 随时可变更这些条款,如有变更,Google 会向您发出通知,同时您可以选择不继续使用 Play Core 软件开发套件。Google 会在 https://developer.android.com/guide/playcore/license 上发布条款修改通知。变更不具有追溯效力。
Play Core SDK 数据安全
Google Play 有一个“数据安全”部分,供开发者披露其应用的数据收集、分享和安全做法。为了满足“数据安全”部分的要求,您可以参考以下信息,了解 Play Core SDK 如何处理数据。
Play Core SDK 是您的应用与 Google Play 商店之间的运行时接口。因此,当您在自己的应用中使用 Play Core 时,Play 商店会运行自己的进程,其中包括处理受 Google Play 服务条款约束的数据。以下信息说明了 Play Core SDK 如何通过处理数据来处理从您的应用发来的特定请求。
其他语言 API
收集的使用情况数据 | 已安装语言的列表 |
数据收集目的 | 我们会利用收集的数据来提供不同语言版本的应用,以及在应用更新后保留已安装的语言。 |
数据加密 | 数据会加密。 |
数据分享 | 我们不会将收集的数据发送给任何第三方。 |
数据删除 | 我们会在固定保留期限过后删除收集的数据。 |
Play Feature Delivery
收集的使用情况数据 |
设备元数据 应用版本 |
数据收集目的 | 我们会利用收集的数据来向设备提供合适的模块,以及在更新后及备份和恢复后保留已安装的模块。 |
数据加密 | 数据会加密。 |
数据分享 | 我们不会将收集的数据发送给任何第三方。 |
数据删除 | 我们会在固定保留期限过后删除收集的数据。 |
Play Asset Delivery
收集的使用情况数据 |
设备元数据 应用版本 |
数据收集目的 | 我们会利用收集的数据来为设备提供合适的资源包,以及在更新后保留已安装的资源包。 |
数据加密 | 数据会加密。 |
数据分享 | 我们不会将收集的数据发送给任何第三方。 |
数据删除 | 我们会在固定保留期限过后删除收集的数据。 |
应用内更新
收集的使用情况数据 |
设备元数据 应用版本 已安装模块和资源包的列表 |
数据收集目的 | 我们会利用收集的数据来确定是否有可用的更新,以及更新的预计大小。 |
数据加密 | 数据会加密。 |
数据分享 | 我们不会将收集的数据发送给任何第三方。 |
数据删除 | 我们会在固定保留期限过后删除收集的数据。 |
应用内评价
收集的使用情况数据 | 用户输入的数据(评分和自由文本评价) |
数据收集目的 | 我们会利用收集的数据在 Play 商店中发表评价。 |
数据加密 | 数据会加密。 |
数据分享 | 我们会利用收集的数据在 Play 商店中发表公开评价;或者,如果应用位于封闭式测试轨道中,我们会与应用开发者私下分享所收集的数据。 |
数据删除 | 用户可以在 Google Play 商店帐号或 Google 帐号中删除自己的评价。 |
Play Integrity API
收集的使用情况数据 |
应用版本 应用签名证书 Google Play 服务生成的设备证明令牌 |
数据收集目的 | 我们会利用收集的数据来验证应用完整性、许可状态和设备完整性。 |
数据加密 | 数据会加密。 |
数据分享 | 我们不会将收集的数据发送给任何第三方。 |
数据删除 | 我们会在固定保留期限过后删除收集的数据。 |
虽然我们力求做到尽可能公开透明,但对于 Google Play 的“数据安全”部分针对您的应用的用户数据收集、分享和安全做法提供的表单,您需自行负责决定如何回应。