1、Kotlin Multiplatform基于Bazel的逻辑层跨平台实践哔哩哔哩-用户生态技术部/张忻正我们定义的逻辑层主流跨平台语言interop对比iOS:Objc&SwiftAndroid:KotlinHarmony:Arkts易用/鲁棒性性能平台原住民 call 外来语言外来语言 call 平台原住民外来语言是否需要额外的运行时KotliniOS:支持Android:支持Harmony:类型系统部分类型丢失iOS:仅支持Objc&SwiftObjc Android:支持Harmony:类型系统部分类型丢失iOS:无需Android:无需Harmony:无需JavaScriptiOS:类
2、型系统?Android:类型系统?Harmony:类型系统?iOS:FFI(C)Android:JNIHarmony:全部支持iOS:需Android:需Harmony:无需RustiOS:C external interfaceAndroid:JNIHarmony:NAPIiOS:仅支持Objc&SwiftObjc Android:JNIHarmony:NAPIiOS:无需Android:无需Harmony:无需DartiOS:channelAndroid:channelHarmony:channeliOS:仅支持Objc&SwiftObjc Android:JNIHarmony:NAPIi
3、OS:需Android:需Harmony:需C+iOS:全部支持Android:JNIHarmony:NAPIiOS:C Android:JNIHarmony:NAPIiOS:无需Android:无需Harmony:无需目录KMM基础概念KMM生态的问题B站的实践总结&展望KMM(Kotlin Multiplatform Mobile)基础概念编译器(Compilers)产物(Artifacts)插件(Plugins)kotlin项目:https:/ RELEASE_NOTES.md bin cinterop#C/Objc interop 工具 generate-platform jsinte
4、rop#wasm interop 工具 klib#解析klib成人类可读的工具 konan-lldb#lldb wrapper lldb scripts tools/konan_lldb.py konanc#run_konan 马甲 kotlinc-native#楼上的别名 run_konan#java cli 启动器 klib cache common#stdlib klib platform#各平台的klib(例如 Foundation/UIKit 至于iOS)konan konan.properties lib#*.jar 同kotlinc/lib nativelib#编译起平台依赖的动
5、态连结库,这也是为什么要分平台发布konan的原因 platformDef#klib/platform 中所有klib的 kotlin binding 描述 targets#各平台产物的llvm中间码.bc licenses *.txt sources kotlin-stdlib-*.zip#同source jar tools env_blacklist konan_lldb.py#lldb helper for lldb debug编译制品流转产物Layoutskiko.klib default#compiler/util-klib/src/org/jetbrains/kotlin/libr
6、ary/KotlinLibraryLayout.kt ir#compiler/ir/mon/src/KotlinIr.proto 当前kotlin编译产物类似.h+.a bodies.knb debugInfo.knd files.knf irDeclarations.knd signatures.knt strings.knt types.knt linkdata#kotlin types 用于链接&代码索引提示等 module package_org 0_org.knm package_org.jetbrains 0_jetbrains.knm package_org.jetbrains.