我是一名有一年经验的Java Android开发人员,最近开始用Kotlin和Compose编写应用程序.我大部分都很喜欢它,我正在考虑向我的团队其他成员推荐Kotlin MultiPlatform作为我们正在编写的一个小工具.

Vanilla Kotlin与多平台在项目设置上有什么不同?假设我们想让这款应用在Android和Desktop上运行(按照这个优先顺序),那么是编写一个Android Kotlin/Compose应用并稍后迁移更好,还是从头开始以多平台的方式启动项目?

推荐答案

如果您有一个Android应用程序,并且您决定添加桌面支持,则您的大部分时间将花在迁移到KMP依赖项上.

所以你需要知道桌面支持哪些库--我认为主要是导航,因为Jetpack导航不支持KMP,所以你需要 Select 一个支持KMP的导航库.我会 Select Decompose个,但您也可以在这list个KMM库中寻找其他解决方案.

我建议你从KMP项目开始,添加桌面目标,但不要测试/运行它.在通用模块中编写所有内容,这将防止你在那里使用Android专用代码-你仍然可以在androidMain中使用它.在这种情况下,稍后添加桌面支持将是一项容易得多的任务.

Android相关问答推荐

替换- prop -中的值(adb shell getprop)

Jetpack Compose:如何将浮动操作按钮上方的子按钮居中对齐?

无法将Kotlin序列化添加到Android项目

我想使用代码自动重命名我的Android存储中的文件夹

使用 JNI 从 Android 应用程序中使用 Kotlin/Native 预构建共享库

有没有办法让协程通道在接收时遵循特定的顺序而不是先进先出

Gradle在我的Android Compose项目中继续推广依赖版本

尽管我在onCreate()期间已经初始化,但仍出现未初始化的late init变量错误

Jetpack Compose:在屏幕外制作长水平图像的动画

任务 ':app:checkReleaseDuplicateClasses' 执行失败

视觉转换后获取文本

导航组件中预期的函数调用map(...)

ImageBitmap 使用 Glide/Coil 到画布

Horizo​​ntalPager 的可组合物中的 LaunchedEffect 问题

我应该使用 Bluetooth Classic 还是 Bluetooth LE 与我的移动应用程序通信?

如何在jetpack compose中创建自定义rememberState?

房间实时数据:启动时崩溃

操作系统会终止已启动的服务并调用Service.onDestroy吗?

Android Jetpack Compose:如何让文本利用完整的行空间并将单词换行以防溢出?

Android:如何获取具有纬度和经度的位置的图像