Skip to content

发布前 Checklist ​

检查项
必须命名 com.zhinian.plugin.<name>,namespace == applicationId
必须aaptOptions --package-id 0x80
必须Manifest:application 无任何属性,只有 HUALUO_PLUGIN_LAUNCHER_CLASS meta-data;无 <activity>、无 <uses-permission>
必须入口 BasePluginActivity + activity.setContent { PluginTheme { App(…) } };UI 退出/跳转由入口传回调(如 onFinish),不写 findActivity
必须res 仅两样:values/strings.xml(app_name + plugin_description)+ 图标 mipmap-xxxhdpi/ic_launcher.png(512 透明底、原色、不放大,phosphor/gen_icons.js 生成);无 themes.xml / colors.xml / roundIcon / anydpi
必须颜色/字号/形状全走 token;多行输入 singleLine = false
必须图标 import 用通配符 com.hualuo.compose.ui.icons.phosphor.*,用法必须带接收者 Phosphor.Bold.X / Phosphor.MagnifyingGlass(图标是扩展属性,裸写 MagnifyingGlass 编译不过)
必须列表翻页用自动加载更多(滚到底自动请求下一页),不写「加载更多」按钮;优先官方 Paging 3(paging-compose + prefetchDistance,见 /guide/ui-design/paging);失败要有「加载失败,点击重试」页脚;到底了显示「没有更多了」
必须搜索入口二选一:页面里画搜索框,或标题栏画图标按钮(TopTitleScaffold(actions = { ActionImageButton(…) }));不用列表项假装搜索框
必须组件库 TextField / TextArea 必须同时传 placeholder 和 label
必须所有文件 UTF-8 无 BOM
按需持久化走 PluginKv / PluginRecords(库名 = 包名)
按需走中转接口才加 RELAY_TOKEN;域名一律 ZhinianHost.BASE_URL
按需走中转接口:权益展示统一 RelayConfigClient + BenefitCard(obsession-shared),币数与次数不写死
按需媒体落盘统一 MediaExporter(obsession-shared,字节/位图/GIF/视频/下载入口);14 个插件的本地副本已全部删除
编译出包一律 gradlew :obsession-plugin-<name>:assembleDebug(重编再加 --rerun-tasks)—— 禁止 assembleRelease:debug 才是受支持的方式,宿主是在运行时加载插件 APK 的,加载链路不看 release / debug、也不校验签名,用 debug 是兼容性需要(YG 2026-10-13 定性);改过 UI组件/插件框架才需要先发布 AAR + 重编宿主