[Android]创建Google Play内购aab白包

2024-03-27 11:04

本文主要是介绍[Android]创建Google Play内购aab白包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发时需要调试Google内购,需要先往Google商店传一个白包上去。确定包名,然后进行内购产品创建。

1.创建一个空项目,填写正式名称和正式包名。

如果你只是为一个测试开发账号打白包,然后进行内购测试,这时包名随便写肯定不能填正式包名。包名一旦随着包传到Google Play Console后,就会被这个账号占用。

选择Kotlin DSL

2.在应用级build.gradle.kts中添加com.android.billingclient:billing依赖然后同步

dependencies {...// 以前的写法// implementation 'com.android.billingclient:billing:6.1.0'// 现在写法implementation(libs.billingclient.billing)
}

com.android.billingclient:billing 是一个Google提供的Android库,用于在Android应用中实现应用内购买(In-App Purchases,简称IAP)功能。这个库是Google Play Billing Library的一部分,它提供了一个简单的API来帮助开发者轻松地集成IAP服务。

通过使用Google Play Billing Library,开发者可以实现以下功能:

  • 查询可售商品:可以查询Google Play上定义的商品,包括一次性商品(如游戏中的虚拟货币)和订阅(如内容服务的月度或年度订阅)。

  • 进行购买:可以启动购买流程以供用户购买商品,并处理购买交易。

  • 确认购买:在商品被购买后,可以确认交易,以确保用户的购买得到处理,并且商品被正确地交付。

  • 检查购买历史记录:可以检查用户过去的购买记录,以确定用户是否已购买特定商品,特别是对于恢复购买或实现非消耗品的逻辑非常有用。

  • 管理订阅:可以为用户提供订阅管理的接口,包括订阅升级、降级和取消。

使用Google Play Billing Library的一个重要好处是它处理了很多复杂的底层交互和安全性问题,例如验证购买和加密通信,这样开发者就可以专注于创建更好的用户体验而不必担心底层的交易安全问题。

3.报错Unresolved reference: billingclient

在 Kotlin 项目中,如果你想使用 implementation(libs.billingclient.billing) 这种格式来添加依赖项,通常意味着你的项目配置了版本目录(Version Catalogs)特性。这是在 Gradle 7.0 中引入的一种新的依赖管理方式,允许在一个单独的文件中集中管理所有的依赖项和它们的版本。

如果你遇到了 Unresolved reference: billingclient 的错误,这通常表明在你的版本目录配置中没有名为 billingclient.billing 的条目。为了解决这个问题,你需要在版本目录文件中添加正确的条目。

版本目录通常在 gradle/libs.versions.toml 文件中定义,但也可能是在其他位置,取决于你的项目配置。

gradle/libs.versions.toml格式如下:

[versions]
agp = "8.3.0"
billingVersion = "6.1.0"
kotlin = "1.9.0"
coreKtx = "1.10.1"
junit = "4.13.2"
junitVersion = "1.1.5"
espressoCore = "3.5.1"
lifecycleRuntimeKtx = "2.6.1"
activityCompose = "1.7.0"
composeBom = "2023.08.00"[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
billingclient-billing = { module = "com.android.billingclient:billing", version.ref = "billingVersion" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

可以看到,已经有了正确的条目来表示 Google Play Billing Library,它是用以下方式定义的:

billingclient-billing = { module = "com.android.billingclient:billing", version.ref = "billingVersion" } 

这个条目引用了版本键 billingVersion,它被定义为 "6.1.0"。

所以在 build.gradle.kts 或 build.gradle 配置文件中,注意不要输入错误,应该使用 libs.billingclient.billing 来添加依赖项,如下所示:

dependencies {implementation(libs.billingclient.billing)// ... 其他依赖项
}

4.前往Build > Generate Signed Bundle / APK打包aab或apk

官方文档:https://developer.android.com/studio/publish/app-signing

创建秘钥后保存好,下次更新时直接选择这次创建的秘钥。

 

在Android应用打包过程中,如果选择了“Export encrypted key for enrolling published apps in Google Play App Signing”,这将导出一个名为 private_key.pepk 的文件。此文件包含用于Google Play App Signing的加密后的私钥。

Google Play App Signing是一项在Google Play Console中提供的服务,它允许Google帮助你管理你的应用签名密钥。使用这项服务的优势包括:

  • 安全性增强:你的签名密钥存储在Google的安全服务器上,降低了密钥被泄露或丢失的风险。
  • 键管理灵活性:如果你的签名密钥丢失或被盗,Google Play App Signing可以帮助你更换新的密钥。
  • 大小优化:Google可以为不同的设备生成优化过的APK,减少应用的下载体积。
  • 未来证明:如果将来需要使用新的签名算法,Google可以帮助转换到新的签名方案。

当你第一次上传你的应用到Google Play时,如果你选择了Google Play App Signing,你需要提供你的应用签名密钥。这就是为什么你需要导出 private_key.pepk 文件。你需要在Google Play Console的“应用签名”部分上传这个文件,以便Google可以使用你的私钥(现在由Google安全地管理)来签署你的APK或App Bundle。

操作步骤如下:

  1. 在Android Studio中生成签名的APK或者Android App Bundle时选择导出和上传PEPK文件。
  2. 在生成的向导中,勾选“Export encrypted key for enrolling published apps in Google Play App Signing”。
  3. 按照指示完成导出流程,你会得到一个 private_key.pepk 文件。
  4. 登录到Google Play Console,并找到你的应用。
  5. 在"Release"管理或类似的区域找到"App Signing"部分。
  6. 按照Google Play Console的指示上传 private_key.pepk 文件。

一旦你上传了这个文件,Google Play App Signing服务就会接管你的应用的签名过程。在这之后,每次你上传一个新的APK或者App Bundle到Google Play时,Google将会使用存储在它们服务器上的签名密钥来签署你的应用。

https://developer.android.com/studio/publish/app-signing

这篇关于[Android]创建Google Play内购aab白包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/851887

相关文章

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解