配置

Android 服务的 local.properties 键、BuildConfig 字段和优雅降级机制。

这是 Android 版的环境变量页面。模板不会用 .env、Docker 或服务器运行时来配置 应用。它会在 Gradle 构建阶段读取 git-ignored 的 local.properties,并在 APK 中生成 BuildConfig 字段。

Android 配置链路

local.properties (git-ignored)

Android Studio 会在这里写入 sdk.dir。你也在同一个文件中添加本地服务 key。 不要提交这个文件。

Gradle 读取每个 key

app/build.gradle.kts 使用 java.util.Properties 加载文件。缺失的字符串会变成 ""POSTHOG_DISABLEDPOSTHOG_DEBUG 这类布尔值只有在值等于 true (忽略大小写)时才会变成 true

生成 BuildConfig 字段

应用读取 BuildConfig.SUPABASE_URLBuildConfig.REVENUECAT_ANDROID_KEYBuildConfig.GOOGLE_WEB_CLIENT_ID 等字段。LINKING_DOMAIN 还会作为 App Links host 注入 manifest。

控制器自行门禁服务逻辑

RevenueCat、Google 登录、PostHog、Sentry、更新提示、法律链接和其他可选集成都会检查 自己的 key;缺失时会 no-op 或隐藏相关入口。

local.properties 中的值是客户端构建值。使用这些值构建时,它们会随 APK 一起发布。REVENUECAT_WEBHOOK_AUTH 和 Firebase Admin 凭据等服务端密钥必须放在 Supabase Edge Function secrets 中,永远不要放进 local.properties

起步 local.properties

# Android SDK path; Android Studio 通常会自动写入。
sdk.dir=/path/to/Android/sdk

# Supabase
SUPABASE_URL=https://your-project-ref.supabase.co
SUPABASE_PUBLISHABLE_KEY=your_publishable_key

# Google Sign-In; OAuth web client ID.
GOOGLE_WEB_CLIENT_ID=your_google_oauth_web_client_id

# RevenueCat
REVENUECAT_ANDROID_KEY=your_public_revenuecat_android_key

模板 README 的示例块目前漏掉了 GOOGLE_WEB_CLIENT_ID,但代码已经完整接好: GoogleSignInController 会读取它,登录/注册界面会在它为空时隐藏 "Continue with Google"。

Key 参考

Supabase

Prop

Type

依赖 Supabase 的界面包括 auth、todos、profiles、uploads、device tokens、test push 以及 subscriptions 权益读模型。

RevenueCat

Prop

Type

Pro 权益 id 不是 local.properties key,而是代码常量 PurchasesController.PRO_ENTITLEMENT_ID = "pro"。在 RevenueCat 中配置 Google Play 产品 pro_monthlypro_yearlypro_lifetime,并全部绑定到同一个 pro 权益。

Google 登录

Prop

Type

这里使用 OAuth web client ID,因为 Android Credential Manager 返回的是 Supabase 服务端要验证的 Google ID token。

可观测性

Prop

Type

更新门禁

Prop

Type

Play In-App Updates 属于 Play-only。本地 debug 构建可以测试版本比较和回退 URL, 但真实更新流程需要通过 Play 分发的构建。

链接和法律

Prop

Type

发布签名

Prop

Type

RELEASE_STORE_FILE 为空或文件不存在时,release 构建会保持未签名,而不是让 debug 和 CI 流程失败。详见 Play Store 发布

Firebase 配置文件

FCM 使用第二个配置文件:

app/google-services.json

只有当这个文件存在时,app/build.gradle.kts 才会应用 com.google.gms.google-services,所以项目在没有 Firebase 配置时也能构建。 请从 Firebase Console 为你的 Android 应用下载该文件,并不要提交到 git。 README 提到 app/google-services.json.example 可作为结构参考;当前模板树中没有这个 示例文件,因此请以 Firebase 下载的 JSON 为准。

服务端密钥

特权值应保存在 Supabase Edge secrets 中:

Prop

Type

这些值绝不应该进入 APK。它们通过 supabase secrets set 设置,并由 Supabase 设置 中描述的 Edge Functions 使用。

相关页面

On this page