ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Firebase App Distribution Android 快速入门:实现应用内新版本构建提醒

Firebase App Distribution Android 快速入门:实现应用内新版本构建提醒 示例工程【免费下载链接】quickstart-androidFirebase Quickstart Samples for Android项目地址https://gitcode.com/gh_mirrors/qu/quickstart-android点击查看免费下载Firebase App Distribution 的 Android SDK 可以让测试人员在 App 内直接收到新版本构建可安装的提醒in-app alert无需反复刷新邮箱或后台。本文基于 quickstart-android 仓库中的appdistribution示例模块从依赖接入、初始化到核心 APIupdateIfNewReleaseAvailable()的完整调用链路讲解如何快速为 Android 应用接入并定制测试版新版本提醒并给出 Java 与 Kotlin 双版本实现、构建配置要点及常见问题排查思路。图片说明以下是 App Distribution Quickstart 应用运行后的真实界面弹窗即 SDK 展示的Enable new build alerts新构建提醒交互。1. App Distribution SDK 是什么Firebase App Distribution 是一个面向测试分发的服务开发者通过 Firebase 控制台或 CLI 上传 APK / AAB测试人员在手机上安装后即可持续收到新版本推送。而 Android 端的 App Distribution SDK 将提醒这件事做到了应用内部——当你的应用启动或回到前台时SDK 会查询是否有新版本可用如果有就在应用内弹出提示引导测试人员直接下载安装整个流程不依赖外部通知渠道。仓库 appdistribution/README.md 对该示例的定位表述得非常清楚展示如何使用 App Distribution SDK 来创建和定制面向测试人员的新构建提醒new build alerts。本模块正是围绕这一核心能力展开的最小可运行示例。2. 示例工程结构在仓库中appdistribution是一个独立的 Gradle 工程内部结构如下appdistribution/ ├── app/ │ ├── build.gradle.kts # 模块构建脚本依赖、SDK 配置 │ └── src/ │ ├── androidTest/ # 设备端仪器测试 │ └── main/ │ ├── AndroidManifest.xml │ ├── java/com/google/firebase/appdistributionquickstart/ │ │ ├── EntryChoiceActivity.kt # 入口选择页Java / Kotlin │ │ ├── java/MainActivity.java # Java 版本示例 │ │ └── kotlin/KotlinMainActivity.kt # Kotlin 版本示例 │ └── res/ # 布局、字符串、图标等资源 ├── docs/result.png # 运行结果截图 ├── settings.gradle.kts # 工程与子模块声明 └── gradlew / gradlew.bat # Gradle 包装脚本该工程在根目录 settings.gradle.kts 中被注册为:appdistribution:app模块与:auth:app、:firestore:app等其他 Firebase 示例并列说明它遵循整个仓库统一的构建体系。应用提供了两个入口 Activity分别对应 Java 与 Kotlin 两种实现并由EntryChoiceActivity作为 Launcher 统一选择进入见 AndroidManifest.xml。这种同一功能、双语言演示的组织方式是 quickstart 系列仓库的典型做法方便开发者对照学习。3. 依赖接入使用 Firebase BoM 管理版本接入 App Distribution SDK 的第一步是在模块构建脚本中添加依赖。示例模块 appdistribution/app/build.gradle.kts 给出了完整做法plugins { id(com.android.application) id(com.google.gms.google-services) } dependencies { // 导入 Firebase BoM统一管理 Firebase 各库版本 implementation(platform(com.google.firebase:firebase-bom:34.18.0)) // 引入 App Distribution SDK示例使用的是 prerelease beta 版本 implementation(com.google.firebase:firebase-appdistribution:16.0.0-beta20) // 官方推荐配合 Google Analytics以获得最优体验非必需 implementation(com.google.firebase:firebase-analytics) }几个值得注意的要点Firebase BoMBill of Materials通过platform(com.google.firebase:firebase-bom:34.18.0)引入后后续所有 Firebase 依赖都无需显式声明版本号BoM 会统一对齐兼容版本。仓库的版本目录 gradle/libs.versions.toml 中定义firebaseBom 34.18.0与示例中的写法保持一致。SDK 版本示例当前锁定的是16.0.0-beta20属于 prerelease 变体构建脚本注释也写明 ADD the SDK to the prerelease variant only。生产环境请以官方文档发布的稳定版本为准。Google Analytics 可选firebase-analytics并非 SDK 运行的必要条件但官方推荐添加因为它能为测试分发提供更完整的漏斗与行为数据。com.google.gms.google-services插件用于读取google-services.json完成 Firebase 初始化这是所有 Firebase Android 集成的前提。此外模块还启用了viewBinding truebuild.gradle.kts因此源码中可以直接使用ActivityMainBinding访问布局视图。4. 核心 APIupdateIfNewReleaseAvailable()SDK 的核心入口是FirebaseAppDistribution单例对象其关键方法是updateIfNewReleaseAvailable()。该方法会异步检查是否有新版本构建可供测试人员安装如果存在新版本SDK 会自动弹出一个应用内提醒对话框供测试人员点击Turn On开启提醒并进入下载安装流程。4.1 Kotlin 版本见 KotlinMainActivity.ktimport com.google.firebase.appdistribution.FirebaseAppDistribution import com.google.firebase.appdistribution.FirebaseAppDistributionException import com.google.firebase.appdistribution.appDistribution import com.google.firebase.Firebase class KotlinMainActivity : AppCompatActivity() { private lateinit var firebaseAppDistribution: FirebaseAppDistribution override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // 获取 FirebaseAppDistribution 单例Kotlin 扩展属性写法 firebaseAppDistribution Firebase.appDistribution } override fun onResume() { super.onResume() // 每次回到前台时检查新版本 firebaseAppDistribution.updateIfNewReleaseAvailable() .addOnProgressListener { updateProgress - // 可选在系统 NotificationManager 的自动更新之外 // 实现自定义的进度更新 } .addOnFailureListener { e - if (e is FirebaseAppDistributionException) { // 处理异常 } } } }4.2 Java 版本对应的 Java 实现见 MainActivity.java逻辑完全一致仅在语法上不同import com.google.firebase.appdistribution.FirebaseAppDistribution; import com.google.firebase.appdistribution.FirebaseAppDistributionException; public class MainActivity extends AppCompatActivity { private static final String TAG AppDistribution-Quickstart; private FirebaseAppDistribution mFirebaseAppDistribution; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final ActivityMainBinding binding ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); // Java 使用静态方法获取单例 mFirebaseAppDistribution FirebaseAppDistribution.getInstance(); } Override public void onResume() { super.onResume(); mFirebaseAppDistribution.updateIfNewReleaseAvailable() .addOnProgressListener(updateProgress - { // 可选实现自定义进度更新 }) .addOnFailureListener(e - { if (e instanceof FirebaseAppDistributionException) { // 处理异常 } }); } }4.3 关键设计解读从源码结构可以总结出 SDK 使用上的三个关键设计调用时机选在onResume()而非onCreate()两个示例都把检查放在onResume()因为测试人员可能停留在应用内较长时间onCreate只在冷启动时触发一次放在onResume可确保每次从后台回到前台时都会重新检查覆盖测试人员此刻刚好有新版本可用的场景。初始化在onCreate、检查在onResumeFirebaseAppDistribution单例在onCreate中获取一次并保存为成员变量避免重复获取真正的网络检查则延迟到onResume。回调三件套updateIfNewReleaseAvailable()返回Task示例通过addOnProgressListener下载进度与addOnFailureListener失败处理异常类型为FirebaseAppDistributionException挂接回调。进度监听器是可选的——SDK 默认会通过系统NotificationManager自动展示下载进度这里的 listener 是用于在自动通知之外再叠加自定义 UI 进度源码注释对此有明确说明。关于新版本的判定SDK 会比较当前安装构建的版本与已分发构建的版本信息只对测试人员账号可见的新构建触发提醒。这属于 SDK 内部行为从示例源码中可以推断应用侧无需也不应该自己实现版本比较逻辑。5. 从拉取到安装SDK 内部流程推演虽然没有 SDK 源码在本仓库内但结合官方 API 语义与示例代码可以梳理出一次完整的新构建提醒流程应用进入前台onResume()触发updateIfNewReleaseAvailable()。版本检查SDK 向 App Distribution 服务端查询判断是否存在对当前测试人员可见的新构建。应用内提醒若存在新构建SDK 在应用内弹出提醒对话框README 截图 docs/result.png 展示的正是这一步——Enable new build alerts弹窗提示 Get in-app alerts when new builds are ready to test并提供 NOT NOW 与 TURN ON 两个按钮。下载与安装测试人员确认后SDK 负责下载新构建并引导安装下载进度默认通过系统通知展示同时可通过addOnProgressListener获取进度以便实现自定义 UI。测试人员身份由 Firebase 认证体系App Distribution 测试人员邀请机制决定SDK 会自动识别当前设备对应的测试人员账号。6. 界面布局与文案应用主界面由 activity_main.xml 定义是一个极简的 ConstraintLayout顶部展示 Firebase logodrawable/firebase_lockup_400下方是说明文字。对应的文案定义在 strings.xmlstring nameapp_nameApp Distribution Quickstart/string string nametextview_textWelcome to the Firebase App Distribution Quickstart app. Press the button to trigger an analytics event!/string界面本身并不承载业务逻辑它的作用是提供一个宿主当 SDK 检测到新版本时提醒弹窗会叠加在任意前台 Activity 之上。这也印证了该示例的核心目的——演示 SDK 的提醒能力而非业务功能。7. 构建与运行7.1 前提条件在构建运行前需要完成创建 Firebase 项目并注册 Android 应用下载google-services.json放入appdistribution/app/目录。这是 Firebase 官方 Android 集成流程的必选步骤对应 README 中指向的官方指引缺少该文件时com.google.gms.google-services插件会直接报错。准备好 App Distribution 测试人员账号并至少上传一个初始构建到 Firebase 控制台否则没有新版本可供检测。7.2 构建命令在仓库根目录使用 Gradle 包装脚本构建该模块也可以单独在appdistribution/目录下执行./gradlew# 从仓库根目录构建 appdistribution 模块 ./gradlew :appdistribution:app:assembleDebug # 或进入 appdistribution 目录后执行 cd appdistribution ./gradlew assembleDebug模块 SDK 配置要点build.gradle.ktscompileSdk 37、targetSdk 37、minSdk 24覆盖 Android 7.0 及以上设备multiDexEnabled true因为 Firebase 依赖链较长方法数可能超过 64K需要开启 multidexJava 17 编译级别sourceCompatibility/targetCompatibility。7.3 测试仓库还包含仪器测试 InstrumentedTest.java使用 Espresso UIAutomator 验证弹窗在应用回到前台时正确显示testFiamDisplaysOnForegroundCampaign。不过需要注意该测试文件的用例名与实现细节实际上更贴近 Firebase In-App Messaging 的弹窗验证逻辑且依赖的视图 IDcollapse_button、modal_root、eventTriggerButton在当前的 activity_main.xml 中并不存在属于历史遗留代码。因此运行时可能会失败建议以手工验证为主安装应用后由测试人员账号触发一次新构建上传观察前台是否弹出提醒。8. 常见问题与建议提醒没有弹出优先检查google-services.json是否就位、当前设备是否绑定了有效的测试人员账号、控制台是否确实上传了新构建版本号高于当前安装版本。只在调试构建上验证App Distribution 针对的是测试分发场景正式发布的 release 构建通常不需要集成提醒 SDK示例中的 release 构建类型也关闭了混淆isMinifyEnabled false方便排查。生产环境务必使用稳定版 SDK示例锁定的是 beta 版本16.0.0-beta20接入生产应用前请根据官方发布渠道升级到稳定版本。谨慎对待遗留测试代码如 7.3 节所述androidTest下的仪器测试与当前示例界面并不匹配参考时需要甄别不要盲目照搬。9. 小结通过这个快速入门示例你可以掌握 Firebase App Distribution Android SDK 的最小接入闭环引入 BoM 与 SDK 依赖、在onResume中调用updateIfNewReleaseAvailable()、通过进度与失败监听处理异步结果。整个示例提供了 Java 与 Kotlin 两套等价实现仓库内的 README 与 运行截图 可作为对照参考。在你自己的应用中接入时把示例中的调用代码放进目标 Activity 的onResume()并保证测试人员账号与构建上传链路就绪即可复现完整的新版本提醒体验。赞分享示例工程【免费下载链接】quickstart-androidFirebase Quickstart Samples for Android项目地址https://gitcode.com/gh_mirrors/qu/quickstart-android点击查看免费下载相关推荐React Native Firebase App Distribution 模块实战指南安装、Gradle 插件与新版本提醒React Native Firebase App Distribution 模块实战指南安装、Gradle 插件与新版本提醒 Firebase App Di移动开发后端Cambria未来路线图即将推出的5大功能与改进Cambria未来路线图即将推出的5大功能与改进 Cambria作为专注于Schema双向进化的强大工具正通过持续优化帮助开发者轻松应对数据结构变更挑战。本IceCubesApp的版本更新提醒App Store版本检查实现IceCubesApp的版本更新提醒App Store版本检查实现 在移动应用开发中及时提醒用户更新应用是提升用户体验和确保功能完整性的重要环节。IceCu移动开发社交创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表