ctripcorp / mmkv-kotlin

A Kotlin Multiplatform porting for MMKV.
Apache License 2.0
131 stars 11 forks source link

iOS端无法使用 #28

Closed zacone closed 6 months ago

zacone commented 6 months ago

https://kmp.jetbrains.com/#templateGallery

  1. 下载“Shared UI Multiplatform App”项目
  2. 按readme添加mmkv依赖并初始化,启动出现异常
    ld: warning: object file (/Users/xxx/Codes/Source/kt/KMP-App-Template/composeApp/build/xcode-frameworks/Debug/iphonesimulator17.4/ComposeApp.framework/ComposeApp[arm64][2615](libskshaper.SkShaper_harfbuzz.o)) was built for newer 'iOS-simulator' version (15.2) than being linked (14.1)
    ld: warning: Could not find or use auto-linked framework 'MMKV': framework 'MMKV' not found
    Undefined symbols for architecture arm64:
    "_OBJC_CLASS_$_MMKV", referenced from:
       in ComposeApp[arm64][2735](libcom.ctrip.flight.mmkv:mmkv-kotlin-cache.a.o)
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
qiaoyuang commented 6 months ago

尝试在 iOS Xcode 项目中用 CocoaPods 对 MMKV 添加依赖。如果 KMP 项目中通过 CocoaPods 依赖了 C/OC/Swift 项目,一般都需要这么做。

zacone commented 6 months ago

其他KMP库都不需要动CocoaPods依赖呀,ktor、koin、napier集成的时候都只需要添加common依赖,最多在Android和iOS两端做下初始化。 “Shared UI Multiplatform App”是个多端共享的UI的项目,方便写个quickstart吗。

qiaoyuang commented 6 months ago

MMKV 是腾讯开发的开源项目,本项目 MMKV-Kotlin 是将其移植到 KMP 的版本,所以底层依赖了 Java 和 OC 版本的 MMKV,而你说的 Koin 那些是纯 Kotlin 项目。所以你需要在 iOS app 项目里添加对 MMKV OC framework 本身的依赖。