当前位置: 首页 > 知识库问答 >
问题:

mingw / ios / linus /其他源集导入java lib的变通方法?

宗政霄
2023-03-14

我知道这是一个非常奇怪的用例,依赖于为某些操作系统源代码集安装JVM,请允许我介绍一下我的用例。

我正在编写一个简单的实用程序来包装对steamCMD(https://developer.valvesoftware.com/wiki/SteamCMD)的调用,它具有依赖于平台的安装过程。所以,自然我应该有

// commonMain / steamCmdGetter.kt
expect interface SteamCmdGetter {
    fun installClient()
}
// [OS] / steamCmdGetter.kt
actual interface SteamCmdGetter { /* ... */ }

另一方面,我的实用程序还需要处理文件存储(例如,下载和检查存储中是否存在客户端),因此我还可以使用文件类。

// commonMain / File.kt
expect interface File

我知道JB团队对其教程有明确的建议。

我们建议您仅对具有特定于平台的依赖性的Kotlin声明使用预期和实际声明。最好在共享模块中实现尽可能多的功能,即使这样做会花费更多的时间。

然而,尽管存在警告,我还是希望不要编写< code>MyFile实现,以免为这样一个常见的任务重新发明轮子,但是< code>java.io.File在这个场景中占据了如此重要的地位,以至于我在Gradle / Maven上找不到任何Kotlin替代方案。

这是否意味着我最终被迫编写 MyFile?或者是否有将 Java 库导入 Kotlin MPP 平台源代码集的解决方法?

共有1个答案

孔山
2023-03-14

首先,Java库只能用于< code>jvm和< code>android目标,而不能用于Kotlin/Multiplatform提供的其他目标。事实上,这正是使用Kotlin/JVM的目标子集。Kotlin/JS和Kotlin/Native都不提供与Java的互操作性,它们有自己的互操作能力。请参见本页,了解有关差异的详细信息。< br >特别是关于使用文件。最有可能的答案是肯定的,你必须根据每个目标来实现它。这种工作通常是特定于平台的,因为它几乎不依赖于操作系统的实现。但是,您搜索的部分功能应该可以在< code>platform.posix.*平台库中找到,即使它看起来更像C语言。

P、 通过网络快速搜索,我找到了这个社区图书馆列表,也许会有所帮助。此外,kotlinlang Slack社区(在此处找到链接)可能有一些有趣的解决方案可供分享。

 类似资料:
  • 问题内容: 我正在尝试使用当前位置在android中提交用户注册表格。我是android和java开发的新手。当我尝试在我的名称值对代码中访问onLocationChanged方法的myLat和myLan时,无法同时找到这两个变量。如何访问我的名称/值对代码中的两个变量。 问题答案: 您可能应该研究范围和成员变量。问题是,您不能在一个方法中声明一件事,然后尝试从另一方法访问它。 因此,我们将该事物

  • 从其他应用程序(如 Photoshop、Illustrator、After Effects、Sketch)中导入资源,甚至将图像从 Web 浏览器拖放到 Adobe XD 或将图像从剪贴板粘贴到 Adobe XD 中。 您可以将资源从其他 Adobe 应用程序(例如 Photoshop、Illustrator)和第三方应用程序(如 Sketch)导入 Adobe XD。您可以在 XD 中进一步改进

  • 我正在寻找一种跨平台的方式来共享ECDSA签名的公钥。从性能角度来看,我对CngKey和标准的.NET加密库有很大的了解,但后来我无法理解MS如何将33(或65)字节的公钥(使用secp256r1/P256)转换为104字节。因此,我无法支持跨平台签名和验证。。 我现在正在使用BouncyCastle,但神圣的handgranade是它慢! 所以,寻找对以下要求的建议: 跨平台/语言(服务器是.N

  • TensorFlow 白皮书 在这份白皮书里,你可以找到关于 TensorFlow 编程模型的更多详情和 TensorFlow 的实现原理。 TensorFlow: Large-scale machine learning on heterogeneous systems 引用 如果你在你的研究中使用了 TensorFlow,并且希望在引用中注记 TensorFlow,我们建议你引用上面这篇论文。

  • 问题内容: 如何在Python中导入其他文件? 我到底该如何导入特定的文件呢? 如何导入文件夹而不是特定文件? 我想根据用户输入在运行时动态加载Python文件。 我想知道如何从文件中仅加载一个特定部分。 例如,在我有: 尽管这给了我中的所有定义,但也许我只想要一个定义: 我要从import语句中添加些什么? 问题答案: 是Python中的新增功能,用于以编程方式导入模块。它只是一个包装器,请参见