平台注意
Android
minSdk24,compileSdk37(Compose 1.12 与本库 AAR metadata 会检查)。- JNI 打在 AAR 里。
consumer-rules.pro保留 JNI 入口。 - 不要再打一份
libsweeteditor.so。 - minify 时 AAR / JNI AAR 的
consumer-rules.pro会自动合并,不必在应用里再 keep JNI 类。
桌面(JVM)
- JVM 11+。
- 首次加载把 JAR 资源里的 Core 与 compose JNI 解到用户缓存,再
System.load。 - Compose Desktop 的 ProGuard 任务不会自动读依赖 JAR。若开启混淆,把 JAR 内
META-INF/proguard/与META-INF/com.android.tools/r8/加进configurationFiles。
iOS
iosArm64/iosSimulatorArm64由 cinterop 静态链libsweeteditor.a(highlight 则是libsweetline.a)。- 宿主 Xcode 工程不得加
-lsweeteditor/-lsweetline,也不得再链对应 dylib / XCFramework。 - SweetLine 静态库带有
LC_LINKER_OPTION -liconv,不必在 xcconfig 里写-liconv。 - 真机与模拟器是两份归档。模拟器 klib 里若混进真机 object,链接会报 “built for iOS while targeting iOS-simulator”。
Web(JS 与 Wasm)
- 库会注入
sweeteditor_web_abi.js/sweetline_web_abi.js,并从 Compose 资源files/加载*_c_abi.{js,wasm}。 - 宿主
index.html不必再手写 script(0.1.1+)。 - C ABI 就绪后
NativeBridge.isAvailable为 true。SweetEditor最多等约 1800 帧,超时显示加载错误。 - Compose 必须是 1.12.1,否则 Skiko 没有
nGetUnresolvedCodepointsCount。
共同约定
各端走同一套 C API。行列从 0 起。颜色是打包的 ARGB Int(0xAARRGGBB)。