Install
openclaw skills install config-pull-template生成配置拉取代码模板。用于在 Android 项目中接入配置中心、白名单、单独接口或推拉结合的配置。 触发条件:用户想要创建配置拉取功能,需要生成对应的 Kotlin/Java 代码模板。
openclaw skills install config-pull-template根据用户提供的配置信息,生成对应的代码模板。
向用户确认:这个配置的作用是什么? 例如:ANR 监控配置、服务费配置、活动配置等。
让用户选择接入方式:
配置中心 - 需要提供:
com.youzan.retailHD.anr)config)白名单 - 需要提供:
anr_feature)单独接口 - 需要提供:
youzan.retail.trade.misc.shopsetting.query/1.0.0)推拉结合 - 需要提供:
让用户选择配置所属模块:
@Keep 注解生成 WhiteListManager(如果已存在则复用):
object WhiteListManager {
fun is{Feature}Enabled() {
WhiteListTask.isInWhiteList("{key}").subscribe({ result ->
// TODO 待实现
}, { error ->
// TODO 待实现
})
}
}
生成 Plugin 钩子(方法名必须与注解名一致!)
在对应模块的 PluginModule 中添加三个方法:
// 文件位置:/modules/module_xxx/src/common/java/com/youzan/retail/xxx/PluginModule.kt
@ShopSwitched
fun onShopSwitched() {
WhiteListManager.is{Feature}Enabled()
}
@AppStart
fun onAppStart() {
WhiteListManager.is{Feature}Enabled()
}
@ConfigFetch
fun onConfigFetch() {
WhiteListManager.is{Feature}Enabled()
}
根据模块 + 作用,在对应模块的 common 下创建 XXXConfigManager 类:
/modules/module_xxx/src/common/java/com/youzan/retail/xxx/CONFIG_KEY_CONFIG_VERSION 固定为 1.0.0@Keep 注解)同时生成 Plugin 钩子(方法名必须与注解名一致!):
@ShopSwitched
fun onShopSwitched() {
{Name}ConfigManager.init()
}
@AppStart
fun onAppStart() {
{Name}ConfigManager.init()
}
@ConfigFetch
fun onConfigFetch() {
{Name}ConfigManager.init()
}
在对应模块的 common 下创建:
XXXConfigManager - 业务逻辑XXXTask - Task 层XXXService - Service 接口(包含 @POST 注解和 URL)同时生成 Plugin 钩子(方法名必须与注解名一致!):
@ShopSwitched
fun onShopSwitched() {
{Name}ConfigManager.query{Name}Config()
}
@AppStart
fun onAppStart() {
{Name}ConfigManager.query{Name}Config()
}
@ConfigFetch
fun onConfigFetch() {
{Name}ConfigManager.query{Name}Config()
}
在对应模块的 common 下创建 XXXRefreshUtils 类,内部实现 IConfigDataNotification 接口注册推送通知。
同时生成 Plugin 钩子(方法名必须与注解名一致!):
@ShopSwitched
fun onShopSwitched() {
{Name}RefreshUtils.register{Name}Notification()
{Name}ConfigManager.query{Name}Config()
}
@AppStart
fun onAppStart() {
{Name}RefreshUtils.register{Name}Notification()
{Name}ConfigManager.query{Name}Config()
}
@ConfigFetch
fun onConfigFetch() {
{Name}ConfigManager.query{Name}Config()
}
配置拉取的调用时机通过 Plugin 实现。不同模块的 Plugin 位置:
modules/module_goods/src/common/java/com/youzan/retail/goods/PluginModule.ktmodules/module_marketing/src/common/java/com/youzan/retail/marketing/PluginModule.kt可用的注解:
@ShopSwitched - 店铺切换时调用@AppStart - 应用启动时调用@ConfigFetch - 配置同步时调用重要规则:
@ShopSwitched → onShopSwitched(),@AppStart → onAppStart(),@ConfigFetch → onConfigFetch()