过去几年的时间里,Netflix一直在开发着一款移动app,名字叫做Prodicle,我们希望能够对电视节目和电影的实际拍摄进行创新。实际拍摄的世界节奏很快,在不同的国家、地区之间,甚至从一种拍摄到另一种拍摄之间,需求都会有很大的不同。这项工作的性质意味着我们要在分布式的环境下,在不到1/3的用户设备拥有非常可靠的连接,且误差容许量有限的情况下,开发需要大量写操作的软件。出于这些原因,作为一个小型工程团队,我们发现,为了可靠性和产品交付速度而进行优化,是我们成功满足不断提高的客户需求所必需的。
网络连接不可靠的可能性很高,这使得我们被迫要依靠移动解决方案来获得健壮的客户端持久性和离线支持。快速交付产品的需求让我们开始尝试多平台架构。现在,通过利用KotlinMultiplatform,用Kotlin一次性编写与平台无关的业务逻辑,然后针对Android编译成Kotlin库,针对iOS通过Kotlin/Native编译成原生的UniversalFramework,我们又更进了一步。
Kotlin Multiplatform
Kotlin Multiplatform可以让你将单一的业务逻辑代码库应用到iOS和Androidapp上面。你只需要在必要的是编写平台相关代码,比方说,实现原生UI,或者要利用平台相关API时。
KotlinMultiplatform的跨平台移动开发方案跟这个领域的一些**技术不一样。别的技术都是把平台相关的app开发抽象化或者完全取代掉,KotlinMultiplatform却是对现有平台相关技术的补充,致力于替代与平台无关的业务逻辑。这算是给现有工具箱增加一个新工具,而不是要把工具箱替换掉。
这种做法对我们来说效果很好,原因有这么几个:
我们的Android和iOS Studio app有着共同的体系结构,两个平台都写有类似或者在某些情况下相同的业务逻辑。
我们的Android和iOS app里面几乎50%的生产代码都是跟底层平台分离的。
我们对探索各自平台提供的*新技术(Android Jetpack Compose,SwiftUI等)的渴望丝毫没有受到任何阻碍。
Netflix 技术博客:更换移动 App 引擎的探索
Netflix 技术博客:更换移动 App 引擎的探索