标签: kotlin-native

构建 iOS 框架时未找到 Ktor 和 kotlinx 依赖项

我正在尝试为我的 Kotlin/Native 项目提供支持ktorkotlinx确切地说serializationcoroutines。所有库都适用于该项目的 Android 版本,但是当我尝试编译 Xcode 项目时,我收到错误消息,指出找不到kotlinx.serialization和库:kotlinx.coroutines

src/commonMain/kotlin/.../.kt:4:16: error: unresolved reference: coroutines
import kotlinx.coroutines.CoroutineDispatcher
               ^
src/commonMain/kotlin/.../.kt:5:16: error: unresolved reference: serialization
import kotlinx.serialization.json.JSON
Run Code Online (Sandbox Code Playgroud)

这是我的项目的 gradle 文件:

plugins {
    id 'kotlin-multiplatform' version '1.3.11'
    id 'kotlinx-serialization' version '1.3.0'
}

ext {
    ktor_version = '1.0.1'
    kotlinx_version = '1.1.0'
}

repositories {
    maven { url "https://kotlin.bintray.com/ktor" }
    maven { url "https://kotlin.bintray.com/kotlinx" }
    google()
    jcenter()
    mavenCentral()
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'

configurations { …
Run Code Online (Sandbox Code Playgroud)

ios kotlin kotlin-native kotlin-multiplatform

6
推荐指数
1
解决办法
1756
查看次数

Kotlin Native等效于System.exit(-1)

在下面的Kotlin/JVM System.exit(-1)程序中,使用错误退出代码停止程序的执行:

fun main(args: Array<String>) {
    if (args.size < 2) {
        println("too few args!")
        System.exit(-1)
    }
    println("Hello, ${args[1]} from ${args[0]}")
}
Run Code Online (Sandbox Code Playgroud)

Kotlin/Native无权访问任何Java类,包括System.那么Kotlin/Native程序使用错误代码停止执行程序的等效函数是什么?

java native kotlin kotlin-native

5
推荐指数
1
解决办法
1527
查看次数

在Cocoapod中导入Kotlin/Native框架

我正在尝试在私有CocoaPod中添加使用Kotlin/Native构建的销售框架,但是我收到错误:

  • 我用Kotlin/Native生成了一个iOS框架.
  • 我将框架文件夹(由Konan编译/生成)复制到我的自定义pod文件夹中
  • 在podspec中,我在"vendored_frameworks"列表中添加了框架路径
  • 我发布了 pod repo push myCocoapodsRepo myProject.podspec --verbose"
  • 我收到一个错误:

[iOS] xcodebuild: fatal error: lipo: input file (/Users/jeandaube/Library/Developer/Xcode/DerivedData/App-auugdpsmbbpvarfzghxatkvwftsn/Build/Products/Release-iphonesimulator/App.app/Frameworks/MyProject.framework/MyProject) must be a fat file when the -remove option is specified

我是否应该以某种方式改变我首先使用Konan导出框架的格式?

ios kotlin cocoapods kotlin-native

5
推荐指数
1
解决办法
944
查看次数

Windows上的Kotlin本机libcurl示例

我正在尝试从JetBrains学习Kotlin Native如何使用本教程:https : //kotlinlang.org/docs/tutorials/native/interop-with-c.html

但是这些教程仅适用于macOS和Linux。有时我使用Windows计算机,但我想知道它在那里的工作方式。

如何在Windows中添加libcurl库,如何将其添加到libcurl.def文件中?

在任何地方都没有解释。

kotlin kotlin-native

5
推荐指数
1
解决办法
410
查看次数

Kotlin本机互操作链接器找不到框架

我正在尝试在Kotlin Multiplatform项目中使用cocoapods框架。所以我

  • 在Pods文件中添加了框架。
  • 运行pod安装。
  • 创建的.def文件
  • 在添加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"
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的.def文件:

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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我如何找出问题所在?我错过了.def文件中的东西吗?在build.gradle

kotlin kotlin-interop kotlin-native kotlin-multiplatform

5
推荐指数
1
解决办法
572
查看次数

如何在 Kotlin Native 中使用 Http 请求库

我是 Kotlin 本机的初学者,我的目标是构建一个库,我们的 Rest API 包含它,我在 iOS 和 Android 上使用它。我知道ktor并在我的项目中实现了这一点,但是当我build通过Gradle获取异常运行项目时,我使用了以下对象kotr

> Task :apiCore:androidProcessResources NO-SOURCE
> Task :apiCore:compileKotlinAndroid UP-TO-DATE
> Task :apiCore:androidMainClasses UP-TO-DATE
> Task :apiCore:androidJar UP-TO-DATE

> Task :apiCore:compileKotlinIOS
src/commonMain/kotlin/APICore.kt:3:8: error: unresolved reference: io
import io.ktor.client.HttpClient
   ^
src/commonMain/kotlin/APICore.kt:4:8: error: unresolved reference: io
import io.ktor.client.request.get
   ^
src/commonMain/kotlin/APICore.kt:10:17: error: unresolved reference: 
HttpClient
val client =  HttpClient()
            ^

Execution failed for task ':apiCore:compileKotlinIOS'.
> Process 'command '/Applications/Android 
Studio.app/Contents/jre/jdk/Contents/Home/bin/java'' finished with 
non-zero exit value 1
Run Code Online (Sandbox Code Playgroud)

和我 …

kotlin kotlin-native kotlin-multiplatform

5
推荐指数
1
解决办法
1227
查看次数

如何确定 kotlin-multiplatform 项目中的构建类型

我正在开发一个多平台项目,iOS 和 JVM(我不直接针对 Android)。根据构建类型(调试或发布),我想配置日志记录级别(即仅打印发布中的错误)。由于没有BuildConfig可用的类,我如何从commonMain构建类型中知道?

android gradle kotlin kotlin-native kotlin-multiplatform

5
推荐指数
1
解决办法
538
查看次数

使用 Kotlin/Native,如何执行外部操作系统可执行文件或 $PATH 命令并与其 stdin、stdout 和 stderr 流交互?

我正在研究用 Kotlin/Native 编写的命令行工具的概念证明,因为它似乎是跨平台二进制文件的理想语言和运行时。

该命令行工具需要定期与 os 用户 $PATH 或 shell 环境中的操作系统可执行文件、命令和/或 shell 函数进行交互。但是,我在kotlin-native 示例或文档中没有看到任何可能指示如何执行以下操作的示例:

  • 执行操作系统可执行文件或 $PATH 命令
  • 获取执行的返回码(整数)
  • 确保执行进程的 stdin、stdout 和 stderr 文件描述符流可以分别表示为 OutputStream 和 InputStreams

在 JVM 领域,我们可以使用java.lang.ProcessBuilder所有这些,但这显然在 Kotlin/Native 中不可用。

我找到了 cinterop/posixplatform.posix.system函数,但这并不能让您访问进程的流。

在我的网络研究中,我发现了一个非常好的 C教程,它表明唯一干净的方法是使用forkanddup2等,但我不清楚这是否或如何转换为 Kotlin/Native 代码。

kotlin kotlin-native

5
推荐指数
1
解决办法
1146
查看次数

从 Kotlin Native 子类化 UIView

UIKit 被设计为通过子类和重写方法来使用。

通常,drawRectUIView 的 Objective-C 方法在 SWIFT 中是这样实现的:

import UIKit
import Foundation

class SmileView: UIView {
    override func draw(_ rect: CGRect) {
        super.draw(rect)
        
        let smile = ":)" as NSString
        smile.draw(in: rect, withAttributes: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,Kotlin 中的 UIKit 导入将这些函数定义为无法重写的扩展函数。

有人成功通过自定义配置从 Kotlin 子类化 UIView 吗cinterop

objective-c ios kotlin swift kotlin-native

5
推荐指数
1
解决办法
950
查看次数

Why does kotlin/native hello world not output anything inside IntelliJ IDEA on Apple M1?

I\'ve downloaded a fresh IntelliJ IDEA with the Kotlin multiplatform plugin and created a project using the Native application project template. This template creates a Main.kt file with the content:

\n
fun main() {\n    println("Hello, Kotlin/Native!")\n}\n
Run Code Online (Sandbox Code Playgroud)\n

As well as many other gradle files referencing kotlin("multiplatform") version "1.7.20". I can build and run the project from inside IntelliJ IDEA, but I see no hello world:

\n

没有你好世界

\n

我只能看到 gradle 输出和成功结果,但没有Hello Kotlin/Native! message anywhere. I\'ve tried changing the runDebugExecutableNative …

intellij-idea kotlin kotlin-native

5
推荐指数
1
解决办法
391
查看次数