跳到內容

Android 快速入門

幾分鐘之內,你的 Android 應用程式就會讀到一個真實的 feature flag:持久快取、離線安全,裝置身分也已替你鑄造並儲存好。

需要 minSdk 26(Android 8.0)。Kotlin,唯一的相依家族是 coroutines。

這個 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 不同,那裡的鑰匙圈會保留下來。)

身分本身是隨機鑄造且假名化的,永遠不從 ANDROID_ID 或任何硬體識別碼推導。而模擬器會鑄造 sim_ 身分:照常得到 flag,永遠不計費。