如何防止R8在Release构建中移除公开的Compose Preview方法?
解决Release构建中Showkase无法展示Compose Preview的问题
要让R8在Release构建中保留Compose Preview方法,你需要添加针对性的ProGuard/R8规则,确保Showkase能正常扫描到所有预览元素:
- 保留所有带
@Preview注解的Compose函数
-keepclasseswithmembers class * { @androidx.compose.ui.tooling.preview.Preview <methods>; }
- 保留Showkase自身的注解和核心类,保证扫描逻辑正常运行
-keep class com.airbnb.android.showkase.** { *; } -keepclasseswithmembers class * { @com.airbnb.android.showkase.annotation.ShowkaseComposable <methods>; @com.airbnb.android.showkase.annotation.ShowkaseColor <fields>; @com.airbnb.android.showkase.annotation.ShowkaseTypography <fields>; }
- (可选)如果使用了自定义的Preview注解,补充对应规则
# 替换成你自定义注解的全类名 -keepclasseswithmembers class * { @com.your.app.annotation.CustomPreview <methods>; }
额外注意事项
- 确保Showkase依赖使用
implementation而非debugImplementation,否则Release构建中会缺失Showkase的核心代码,无法加载预览目录。 - 同步gradle后重新构建Release版本,验证预览内容是否正常展示。
内容的提问来源于stack exchange,提问作者Marat
相关产品推荐
相关产品推荐

