[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将会使用存储在它们服务器上的签名密钥来签署你的应用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web前端面试题---->HTML、CSS

一.居中方法 block元素如何居中 margin:0 auto;position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);flex布局: 对父元素操作 : justify-content:center; al…

VsCode中安装codeium 显示failed to start language server

一、在VsCode的SSH Remote插件中安装Codeium 失败: 1、在插件Remote Explore中的SSH安装Codeium插件后提示无法下载语言服务器,如下图所示 2、去Codeium的仓库中找到对应版本的语言服务器包下载,然后解压并拷贝到远程服务器Ubuntu中的如下目…

Arduino+ESP8266+华为云物联网平台实现智能开关

前言 最近在做一个物联网项目,涉及到智能开关的开发。目前已经实现简单的TCP通信远程控制,但是考虑到后期的设备管理以及设备通信所需要的技术和服务器的维护成本,我决定将设备接入云平台。本文将详细阐述如何利用华为云的物联网平台&#x…

嵌入式下C/C++调用sqlite3简单开发

交叉编译sqlite3请关注我第一篇博文 sqlite3 交叉编译-CSDN博客 sqlite3的命令的简单使用(增删改查,创建/删除表)请关注我的上一篇博文 sqlite3嵌入式使用以及C/C代码开发-CSDN博客 一、新建文件夹 此文件夹用于放置工程,比如…

工作多年,如何从 CRUD Boy 转型为分布式系统架构师?解锁分布式系统的艺术:从零开始理解分布式系统架构与设计原理!...

编程是一门艺术,它的魅力在于创造。 65 哥已经工作5年了,一直做着简单重复的编程工作,活活熬成了一个只会 CRUD 的打工 boy。 65 哥:总是听大佬讲分布式分布式,什么才是分布式系统呢? 分布式系统是一个硬件…

环境影响与碳排放生命周期评估应用及案例分析

生命周期分析 (Life Cycle Analysis, LCA) 是评价一个产品系统生命周期整个阶段——从原材料的提取和加工,到产品生产、包装、市场营销、使用、再使用和产品维护,直至再循环和最终废物处置——的环境影响的工具。这种方法被认为是一种“从摇篮到坟墓”的…

R语言实现——网状 Meta 分析

近来年,网状 Meta 分析相关研究不断涌现,此类研究不但能发表在国内各大核心期刊上,还能在SCI期刊甚至医学4大刊上看到其身影。随手在pubmed上面一搜索,就能得到一万多篇相关文献。俨然成为医学文献研究的“大杀器”! P…

是德科技KEYSIGHT E5071C网络分析仪

181/2461/8938产品概述: Keysight E5071C(安捷伦)网络分析仪提供同类产品中最高的射频性能和最快的速度,并具有宽频率范围和多功能功能。E5071C 是制造和研发工程师评估频率范围高达 20 GHz 的射频元件和电路的理想解决方案。 有…

Ansys Speos | Light Expert Group探测器组使用技巧

附件下载 联系工作人员获取附件 概述 相机挡板的设计需要在光路的不同位置同步多个照度图,以尽量减少杂散光。2023R2 Speos提供了一种新的探测器,用于高阶杂散光分析,可以同时对多个探测器进行光线追迹。Light Expert工具可以即时过滤3D视…

Linux:部署达梦数据库DM8(1)

0.安装DM8数据库安装包 产品下载-达梦数据 (dameng.com)https://www.dameng.com/list_103.html进入官方网站下载centos7的安装包,本章使用centos7进行部署,提前关闭好防火墙和selinux 建议你的系统运行内存为:2G或以上 1.部署基础环境 先安…

iOS——【CGD】

GCD 什么是GCD GCD指的是Grand Central Dispatch,它是苹果公司开发的一套多线程编程技术。GCD提供了一种简单而有效的方式来管理应用程序中的并发任务。它通过将任务提交到适当的队列(串行队列或并发队列)来管理并发执行的任务,…

MQTT.fx和MQTTX 链接ONENET物联网提示账户或者密码错误

参考MQTT.fx和MQTTX 链接ONENET物联网开发平台避坑细节干货。_mqttx和mqttfx-CSDN博客 在输入password和username后还是提示错误,是因为在使用token的时候,key填写错误,将设备的密钥填入key中

【javaWeb 第四篇】后端-Maven详细入门教程

Maven入门教程 前言Maven配置Maven依赖管理Maven的生命周期 前言 本文是作者通过学习过程中的学习笔记,希望帮助大家,同时大家可以搭配黑马程序员进行学习 Maven配置 Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具…

Day48:WEB攻防-PHP应用文件上传中间件CVE解析第三方编辑器已知CMS漏洞

目录 PHP/ASP-中间件-上传相关-IIS&Apache&Nginx(解析漏洞) IIS Apache Nginx PHP-编辑器-上传相关-第三方处理引用 PHP-CMS源码-上传相关-已知识别到利用 知识点: 1、PHP-中间件-文件上传-CVE&配置解析 2、PHP-编辑器-文件上传-第三方引用安全 3…

单链表增序排列节点(单链表算法库拓展v2.0)

对单链表中元素进行排序(至少有2个数据节点) /************************************************** (13)函数名:LinkList_sorting 功 能:对单链表中元素进行排序(至少有2个数据节点) 参 数:LinkList *&L:要进行排序的单链表 注意: ① 空表,或者只有一个数据节点,则不需要…

企业级快速开发框架 nbsaas-boot 1.1.8-2024 发布了

<parent><groupId>com.nbsaas.boot</groupId><artifactId>nbsaas-boot</artifactId><version>1.1.8-2024</version> </parent> 本次更新内容 1. 重构代码生成器&#xff0c;采用类提取和字段提取两种方式&#xff0c;提取功能…

查看 Debian 系统版本的 6 种方式

本篇文章将为大家介绍 6 种查看 Dibian 系统发行版本号的方式。 1. 使用 lsb_release 命令 lsb_release 命令可用于查看 Linux 发行版操作系统的具体版本。它可能尚未安装在你的操作系统中&#xff0c;因此你需要先安装它。运行以下命令来安装 lsb_release&#xff1a; apt-…

云原生靶场kebernetesGoat、Metarget

靶场 文章目录 靶场kebernetesGoat靶场安装Docker in DockerSSRF漏洞容器逃逸到主系统Docker CIS 基线分析Kubernetes CIS 安全基线分析分析被部署挖矿软件的容器镜像获取环境信息Hidden in layersRBAC最低权限配置错误使用 Sysdig Falco 进行运行时安全监控和检测 Metarget ke…

MT6762_联发科MTK6762安卓核心板规格参数

MTK6762核心板是一款集成了蓝牙、fm、wlan和gps模块的高度集成基带平台&#xff0c;为LTE/LTE-A和C2K智能手机应用程序提供支持。该安卓核心板集成了ARM Cortex-A53处理器&#xff0c;工作频率可达2.0GHz&#xff0c;并且还集成了功能强大的多标准视频编解码器。除此之外&#…

VScode 内存溢出 yarn/npm内存溢出问题解决

当前目录下执行 increase-memory-limit 然后再启动