Android Studio实时预览需要重新构建项目

8
我决定使用Jetpack Compose开发一个应用程序,但是当我下载了Android Studio canary版2021.1.1.1并尝试编写一些代码以查看预览时,右侧的预览选项卡显示“预览不是最新的”(或类似的信息),需要进行完整项目重建才能让我看到代码更改。

是的,就我所知,这是正常的。即所谓的实时预览(又称为字面量)仅适用于原始类型,密度修改器请参见https://android-developers.googleblog.com/2021/02/announcing-jetpack-compose-beta.html?m=1。 - Ananiya Jemberu
@AnaniyaJemberu 非常感谢您的评论,您能否在回答中更详细地解释一下您的意思? :-) - GSepetadelis
3
如果不重新构建整个项目,就无法在预览选项卡上查看您的用户界面更改吗? - GSepetadelis
是的,这就像是倒退了好几步。这让我想起了在我们的xml布局中没有任何预览之前的日子 - 你必须编译和运行你的项目来预览它。我很高兴谷歌决定再次让我们的生活变得更容易! - SMBiggs
但是奇怪的是,移动应用程序上的实时预览更改几乎是即时的!例如,如果您更改填充值,则需要重新构建才能在桌面上查看预览,但是您会注意到填充已经立即在运行的应用程序中更改了。 - ubugnu
2个回答

2

截至2022年5月,目前没有解决方案。很抱歉!

也许有一天会有所改变。���在那之前,如果您使用Jetpack Compose,您将不得不重新构建整个项目才能看到最微小的布局变化。

此外,您必须基本上要写两遍所有可组合函数才能预览它们,这将使您不得不编写大量样板代码,并且几乎确保预览和实际行为之间存在代码差异。您能说:“极易引入错误”吗?我想您可以。

现在,我建议您继续使用旧的XML布局。至少您的工作流程会更快。Jetpack Compose目前还没有准备好。


2
我认为这个答案相当主观和不准确。你为什么需要“编写所有可组合函数两次才能预览它们”?你编写可组合函数,然后从预览中调用该可组合函数。如果你问我,这听起来有点像编写测试。如果你添加了适当的工具依赖项,你不应该需要重新构建你的整个项目,只需要重新构建组合部分。较新的AS版本(如Electric Eel)还包括更好的实时编辑支持,这可以缓解这种需求。 - rharter
请勿接受此答案作为正确答案。如第一位评论者所述,他非常主观,而评估是基于编码的平凡原则不符合要求。在正常项目中,最小屏幕预览不会超过4行代码,考虑到括号和注释,只需调用函数,不要重复编写。 - tasjapr
此外,这个建议本身并没有任何理由支持它。例如,对于不同屏幕密度和 API 版本的不同设计任务怎么办?如果你使用 XML 来完成这个任务,你将会写上数百行相同的代码,并且更新设计将会非常困难,因为你需要在所有的 XML 文件中进行更新。而使用 Compose,你可以采用声明式的方法,就不会出现这样的问题(当然,前提是你正确地使用了 Compose)。 - tasjapr
@tasjapr和rharter:请随意提供更好的答案。 - SMBiggs
模块化您的项目可以帮助减少所需的构建时间。请注意,这比说起来容易得多。但是,如果您正在构建新的用户界面,将UI组件库构建在单独的模块中会有所帮助。 - Malba

1
要在所有功能上运行实时预览,如文档中所述。
引用: 从Android Studio Electric Eel开始,您可以在编辑时实时查看组合预览的更新。
更新您的Android Studio到版本号高于“Android Studio Electric Eel | 2022.1.1”。
更新您的Gradle插件到安装后推荐的最新版本。
执行“无效缓存并重启”操作。
构建项目。
参考1: Jetpack Comp Docs 参考2: 实时更新Compose预览

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接