使用Jetpack Compose Landscapist库,previewPlaceholder会增大APK体积吗?
关于Compose中GlideImage预览占位资源对应用体积的影响
首先明确结论:如果你的poster资源放在默认的src/main/res目录下,它会被打包进最终的release版本,从而增加应用体积——因为Android构建工具默认会把main目录下的所有资源打包到所有变体的安装包中,不管你是不是只在预览代码里引用它。
解决办法:让预览占位资源只在Debug构建中存在
要避免这个问题,最直接的方式是把poster资源移到src/debug/res/drawable目录下:
- Debug构建时,这个资源会被包含,你在Compose预览里依然能正常看到占位图;
- Release构建时,debug目录下的资源会被自动排除,不会进入最终安装包,也就不会影响应用体积。
补充说明
如果你不想移动资源,也可以通过代码结合BuildConfig来控制:
GlideImage( imageModel = { imageUrl }, modifier = Modifier.aspectRatio(0.8f), previewPlaceholder = if (BuildConfig.DEBUG) R.drawable.poster else 0 )
但这种方式需要确保R.drawable.poster在release构建中不会被强制打包,最好还是配合把资源放到debug目录,避免编译时的资源引用问题。
另外,开启shrinkResources(资源收缩)在某些情况下可能会移除未被运行时引用的资源,但因为预览代码是被编译进项目的,构建工具可能无法识别这个资源仅用于预览,所以不依赖这种方式,直接用debug专属资源目录是最可靠的方案。
内容的提问来源于stack exchange,提问作者A. Patrik
相关产品推荐
相关产品推荐

