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

能否在KMM中使用Java版ST25库?集成及替代方案咨询

在KMM中使用ST25 Java库及替代方案

一、ST25 Java库(.aar/.jar)在KMM中的可用性

KMM共享模块分为Android目标和iOS目标,两者对Java库的支持差异明确:

  • Android目标:完全兼容ST25的.aar或.jar文件,和原生Android开发的集成逻辑一致,没有额外限制。
  • iOS目标:无法直接使用Java编写的库——iOS运行环境不支持JVM字节码,因此这类库的代码不能在共享模块的common或iOS源集中调用,必须做平台隔离处理。

二、Android端集成步骤(KMM项目内)

  1. 将ST25的.aar或.jar文件复制到KMM项目的androidApp/libs目录(无libs文件夹则新建)。
  2. 在项目根目录的settings.gradle.kts中配置本地仓库:
dependencyResolutionManagement {
    repositories {
        // 保留原有仓库配置
        flatDir {
            dirs("androidApp/libs")
        }
    }
}
  1. 在androidApp/build.gradle.kts中添加依赖:
dependencies {
    // 批量引入libs目录下的所有aar/jar文件
    implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar", "*.jar"))))
    // 或指定具体文件:implementation(files("libs/st25-sdk.aar"))
}
  1. 通过KMM的expect/actual机制封装功能:
    • 在common源集中定义接口:expect class ST25TagReader(),并声明所需方法(如expect fun readTagData(): String)
    • 在androidMain源集中实现actual class ST25TagReader(),内部直接调用ST25库的API

三、iOS端的替代方案

由于Java库无法在iOS运行,可选择以下两种方式:

  1. 使用ST官方iOS SDK:ST提供了Objective-C/Swift版本的ST25 NFC SDK,直接在iOSApp模块中集成,再通过expect/actual机制在iosMain源集中封装SDK调用逻辑,保持与Android端一致的对外接口。
  2. 通用跨平台NFC库:目前没有专门针对ST25标签的Kotlin跨平台库,但可尝试kotlinx-nfc这类通用库——需自行验证是否支持ST25对应的协议(如NFC Forum Type 5标签),这类库的功能可能不如官方SDK完善,需测试标签兼容性。

四、Java库在KMM中使用的更新情况

截至目前,KMM并未新增对Java库直接支持iOS目标的特性——iOS运行环境不支持JVM字节码是核心限制,因此旧帖的结论依然有效:Java库仅能在KMM的Android部分使用,iOS部分必须采用原生或跨平台替代方案。

内容的提问来源于stack exchange,提问作者Matteo Trupia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:15