《范绍贵 -一码多端挑战下的新跨端方案思考与实践-v3-2.pdf》由会员分享,可在线阅读,更多相关《范绍贵 -一码多端挑战下的新跨端方案思考与实践-v3-2.pdf(64页珍藏版)》请在三个皮匠报告上搜索。
1、一码多端挑战下的新跨端方案思考与实践演讲人:范绍贵关于我2013年首次创业扫码点餐Web页面、原生App开发2016年接触 ReactNativeAll In JavaScriptAndroid、IOS、服务器恋爱君等10 余款APP累计600多万用户赚了个房子首付2021年接触 WebAssembly设计了 WasmTSTypeScript 编译 wasm2022年6月结束创业加入字节,孵化 WasmTS 2024年6月基于 WasmTS 的转译技术将 RTS 转译 Native 语言c o n t e n t s目录新跨端方案核心挑战方案亮点背景性能与业务收益AI 相关探索01背景降本增效
2、鸿蒙适配KMP有没有更好的跨端方案?跨端语言存在独立的数据结构,比如容器 Array、Map。这些数据无法被宿主识别、消费。数据传输:存在系列化、反序列化,或者对象复制问题 内存回收:对象的传输,被外部持有等,导致内存回收异常复杂,回收时机难以精细化,容易内存波动剧烈。跨端方案核心瓶颈:跨端方案核心瓶颈:FFI FFI 和和 GCGC宿主语言跨端语言数据结构内存回收KotlinArktsJavaScript.Swift操作类型Kotlin-OCSwift-OC空函数调用8862 ns/100op380 ns/100op简单计算操作6859 ns/100op378 ns/100op返回值处理49
3、14 ns/100op378 ns/100opKMPKMP 方案方案Android 没有跨语言问题 没有 gc、ffi 问题Harmony KotlinNative,直接对接操作系统 C api 内部闭环时,可媲美原生 与与 arkts arkts 交互存在交互存在 ffiffi、gc gc 问题问题iOS 与 Swift/OC 存在跨语言调用 存在存在 ffiffi、gc gc 问题问题More 未来可能出现的新端 是否会对外暴露底层 C api?如何才能彻底解决 ffi、gc 问题FFI 和 GC 问题产生根本原因是 跨语言跨语言 调用的问题有没有一种方法可以做到 没有跨语言没有跨语言转译
4、是一种可行思路宿主语言跨端语言数据结构内存回收KotlinArktsJavaScript.Swift基于转译的思路我们围绕语言、工程、UI 框架打造了一套全新的跨端方案三位一体的跨端方案02RTS 语言以转译为核心,实现无 FFI 高性能调用Salamander 工程化负责整个工程的构建、开发、Typing、IDE工具链Relax UI 渲染参考最前沿的前端框架长处,采用 jsx 语法,无运行时的 signal 更新机制。背靠 Lynx 端渲染能力,也能实现动态下发。三位一体的跨端方案编译流程DTSRTSRelax工程RTS 编译器SwiftKotlin.salamander typings客
5、户端代码仓库转译importArkTSVM Bytecode客户端产物客户端编译ArkTSKotlinSwiftiOSAndroid鸿蒙WebElectron平台层RTS/RXTrae/VSCode/XCode/Android Studio语法提示插件、调试工具开发环境层创建模块DTS 声明构建项目绑定宿主构建APP工程化层运行时框架层Relax UI/Compact API/基础抹平层/系统抹平层业务架构层统一容器直播文娱财经.业务场景层直播间页文娱短剧财经支付头条混排.宿主层抖音头条剪映即梦.lineartextimage.Relax UIrequestgetAppInfologin.Co
6、mpact APIALogStorageJSON.基础抹平层线程能力设备事件机制.系统抹平层RTS 语言 类型安全的静态语言 可转译多种客户端native 语言 拥有自己的虚拟机,可动态下发SwiftArktsTypesScriptKotlinIOSHarmonyWebRTSAndroidElectronRTS VMbytecode基础数据类型与转译后类型还有 boolean 和 string,int8,int16,uint8,uint16,uint32 等RTS 类型Kotlin 类型Swift 类型Arkts 类型TypeScript 类型int32IntInt32numbernumber