跳转到内容

Android 快速入门

几分钟之内,你的 Android 应用就会读取一个真实的 feature flag——持久缓存、离线安全,设备标识已为你签发并存好。

需要 minSdk 26(Android 8.0)。Kotlin,协程是唯一的依赖家族。

SDK 放在 GitHub 上的一个公开仓库里——把它作为源码依赖使用:在 v1.0.0 标签处克隆 FortressFlag_SDK_android,并把它作为一个 Gradle included build 添加到你的项目里,其库模块是 fortressflag。

Terminal window
git clone --branch v1.0.0 https://github.com/FortressFlag/FortressFlag_SDK_android

只需一次,在应用启动时——你的 Application.onCreate 是自然的位置:

import com.fortressflag.sdk.Configuration
import com.fortressflag.sdk.Environment
import com.fortressflag.sdk.FortressFlag
FortressFlag.start(
context,
Configuration(
sdkKey = "ffc_prod_…", // 来自你项目的 SDK 密钥页面
environment = Environment.PRODUCTION,
),
)

SDK 立即加载缓存的值,并在后台轮询变更。这个密钥是一个客户端密钥——它设计上就随你的应用一起发布。

if (FortressFlag.isEnabled("new-checkout", default = false)) {
// 显示新的结算流程
}

stringValue 和 numberValue 以同样的方式读取多变体 flag,而且每一次读取都从内存提供——没有 I/O,没有网络,无论你从哪个线程调用。

就是这样——你的 flag 已经上线。在控制台里切换它,应用会在下一次轮询时跟上。

如果 FortressFlag 挂了,你的应用不会

Section titled “如果 FortressFlag 挂了,你的应用不会”

isEnabled、stringValue 和 numberValue 从不抛出。每一次读取都回退到这台设备实际看到过的最后的值——包括通过持久缓存来自之前运行的——然后是你调用处的默认值。一次故障永远不会到达你的用户。

两个平台事实,在它们出现在发票上之前

Section titled “两个平台事实,在它们出现在发票上之前”

FortressFlag 按设备计费,而 Android 有两个值得提前知道的事实:

  • 标识目前是按应用的。如果一位用户在一部手机上运行你的三个应用,目前最多算三台设备——Android 应用还不能像 iOS 应用家族那样共享一个 FortressFlag 标识。
  • 卸载你的应用会清除标识。Android 在卸载时清除应用由 Keystore 保护的数据,所以重新安装会签发一个全新的标识——并算作一台新设备。(这与 iOS 不同,那里的 keychain 会保留。)

标识本身是随机签发且假名化的——从不从 ANDROID_ID 或任何硬件标识符推导。而仿真器签发的是 sim_ 标识:正常提供 flag,绝不计费。