Ios 将Appcode与Kotlin/Native和cocoapod一起使用

Ios 将Appcode与Kotlin/Native和cocoapod一起使用,ios,cocoapods,appcode,kotlin-native,Ios,Cocoapods,Appcode,Kotlin Native,我开始使用Kotlin/native和Appcode进行iOS开发。我试图让Cocoapods与Kotlin/native合作,但我遇到了一些挑战 我从AppCode中的空Kotlin/native应用程序开始构建,它构建得很好,并在模拟器中运行 然后我尝试用“AFNetworking”来添加cocoapod,我遇到了麻烦。我试着跟随JetBrains Kotlin/本地样本:,但仍然没有成功 我面临的问题是: 我无法在Kotlin文件中导入cocoapods.AFNetworking 我在尝

我开始使用Kotlin/native和Appcode进行iOS开发。我试图让Cocoapods与Kotlin/native合作,但我遇到了一些挑战

我从AppCode中的空Kotlin/native应用程序开始构建,它构建得很好,并在模拟器中运行

然后我尝试用“AFNetworking”来添加cocoapod,我遇到了麻烦。我试着跟随JetBrains Kotlin/本地样本:,但仍然没有成功

我面临的问题是:

  • 我无法在Kotlin文件中导入cocoapods.AFNetworking
  • 我在尝试构建项目时遇到以下错误:“无法对AFNetworking执行cinterop处理:无法确定标头位置。”
我可能忽略了一些配置,但我无法理解

我使用的是应用程序代码2019.3.1、Xcode 11.3(11C29)和Cocoapods 1.8.4

我的播客文件如下所示:

我的Gradle文件如下所示:

我的main.kt文件如下所示:


非常感谢您的帮助。

您必须首先从Xcode构建项目

使用
podspec
gradle任务生成podspec,并相应地修改它,然后将其添加到
Podfile

target 'project' do
    ...
    pod 'YourFrameworkName', :path => 'path/to/your-kotlin-library'
end
target 'project' do
    ...
    pod 'YourFrameworkName', :path => 'path/to/your-kotlin-library'
end
您可以在这里查看:

编辑:

此外,这里还有一个Kotlin/Native示例,它在Kotlin代码中使用
AFNetworking

编辑2:

同样,您必须将K/N项目链接到您的Xcode项目并在那里构建它

步骤1:将pod添加到Gradle文件中

kotlin {
    cocoapods {
        ...
        pod("AFNetworking")
    }
}
步骤2:通过
/gradlew共享模块:podspec

这将生成podspec文件,您可能需要在构建之前对其进行修改

步骤3:在你的
pod文件中使用这个

target 'project' do
    ...
    pod 'YourFrameworkName', :path => 'path/to/your-kotlin-library'
end
target 'project' do
    ...
    pod 'YourFrameworkName', :path => 'path/to/your-kotlin-library'
end
步骤4:
pod安装
步骤5:在Xcode中构建


之后,您可以通过导入
cocoapods.AFNetworking.*

在K/N中引用它,感谢Kurt的指导。我试着跟着他们,但还是遇到了问题

  • 在Appcode(test1)中启动新项目,在Appcode中生成ok。在Xcode中打开同一个项目,构建ok

  • 将Cocoapod插件引用和pod添加到我的Gradle文件中,并设置version=“1.0”

  • 运行podspec任务
  • 发布“pod设置”和“pod初始化”
  • 将pod条目添加到pod文件中:“pod'test1',:path=>'/Users/trond/Desktop/test1/test1'”。(这来自podspec的输出)
  • 问题“吊舱安装”
  • 重新打开带有项目“test1.xcworkspace”的Xcode并尝试生成。由于“gradlew”上的权限错误而失败
  • 使用“chmod 777 gradlew”在“gradlew”上固定许可证
  • 再次尝试使用Xcode构建,但失败的原因是:“在根项目“test1”中找不到项目“test1”。失败的任务是:“$REPO_ROOT/。/Supporting Files/gradlew”-p“$REPO_ROOT”:test1:syncFramework-Pkotlin.native.cocoapods.target=$KOTLIN_target-Pkotlin.native.cococoapods.configuration=$configuration-Pkotlin.native.cococoapods.cflags=“$OTHER\cflags”-Pkotlin.native.cocoapods.path.headers=“$HEADER\u SEARCH\u path”-Pkotlin.native.cocoapods.path.frameworks=“$FRAMEWORK\u SEARCH\u path”

  • $REPO\u ROOT=PODS\u TARGET\u SRCROOT=/Users/trond/Desktop/test1/PODS//test1

    感谢您的回复。从您提供的链接中我可以看到,它是用于将Kotlin/Native lib导入Xcode项目的。我正在寻找在Kotlin/Native项目中使用CoCoCoapod库“AFNetworking”。。我的链接不好。我更新了到正确的文档。请看一看。是的,我使用该示例作为测试的灵感。我仍然难以正确导入AFNetworking。Kotlin仍然不允许我执行“导入cocoapods.AFNetworking”,并且我在构建时仍然会遇到此错误:无法对AFNetworking执行cinterop处理:无法确定标头位置。" . 这让我相信cinterop配置缺少一些东西?在K/N中使用它之前,您必须先在Xcode中构建它。我已经用步骤更新了上面的答案。我已经按照您的说明进行了操作,也无法使import CoCoCoapods.AFNetworking正常工作。我使用的是kotlin 1.3.61,Xcode 11.3I通过进入test1.podspec文件并删除前面的“test1”:syncFramwork解决了这个错误。当尝试在Xcode中立即构建时,我遇到了一个熟悉的错误:“无法为AFNetworking执行cinterop处理:无法确定头位置”