legacy rapid expansion
2
总安装量
0
周安装量
#73057
全站排名
安装命令
npx skills add https://github.com/fwrite0920/android-skills --skill 'Legacy Rapid Expansion'
Skill 文档
Legacy Rapid Expansion (æ§é¡¹ç®å¿«éæ©å )
Instructions
- ä» å¨æ§é¡¹ç®å å ¥æ°åè½æ¶ä½¿ç¨
- ä¾ç §ä¸æ¹ç« è顺åºå¥ç¨
- 䏿¬¡åªå建ä¸ä¸ªé离åºä¸æ¡¥æ¥ç¹
- 宿åå¯¹ç § Quick Checklist
When to Use
- Scenario Bï¼æ§é¡¹ç®å æ°åè½
Example Prompts
- “请ä¾ç § Islanding Architecture å建 modern/ ä¸ bridge/”
- “ç¨ Hybrid Theming ç« èè®©æ° Compose UI æ²¿ç¨æ§ Theme”
- “è¯·ç¨ Feature Toggle ç« è设计æ°åè½å¼å ³”
Workflow
- å å建 Islanding Architecture ä¸ Bridge Pattern
- åå¤ç Hybrid Theming ä¸ Wrapper Activities
- æåç¨ Feature Toggle ä¸ Quick Checklist éªæ¶
Practical Notes (2026)
- æ°åè½å¿ é¡»ç¬ç«äº legacy å é¨å®ä½
- Bridge API é稳å®ï¼é¿å é¢ç¹åæ´é ææ©æ£
- Feature Toggle ä½ä¸ºä¸çº¿ä¸åéçå¯ä¸å ¥å£
Minimal Template
ç®æ :
é离èå´:
Bridge å¥çº¦:
Toggle çç¥:
éªæ¶: Quick Checklist
Islanding Architecture (å¤å²çç¥)
卿§æ¶æä¸ååºä¸åãååãï¼æ°åè½å®å ¨ä½¿ç¨ç°ä»£æ¶æå¼åã
ç®å½ç»æ
app/
âââ legacy/ # æ§ä»£ç (ä¸å¨)
â âââ activities/
â âââ fragments/
âââ modern/ # æ°ä»£ç (åå)
â âââ core/
â â âââ data/
â â âââ domain/
â â âââ ui/
â âââ feature/
â âââ newfeature/
âââ bridge/ # æ¡¥æ¥å±
âââ LegacyNavigator.kt
âââ ModernEntryPoint.kt
Bridge Pattern
// bridge/ModernEntryPoint.kt
object ModernEntryPoint {
fun startNewFeatureActivity(context: Context, params: Bundle) {
val intent = Intent(context, NewFeatureActivity::class.java).apply {
putExtras(params)
}
context.startActivity(intent)
}
@Composable
fun NewFeatureScreen(params: Map<String, Any>) {
// ç°ä»£ Compose UI
}
}
// æ§ä»£ç è°ç¨
class LegacyActivity : AppCompatActivity() {
fun onButtonClick() {
ModernEntryPoint.startNewFeatureActivity(this, bundleOf("id" to productId))
}
}
Hybrid Theming
让 Compose UI æ²¿ç¨æ§æç XML Themeã
MDC-Android Compose Theme Adapter
// build.gradle.kts
dependencies {
implementation("com.google.android.material:compose-theme-adapter:1.2.1")
}
// 使ç¨
@Composable
fun NewFeatureScreen() {
MdcTheme { // èªå¨æ¡¥æ¥ XML Theme
Surface {
// Compose UI ä¼ä½¿ç¨ XML å®ä¹ç colors/typography
}
}
}
æ¸è¿å¼è¿ç§»
// 1. åæï¼å®å
¨æ²¿ç¨ XML Theme
MdcTheme { content() }
// 2. 䏿ï¼è¦åé¨å Token
MdcTheme(
setTextColors = true,
setDefaultFontFamily = true
) { content() }
// 3. åæï¼å®å
¨ä½¿ç¨ Compose Theme
AppTheme { content() }
Wrapper Activities
å¿«éå° Compose Screen å
è£
便§æ startActivity è°ç¨ã
éç¨ Wrapper
@AndroidEntryPoint
class ComposeWrapperActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val screenType = intent.getStringExtra(EXTRA_SCREEN_TYPE)
val params = intent.extras ?: Bundle.EMPTY
setContent {
AppTheme {
when (screenType) {
"new_feature" -> NewFeatureScreen(params.toMap())
"settings" -> SettingsScreen()
else -> ErrorScreen()
}
}
}
}
companion object {
private const val EXTRA_SCREEN_TYPE = "screen_type"
fun newIntent(context: Context, screenType: String, params: Bundle = Bundle.EMPTY): Intent {
return Intent(context, ComposeWrapperActivity::class.java).apply {
putExtra(EXTRA_SCREEN_TYPE, screenType)
putExtras(params)
}
}
}
}
Feature Toggle
å®å ¨å°å¨ Production ç¯å¢å¼å ³æ°åè½ã
interface FeatureFlags {
val useNewCheckout: Boolean
val enableComposeProfile: Boolean
}
class RemoteFeatureFlags @Inject constructor(
private val remoteConfig: FirebaseRemoteConfig
) : FeatureFlags {
override val useNewCheckout: Boolean
get() = remoteConfig.getBoolean("use_new_checkout")
}
// 使ç¨
class CheckoutNavigator @Inject constructor(
private val featureFlags: FeatureFlags
) {
fun navigateToCheckout() {
if (featureFlags.useNewCheckout) {
ModernEntryPoint.startCheckoutCompose()
} else {
startActivity(LegacyCheckoutActivity::class)
}
}
}
Quick Checklist
- æ°åè½æ¾å¨
modern/ç®å½ - æ¡¥æ¥å±æ¸ æ°å®ä¹ (bridge/)
- Hybrid Theming ç¡®ä¿è§è§ä¸è´
- Feature Toggle æ§å¶ä¸çº¿
- é¿å æ°ä»£ç ä¾èµæ§ä»£ç çå é¨å®ä½