我使用Kotlin语言在Android开发中使用@Parcelize
功能。
要使用它们,我在build.gradle文件中进行了以下修改。
apply plugin: 'kotlin-android-extensions'
然后
androidExtensions {
experimental = true
}
我成功使用了上述功能。但是,是否建议将它们用于生产发布或仅用于开发目的?
答案 0 :(得分:5)
这不仅仅是一个Android的东西,它通常是Kotlin。 Kotlin有很多实验性功能,例如协同程序和android扩展。
如果您阅读docs,就会发现:
实验性功能,例如Kotlin 1.1中的协同程序,可以免除上面列出的兼容性模式。此类功能需要在没有编译器警告的情况下使用选择。 实验性功能至少向后兼容补丁版本更新,但我们不保证对次要版本更新的任何兼容性(将尽可能提供迁移辅助工具)。
实验性功能仅仅意味着不同的兼容性系统。它们仍然有效(beta版本属于EAP,EAP不保证兼容性或稳定性)。实验性功能在技术上是释放的,这意味着它们像任何其他语言特征一样稳定(因为可能存在缺陷,总是可以存在,但它的目的是稳定)。
因此,如果您想在生产中使用它,请执行此操作。实验性功能具有不同的兼容模式,但它们应该与任何其他语言功能一样稳定。他们安全"在生产中使用没有太大问题。如果存在不兼容的更新,您可能必须重新编写代码,但这是一个开发问题,而不是发布问题。
然而,android extensions docs也提到了实验部分:
Android Extensions插件包含几个实验性功能,例如LayoutContainer支持和Parcelable实现生成器。 这些功能尚未被视为生产就绪,因此您需要启用实验模式[...]
考虑到我之前提到的事情,这可能意味着功能本身尚未完成,与协同程序等效。您可以在生产版本中使用它,但它不被视为Kotlin语言的生产就绪组件。自从它实验以来,它已经发布了。版本通常比EAP版本更好。
另见Kotlin论坛上的this forum post(它提到了协同程序,但其中一些也适用于其他实验性功能)。
显然,如果它在开发中不起作用,它很可能也不会在生产中工作。如果扩展程序中的某些内容完全被破坏,请不要使用该特定功能。但这并不一定意味着整个扩展都被打破了。通常,即使使用EAP,如果它有效,您也可以在生产中使用它。