我正在尝试在 Kotlin 多平台项目中使用 cocoapods 框架。
所以我
- 将框架添加到 Pods 文件中。
- 运行 pod install。
- created
.def
file
- added
cinterop
配置在build.gradle
./gradlew cinteropFirebaseIos
运行成功。它生成.klib
所以我可以看到 kotlin 代码中的类。
但是当我尝试运行 iOS 应用程序时,构建失败并显示消息:
显示最近的消息
> 任务:app:linkDebugFrameworkIos
ld:找不到 FirebaseDatabase 框架
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld 调用报告错误
这是我的配置build.gradle
fromPreset(presets.iosX64, 'ios') {
compilations.main {
outputKinds('FRAMEWORK')
cinterops {
firebase {
def proj = "${System.getProperty("user.home")}/Projects/kmpp"
def pods = "${proj}/iosApp/Pods"
defFile "${proj}/app/src/iosMain/c_interop/libfirebase.def"
includeDirs "${pods}/Firebase",
"${pods}/Firebase/CoreOnly/Sources",
"${pods}/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers"
}
}
}
}
这是我的.def
file:
language = Objective-C
headers = /Users/oleg/Projects/klug/crckalculator/iosApp/Pods/FirebaseCore/Firebase/Core/Public/FIRApp.h /Users/oleg/Projects/klug/crckalculator/iosApp/Pods/FirebaseDatabase/Firebase/Database/Public/FIRDatabase.h /Users/oleg/Projects/klug/crckalculator/iosApp/Pods/FirebaseCore/Firebase/Core/Public/FirebaseCore.h
compilerOpts = -framework FirebaseDatabase
linkerOpts = -framework FirebaseDatabase
我怎样才能找出问题所在?我错过了什么吗.def
文件 ?在build.gradle
?
这里有两个有问题的时刻:
- C 头文件的完整路径
.def
文件通常是不需要的,而是传递includeDirs
Firebase 安装,例如https://github.com/JetBrains/kotlin-native/blob/c7c566ce0f12221088a8908b6dc8e116c56a931b/samples/gtk/build.gradle#L22 https://github.com/JetBrains/kotlin-native/blob/c7c566ce0f12221088a8908b6dc8e116c56a931b/samples/gtk/build.gradle#L22会有帮助的
- 链接问题来自类似的问题 - 链接器只是不知道在哪里寻找框架库,所以传递给
compilations.main.linkerOpts
有点像-F /Users/oleg/Projects/klug/crckalculator/iosApp/Pods/FirebaseCore/
将有所帮助,例如参见https://github.com/JetBrains/kotlin-native/blob/c7c566ce0f12221088a8908b6dc8e116c56a931b/samples/videoplayer/build.gradle#L15 https://github.com/JetBrains/kotlin-native/blob/c7c566ce0f12221088a8908b6dc8e116c56a931b/samples/videoplayer/build.gradle#L15
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)