打开 Android Studio -> 点击 Configure -> 选择 Plugins 在 plugins 部分选择 Marketplace ,搜索 KMM,安装并重启 Android Studio...在 Android Studio 首页选择 “Start a new Android Studio project” 。...首先,在 common 模块中使用 expect 关键字声明一个空的类或函数,就像创建接口或者抽象类一样。然后,在所有的其他模块中编写平台特定代码来实现对应的类或函数,并用 actual 修饰。...你已经完成了你的第一个 KMM app 。...不知道你怎么看 KMM,在评论区留下的你的看法吧! 最后打个广告,推荐一波我的小专栏,面向面试的 Android 复习笔记 ,目前已经输出六篇文章,感兴趣的可以给个订阅,点击文末 阅读原文 可直达。
输入项目名称,选择对应的配置 在 iOS 框架分发列表中,选择常规框架选项 (这里为了简单演示,实际项目根据所需选择即可)。点击Finish就创建了一个KMM的项目。...共享模块由三个源集组成:androidMain、commonMain 和 iosMain。 源集是一个 Gradle 概念,用于逻辑上组合在一起的多个文件,其中每个组都有自己的依赖项。...在 Kotlin Multiplatform 中,共享模块中的不同源集可以针对不同的平台。 如下图所示。 支持多个目标的多平台库,可以在公共源集 commonMain 中使用。...我们这里仅运行Android程序,运行结果如下图所示。 这个结果来自shared模块中commonMain下的Greeting文件,代码如下所示。...写在最后 到这里,恭喜你,已经入门了KMM的使用,更多的使用方法需要在实际项目中不断地去总结,去尝试,Jetpack目前也在开发KMM版本,这对KMM发展将会是一个推进~
创建项目 在Android Studio中我们可以借助Kotlin Multiplatform Mobile plugin插件来快速的创建支持KMM的项目。...安装好插件后,打开Android Studio我们可以直接创建支持KMM的项目。 创建的时候会让我们填写模块的信息 创建好项目后,生成的项目目录结构是这个样子的。...KMM插件只为我们创建了Android和iOS的源集,如果想创建其他平台的可以自己创建文件夹然后指定目标平台。 创建好项目之后我们来看如何处理公共的业务逻辑。...首先我们要在commonMain中使用expect定义这个接口 然后我们在shares模块下的androidMain、iOSMain目录下各自实现打开蓝牙的方法。...我们可以借助KMM插件在Android Studio中快速的创建KMM项目,但是当前如果我们想快速创建Compose Multiplatform 项目只能借助新版的IDEA。
在 KMM 的帮助下,您可以在 iOS 和 Android 应用程序之间共享通用代码,并仅在必要时编写特定于平台的代码。...[KMM构建.png] 二、KMM项目架构 项目架构主要分为原生系统层、Android/iOS业务SDK层、KMM SDK层、KMM业务逻辑SDK层、iOS sdkframework层、Android/...Android/iOS业务SDK层:主要是包括一些现有的Android/iOS SDK,需要直接依赖现有SDK来开发KMM时,在commonMain expect声明接口,在androidMain、iosMain...String, message: String) ... } 在androidMain中用actual修饰来实现真正的接口,带actual修饰的方法为Android/iOS公共方法,不带actual...这里提一下几个值得注意的问题。有2种方式构建:1、本地构建,写一个sdkframework项目依赖其他模块的klib包,来构建sdkframework。
搭建项目 创建项目 因为目前Compose for iOS阶段还在试验阶段,所以我们无法使用Android Studio或者IDEA直接创建Compose支持iOS的项目,这里我们采用之前的方法,先使用...Android Studio创建一个KMM项目,如果你不知道如何创建一个KMM项目,可以参照之前的这篇文章KMM的初次尝试~ ,项目目录结构如下所示。...gradle.properties中的,代码如下所示: compose.version=1.3.0 然后我们在shared模块中的build文件中引用插件 plugins { kotlin("multiplatform...一个尴尬的问题 我一直认为存在一个比较尴尬的问题,那就是像上面实现一个完整的双端网络请求功能需要用到KMM + Compose-jb,但是KMM与Compose-jb并不是一个东西,但是用的时候呢基本上都是一起用...Compose-jb很久之前已经发了稳定版本只是Compose-iOS目前还没有开放出来,而KMM当前还处于试验阶段,不过在2023年Kotlin的RoadMap中,Kotlin已经表示将会在23年中发布第一个稳定版本的
前言 KMM的发展除了靠官方社区的支持外,一些大企业的开源落地也尤为重要。从这些开源中我们需要借鉴他的设计思想和实现方式。从而在落地遇到问题时,寻得更多的解决办法。...如果之前项目已经使用了AndroiX的Paging库,则可以在Android平台上无缝迁移。...如果你之前从未使用过Paging库,可以参考许久之前我写的两篇相关文章: 在View中使用Paging3分页库 在Compose中使用分页库 接下来我们就以multiplatform-paging-samples...项目架构 从项目架构中可以看出在共享模块中,只有iosMain并没有AndroidMain,这是因为我们前面所讲到的针对Android平台是可以无缝迁移的。...是定义在models.kt中的密封接口。
在日常开发中,会遇到以下几个问题: 基础模块逻辑相对复杂,多端研发成本高 双端逻辑代码膨胀,无法保证完全一致,问题排查难 逻辑代码穿插在各个模块中,现有跨端复用方案迁移成本高 这些问题可能很多存量 App...对于 KMM 工程来说,通过 Android Studio KMM 插件生成的结构是这样的: 如何扩展原生能力 先举一个最简单的例子,实现一个双端的 Log 工具。...在 commonMain 里定义好 expect fun,然后分别在 iosMain 和 androidMain 中实现 actual fun。...1 + 1 = 2 的例子举完了,在真正的应用开发中,调用 Android 能力是非常简单的,和普通 Android 开发没有区别,只要通过 gradle 引入需要的库,就可以调用里面的代码了。...整个日志模块中 Kotlin 部分,起到一个承上启下的作用。 搜索筛选 搜索筛选是个业务场景,1688 APP 首页就可以直接跳转到搜索,是一个非常大的流量入口。
如果要从零搭建一个 KMM 工程,IntelliJ IDEA 或 Android Studio 的 KMM 模版插件可以辅助创建,整体工程就是一个常规 Gradle 工程,内部包含两个 Gradle module...但我们的场景是在现有且彼此独立的携程 Android 与 iOS App工程中引入 KMM,所以我们需要将 KMM 作为一个独立子工程模块进行集成。...2.4 业务 Model 模块 根据由下至上的开发顺序,在基础底层架构都搭建完毕后,在 KMM 工程业务层代码的编写中应该首先要规范 MVVM 模式中 Model 层代码的编写。...更让人头疼的是,数据在 Store 内流转时每经过一个组件就会变一个名字,这丛概念上讲确实没有什么问题,因为数据在不同的组件间流转时从概念上来说会有区别,但在 MVIKotlin 的设计中每种概念都由一个...;在 kotlinx 库方面,除了上述 kotlinx.coroutines 与 kotlinx.serialization,官方之前又新启动了 kotlinx.datetime 项目,用于在全平台的
当然,我这篇文章不是来对比这两个技术的,而是来介绍另一个新的移动跨平台技术的选择 -- KMM KMM KMM的全称是:Kotlin Multiplatform Mobile,它是jetbrains公司的产品...在移动端开发中,一个显著的特征是: 不同端的业务逻辑是几乎完全一致的,只是它们的实现技术与载体不同而已 所以,KMM则基于上述这个思路,创新式的引入了另一种模式: 在保持原生开发的基础上,使业务模块重用...KMM的实现思路是重用业务。 在Android中开发业务实现,KMM会将你的业务生成iOS类库。你在iOS开发的时候,相当于依赖了一个类库,这个类库提供了本身你业务的很多方法。...KMM官网:https://kotlinlang.org/lp/mobile/ myddd-kmm-scoffold示例项目发布 我一直在关注与调研移动开发的技术,对iOS的SwiftUI,Android...而KMM也是我关注的一个移动开发技术方向,因为它一方面重用了业务,另一方面又维持了原生开发,似乎是个挺不错的实现思路。 最近五一假期时,基于KMM做了一个可运行的示例项目。
1.Android Studio 3.0及以上版本找不到Android Device Monitor: 解决办法: (1)在Android Studio中打开终端,如图 ?...AndroidX 是一个新的扩展 库,用于向下兼容.支持, 在 28稳定版库将所有的v4,v7,后续功能将被整合到 androidx 包中。...如果取值为false,表示不迁移依赖包到androidx,但在使用依赖包中的内容时可能会出现问题,当然了,如果你的项目中没有使用任何三方依赖,那么,此项可以设置为false (2)在module的gradle...意思大概是说调用了一个空对象的不存在的方法,但是我的Button明明是存在的啊,为什么会这样呢?...原来是因为在Project中有多个活动,一个MainActivity和其他活动,我这个Button是在其他活动,这里是在OCRActivity中调用的,每个活动都有一个对应的.xml文件,来对里面的组建进行布局
实现这个方法,这样,在不同的平台集成 KMM 时就可以实现各自平台的效果。...❞ 这里面有个小插曲,在我看 compose-jb 项目的 sample 时,看到 todoapp[3] 有 iOS 项目,难道 jb 开始支持 iOS 了?...来实现组件路由,但该组件 jb 并没有移植到 jb-compose 中,所以,无法在两个平台上实现复用,好在浏览 jb-compose 项目的 issue 时找到了一个可替代的方案 Decompose...-8 即可: 资源设置可以查看我的项目:KMPCompose[7] desktop 多语言设置:java中如何实现多语言切换[8] 总结 在整个调研和使用下来,感觉 Compose 跨平台还有很长的路要走...我觉得,如果有一款能直接让客户端的编程语言(kotlin、swift)直接实现跨端,而不是再学习一款新的语言(dart) 来实现多平台开发,那真是一件美好的事情。
/include_flutter.groovy' )) ``` 添加完成后,就能够在Android Studio中看到flutter模块,如下图。...页面构建成View 在flutter模块的Flutter类中给我们提供了一个方法——createView。...通过该方法,我们可以将flutter页面构建成一个View。而View的相关操作想必对于Android开发者来说都不陌生,所以就通过addView将flutter页面添加到相应的地方。...3.2、flutter模块的调试 其实混合项目的flutter模块调试与flutter项目的的唯一却别就是如何在Android Studio与设备之间建立socket连接。...在flutter项目中,我们可以直接点击debug按钮来进行调试,但在混合项目中,该按钮就不起作用了,得通过其他方式来建立连接。
如果你准备从 0 打造一个 KMM app 或者你是某项目的基础架构团队的成员,我非常建议你尝试 SQLDelight。...三、 基本设计与实现 3.1 架构设计与 module 划分 在一个项目开发之前,我们首先需要做的是将项目的基本功能理清,然后进行适当的 module 划分: 无论是 iOS 还是 Android,最底层调用的都是...再往上就到了 KMM common 层,我们希望 DSL API 的实现应该是完全平台无关的, 因此我们需要 sqllin-dsl 的下层提供了一个叫做 sqllin-driver 的模块,它在不同的平台上提供不同的具体实现...在我的构思中,我希望 DSL 的设计可以尽量还原 SQL 语法,并且能最大程度的减少用户编写的样板代码。...使用 val 声明的属性用于在条件语句中表示列名,而使用 var 声明的则是 SetClause 的扩展属性,用于在 SET 子句中设置一个新值。
一、用KMM写Flutter插件 Google官方有一个写Flutter例子How to write a Flutter plugin,这里把Google plugin_codelab 例子改成用KMM...二、如何运行 Github项目地址:kmm-flutter-plugin Android: run shared/plugin_codelab/example/android iOS: 1、build.../gradlew releaseIOSFramework or use new version Android Studio sync 2、run shared/plugin_codelab/example...三、设计思路 Android/iOS插件PluginCodelabPlugin只需要实现KMM Module的接口,不写任何逻辑,把逻辑通过接口放在KMM Module中。...fun notImplemented() } } 2、在KMM中的commonMain实现CommonCodelabPlugin插件的公共逻辑 CommonCodelabPlugin需要初始化并启动
Slice其实是一个UI展示模块,它可以在搜索APP、语音助手、关键字识别等动作中动态地显示你的APP部分模块的内容,通过它,可以丰富地显示你的APP当中的内容。...开始使用 Tips *1.在开始使用之前,你需要更新最新版本的Android Studio,到目前我使用的最新版本为 Android Studio 3.3 Canary 3 。...* 1.新建你的Android项目,在gradle中添加如下依赖: implementation 'androidx.slice:slice-core:1.0.0-beta01' implementation...Viewer ,搜索框中输入对应Slice的URI地址,便可在搜索APP中看到应用APP中添加的Slice模块: Slice模板 ListBuilder Slices通过ListBuilder类来创建...在ListBuilder中,你可以添加不同类型的行模块在你的Slice中进行展示。
https://developer.android.com/studio/releases/gradle-plugin#4-1-0 新数据库检查器 使用新的 Database Inspector 可以在应用运行的过程中检查...然后模型文件就会被导入到的项目中,并将其放置在 ml/ 文件夹中,如果该目录不存在,Android Studio 将为创建该目录。 ?...如示例所示,Android Studio 创建了一个 MobilenetV1025160Quantized 用于与模型进行交互的类。 如果模型没有元数据,屏幕将仅提供最少的信息。...)和一个新的 Zen 模式,可以通过选择 View> Appearance> Enter Distraction Free Mode 进行切换。...注意:如果在预览中看不到更改,请从菜单栏中选择 Build> Make Project。
React-Native在某种程度上与ReactJS非常相似,但在开始第一个本机应用程序之前,您需要知道它们之间的差异。...我不知道你,但即使Flexbox已经有一段时间了,我从来没有完全沉浸于其使用中,主要是因为我涉及的项目需要与旧版浏览器的向后兼容性。...我确信你为现代浏览器写代码时遇到过类似的问题,而且需要在旧浏览器中看起来“不太糟糕”,在这里添加一些条件代码,在那里Javascript中甚至在Javascript 。...我建议您将组件的主要逻辑定义在一个名为index.js的文件中,然后您将使用单个文件定义演示组件。...开发者工具 当您启动新的本机项目时,您可以从React中获得几个开发人员工具,而无需安装任何内容,这在我看来非常棒。当您需要对应用程式的样式做小修改时,非常适合使用热加载。
本小节介绍如何使用Android Studio或者是SDK Tools中的命令行来创建一个新的项目。...如果已经用Android Studio打开过项目,点击菜单中的File,选择New Project来创建一个新的项目。 2....通过上一节课创建了一个Android的Hello World项目,项目默认包含一系列源文件,它让我们可以立即运行应用程序。...在应用程序被编译之后,SDK 就可以直接使用这个 ID。edit_message 是在项目文件 gen/R.java 中创建一个新的标识符,这个标识符和 EditText 关联。...使用Android Studio创建新的Activity 使用Android Studio创建的activity会实现一个默认的onCreate()方法. 1.在Android Studio的java
这篇文章将介绍如何使用Android Studio创建第一个Android应用,重点介绍Android Studio的目录结构。...创建第一个Android应用 首先,让我们来创建第一个Android应用。在欢迎页面点击New Project按钮。...进入下一个界面之后选中Basic Activity 按钮,创建一个基本视图的Android应用。 接着进入下一个界面,在这个界面中可以填写项目名,包名等等。...这里我新建了一个名为HelloWorld项目。 设置完成之后点击Finish 按钮。即可完成第一个Android项目的创建。...每个模块均有自己的build.gradle文件。但此项目当前仅有一个模块,所以只有一个针对应用模块。
本文记录的是今天在群里提到的昨天所踩的一个坑,有关 AndroidStudio 缓存的。 先说一下背景。 我负责的一个项目,对一个图表库有外部依赖。...不周知的也没关系,我在这里补充说明一下,在 Gradle 用户指南的依赖管理一章中,有提到 Gradle 对于动态版本和变化模块的缓存时间默认是 24 小时。 何为动态版本?...这时候我忽然想起,我们公司在阿里云服务器上搭建了一个 maven 私服,去年的时候我在上面配置了对 OJO 的代理,这时候拉取的是私服上的版本,是它没有更新? 没关系,解决方法很简单,删!...在 Android Studio 中执行了构建,然后发现它确实重新缓存了。但是—— 悲剧就此发展,深坑就此塌陷! 这时候,我发现不单是新加的 API 没有出来,编辑器里有关这个库的代码全都变红了!...忽然在 Stackoverflow 中看到了一个看起来不是很常见的回答: 退出 Android Studio,删除所有的 .iml 文件以及 .idea 目录,打开 Android Studio 重新导入项目
领取专属 10元无门槛券
手把手带您无忧上云