Firebase App Distribution — 是Google的一项服务,用于在测试人员和内部团队之间分发移动应用的预构建版本,而无需将其发布到应用商店。App Distribution提供了统一的界面来上传APK和IPA、管理测试人员组以及收集反馈。根据Firebase Documentation, 2026,该服务通过电子邮件和推送通知自动通知测试人员新版本,Fastlane集成允许直接从CI/CD流水线发布构建,无需手动操作。App Distribution支持Android(AAB/APK)和iOS(IPA),包括ad-hoc和企业分发。
要点
Firebase App Distribution — 是Google的一项服务,用于在测试人员和利益相关者之间分发移动应用的预发布版本。与在应用商店发布不同,App Distribution允许立即向选定的参与者交付构建,无需漫长的审查过程。该服务与Firebase Crashlytics集成,使开发人员能够直接从测试人员接收崩溃报告,并在公开发布之前解决问题。
传统的Beta版本分发过程包括通过电子邮件手动发送APK/IPA、上传到第三方文件服务器或设置自己的服务器。Firebase App Distribution解决了这些问题:Google Cloud中的统一构建存储库、自动通知测试人员、集中访问管理以及通过Firebase Crashlytics内置反馈。该服务对于实践CI/CD和定期发布的团队来说是不可或缺的:新构建在上传后一分钟内即可供测试人员使用。
App Distribution支持所有移动平台的标准构建格式。对于Android — APK和Android App Bundle(AAB),安装时从AAB自动生成APK。对于iOS — 用于ad-hoc、开发和企业分发的IPA文件。每个构建都附带发布说明、版本号和构建代码以供跟踪。上传文件的最大大小为500 MB,构建的存储期限为150天。
上传构建到Firebase App Distribution通过Firebase Console、CLI(firebase appdistribution:distribute)或Fastlane和Gradle等自动化工具完成。上传时指定构建版本、发布说明以及应收到通知的测试人员或组列表。Firebase自动为构建分配唯一标识符,并通过链接使其可用于安装。
Firebase Console提供了一个用于上传构建和管理版本的Web界面。控制台显示所有上传构建的历史记录,包括日期、版本、状态和安装数量。如果发现严重错误,开发人员可以禁用特定版本 — 这将阻止所有测试人员安装该版本。控制台还显示按天计算的安装图表,有助于跟踪测试活动。
Firebase CLI允许通过一个命令上传构建,这对于集成到CI/CD流水线中非常方便。distribute命令接受文件路径、项目访问令牌、测试人员组列表和可选的发布说明。认证使用具有Firebase App Distribution Admin角色的Firebase服务帐户。CLI支持Android和iOS构建,根据文件扩展名自动确定平台。
# 通过Firebase CLI上传构建
firebase appdistribution:distribute \
app-release.apk \
--app 1:123456789:android:abc123def456 \
--groups "qa-team,product-owners" \
--release-notes "授权错误已修复" \
--token "FIREBASE_TOKEN"
Firebase App Distribution提供了一个灵活的测试人员管理系统:可以通过电子邮件添加参与者,根据角色或项目创建组,并将不同的构建分配给不同的组。添加新测试人员时,系统会向他发送一封包含应用安装说明的邀请电子邮件。测试人员会收到分配给其组的每个新构建的自动通知。
组允许按功能原则组织测试人员。组示例:QA团队(完全访问所有构建)、Product Owners(访问稳定构建)、External Testers(外部Beta测试人员的有限访问权限)。一个测试人员可以是多个组的成员。上传构建时,开发人员选择目标组 — 只有所选组的成员才会收到通知,从而消除信息噪音。
以编程方式添加测试人员使用Firebase App Distribution API。API允许创建测试人员、将其添加到组中以及根据需要删除。这便于与内部测试管理系统和错误跟踪器集成。通过API添加测试人员时,他也会收到一封包含第一个应用安装链接的邀请电子邮件。
const admin = require("firebase-admin")
const serviceAccount = require("./serviceAccountKey.json")
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })
async function addTestersToGroup(email, groupAlias) {
try {
await admin.appDistribution().addTesters(email, [groupAlias])
console.log("测试人员已添加到组")
} catch (error) {
console.error("错误:", error)
}
}
addTestersToGroup("tester@example.com", "qa-team")
分发Android构建通过Firebase App Distribution支持两种格式:APK和Android App Bundle(AAB)。上传AAB时,Firebase使用Google Play App Signing自动生成与测试人员设备兼容的APK。测试人员通过直接链接安装应用 — 他们不需要访问Google Play Console,也无需作为测试人员添加到Play Console。这大大简化了Android的Beta测试过程。
要通过App Distribution安装,测试人员必须在设备上启用从未知来源安装。Firebase自动生成一个指向带有APK安装按钮的网页的链接。对于AAB格式,设备必须支持Play Core Library并已安装Google Play Store。Firebase建议将AAB用于最终版本,将APK用于快速迭代。
Firebase App Distribution的Gradle插件允许直接从Gradle任务发送构建。配置包括添加com.google.firebase.appdistribution插件、配置服务帐户和设置目标组。配置后,assembleDistRelease任务将构建应用并通过一个命令将其上传到Firebase App Distribution。
// build.gradle (module: app)
plugins {
id 'com.android.application'
id 'com.google.firebase.appdistribution'
}
android { // standard config }
firebaseAppDistribution {
appId "1:123456789:android:abc123def456"
serviceCredentialsFile "firebase-sa.json"
groups "qa-team"
releaseNotes "自动构建"
}
分发iOS构建通过Firebase App Distribution需要额外配置,因为Apple限制在App Store之外安装应用。要分发iOS应用,必须使用Apple Developer Program的ad-hoc或企业证书。测试人员必须作为设备添加到Apple Developer Portal以进行ad-hoc分发,或使用没有设备限制的企业分发。
对于ad-hoc分发,需要收集所有测试人员设备的UDID并将其添加到Apple Developer Portal。Firebase App Distribution向测试人员显示查找UDID的说明,并自动保存注册的设备。将UDID添加到配置文件并构建IPA后,测试人员会收到安装链接。Firebase建议对于拥有大量测试人员的项目使用企业证书,因为ad-hoc限制为每个帐户100台设备。
Fastlane — 推荐的用于自动化构建iOS应用的工具。Lane match管理证书和配置文件,lane sigh创建用于分发的IPA。Firebase App Distribution通过firebase_app_distribution插件与Fastlane集成,该插件上传IPA并通知测试人员。Fastlane还支持通过其他插件进行版本管理和发布说明。
# Fastfile
lane :beta do
match(type: :adhoc)
gym(scheme: "MyApp", export_method: "ad-hoc")
firebase_app_distribution(
app: "1:123456789:ios:abc123def456",
groups: "qa-team",
release_notes: "构建时间 #\{Time.now.strftime
('%Y-%m-%d %H:%M')}"
)
end
Firebase App Distribution与CI/CD的完全集成允许在每次提交到存储库时自动发布新构建。通过配置CI流水线,团队在推送代码后几分钟内就能收到测试人员的即时反馈。App Distribution支持所有流行的CI系统:GitHub Actions、GitLab CI、Jenkins、Bitrise和CircleCI。每个平台需要自己的配置,但总体原则相同:构建 → 上传 → 通知。
GitHub Actions允许配置在推送到develop分支或创建拉取请求时自动分发构建。工作流包括安装Java/Flutter/Node.js、构建应用、通过Firebase Service Account进行认证以及使用distribute命令运行Firebase CLI。密钥(令牌、服务帐户)存储在GitHub Secrets中,不会在构建日志中泄露。对于iOS,还需要在工作流中配置Xcode和安装Fastlane。
# .github/workflows/distribute.yml
name: Distribute to Firebase
on:
push: { branches: [ develop ] }
jobs:
build-and-distribute:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v3
with: { distribution: "temurin", java-version: "17" }
- name: Build APK
run: ./gradlew assembleDebug
- name: Upload to Firebase
uses: wzieba/Firebase-Distribution-GitHub-Action@v1
with:
appId: "${{ secrets.FIREBASE_APP_ID }}"
serviceCredentialsFileContent: "${{ secrets.FIREBASE_SA_KEY }}"
groups: qa-team
file: app/build/outputs/apk/debug/app-debug.apk
Firebase App Distribution与Firebase Crashlytics集成,自动从测试人员收集崩溃报告。Crashlytics自动将崩溃与特定的构建版本和设备关联起来,有助于快速定位和修复问题。测试人员还可以通过App Distribution的Web界面发送屏幕截图和评论,并在安装构建后收到反馈表单的链接。
常见问题
Firebase App Distribution — 是一个跨平台服务(Android + iOS),与仅适用于iOS的TestFlight不同。App Distribution还与Crashlytics和Firebase Analytics集成,为两个平台的Beta测试提供统一的生态系统。
构建自上传之日起保留150天。超过此期限后,它们将被自动删除。建议定期上传新构建并通过Firebase Console手动删除过时的构建,以防止测试人员安装旧版本。
Firebase App Distribution对测试人员数量没有限制。对于iOS ad-hoc分发,Apple限制每个帐户100台设备。对于Android和iOS企业分发,测试人员数量没有限制。
可以,App Distribution支持AAB(Android App Bundle)。Firebase使用Google Play App Signing为每个测试人员设备从AAB自动生成APK。这对于在Play Store发布之前进行测试特别方便。
是的,App Distribution包含在Firebase的免费Spark计划中。Spark限制:每个项目每月最多500名测试人员和25,000次安装。Blaze计划取消了这些限制并增加了优先支持。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。