You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Kotlin Native源码编译iOS Framework(命令行方式)

解决纯命令行构建Kotlin Native iOS Framework的结构问题

我明白你想绕开Gradle,直接用命令行跟进Kotlin Native的最新更新,自己构建符合iOS标准的Framework——之前的命令确实因为缺少关键配置,导致生成的结构和Gradle构建的不一致,下面给你一步步的解决方法:

核心问题:你之前的命令缺了什么?

Gradle构建Kotlin Native Framework时,默认帮你做了这些事:指定iOS目标架构、设置Framework的模块名、生成符合iOS规范的Headers和module配置。而你直接用kotlinc时没指定这些参数,导致输出的结构不符合iOS项目的要求。

正确的单一架构构建命令

如果你只需要针对某一个iOS架构(比如真机的arm64,或者模拟器的x64),可以用这条命令:

../../dist/bin/kotlinc ./src/main/kotlin/org/konan/arithmeticparser/Parser.kt \
  -produce framework \
  -target ios_arm64 \  # 换成ios_x64就是模拟器版本
  -module-name ArithmeticParser \  # 这个是Framework的模块名,对应Xcode里的import模块
  -o ArithmeticParser.framework

执行完这条命令后,生成的ArithmeticParser.framework会包含iOS项目需要的Headers目录、Modules/module.modulemap文件,结构和Gradle构建的一致。

生成通用Framework(同时支持真机+模拟器)

如果需要通用架构的Framework,得先分别构建两个架构的版本,再用lipo合并:

  1. 先构建真机arm64版本:
mkdir -p build/ios-arm64
../../dist/bin/kotlinc ./src/main/kotlin/org/konan/arithmeticparser/Parser.kt \
  -produce framework \
  -target ios_arm64 \
  -module-name ArithmeticParser \
  -o build/ios-arm64/ArithmeticParser.framework
  1. 再构建模拟器x64版本:
mkdir -p build/ios-x64
../../dist/bin/kotlinc ./src/main/kotlin/org/konan/arithmeticparser/Parser.kt \
  -produce framework \
  -target ios_x64 \
  -module-name ArithmeticParser \
  -o build/ios-x64/ArithmeticParser.framework
  1. 创建通用Framework目录并合并二进制:
mkdir -p build/universal/ArithmeticParser.framework
lipo -create \
  build/ios-arm64/ArithmeticParser.framework/ArithmeticParser \
  build/ios-x64/ArithmeticParser.framework/ArithmeticParser \
  -output build/universal/ArithmeticParser.framework/ArithmeticParser
  1. 复制Headers和模块配置文件(从任意一个架构版本复制即可):
cp -r build/ios-arm64/ArithmeticParser.framework/Headers build/universal/ArithmeticParser.framework/
cp -r build/ios-arm64/ArithmeticParser.framework/Modules build/universal/ArithmeticParser.framework/

这样生成的通用Framework就能直接在Xcode里导入,同时支持真机和模拟器运行。

验证方法

把生成的Framework拖进Xcode项目后,尝试在Swift/OC代码里导入模块:

import ArithmeticParser

如果能正常调用Parser类里的方法,就说明结构完全符合要求了。

内容的提问来源于stack exchange,提问作者Albert Gao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:33:48