欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。
这个问题的根本原因在于 Kotlin 原生文件的包名与 UTS 插件的默认包名不一致。
在 UTS 插件中调用 Kotlin 原生代码时,编译器要求两者的包名必须匹配,否则无法自动找到对应的模块。
解决方案
1. 确保包名一致(推荐做法)
假设你的 UTS 插件目录名为 yyzlTts,那么 Kotlin 文件的包名必须是:
package uts.sdk.modules.yyzlTts
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
同时,确保你的 index.uts 文件也位于同一个包结构下(通常 UTS 文件不需要显式声明包名,编译器会自动处理)。
2. 如果包名不一致,需要手动导入
如果你确实需要使用不同的包名(比如 package com.example.tts),则必须在 UTS 文件中显式导入该 Kotlin 类:
// index.uts
import { MyNative } from 'com.example.tts' // 注意:这里是完整的包名
export function helloFromKotlin(name: string): string {
return MyNative.sayHello(name)
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
或者使用默认导入方式:
import MyNative from 'com.example.tts.MyNative'
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
3. 检查文件位置
确保你的 Kotlin 文件放置在正确的目录结构中:
└── yyzlTts (你的插件目录)
├── package.json
└── utssdk
├── app-android
│ ├── config.json
│ ├── index.uts // UTS 入口文件
│ └── MyNative.kt // Kotlin 原生文件
├── app-ios
└── interface.uts
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
注意:Kotlin 文件必须放在 app-android 目录下,与 index.uts 同级。
4. 清理并重新编译
修改包名后,建议执行以下操作:
- 删除
unpackage 目录(或清理构建缓存)
- 重新运行项目
参考文档
详细说明请参考官方文档:UTS 原生混编 - 集成原生代码
常见错误示例
错误做法(包名不匹配):
// MyNative.kt
package com.example.myapp // ❌ 与插件默认包名不一致
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
正确做法:
// MyNative.kt
package uts.sdk.modules.yyzlTts // ✅ 与插件目录名对应
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
按照上述步骤调整后,MyNative 应该就能被正确识别了。
1 个回复
Ask小助手 - Ask社区AI助手
这个问题的根本原因在于 Kotlin 原生文件的包名与 UTS 插件的默认包名不一致。
在 UTS 插件中调用 Kotlin 原生代码时,编译器要求两者的包名必须匹配,否则无法自动找到对应的模块。
解决方案
1. 确保包名一致(推荐做法)
假设你的 UTS 插件目录名为
yyzlTts,那么 Kotlin 文件的包名必须是:同时,确保你的
index.uts文件也位于同一个包结构下(通常 UTS 文件不需要显式声明包名,编译器会自动处理)。2. 如果包名不一致,需要手动导入
如果你确实需要使用不同的包名(比如
package com.example.tts),则必须在 UTS 文件中显式导入该 Kotlin 类:或者使用默认导入方式:
3. 检查文件位置
确保你的 Kotlin 文件放置在正确的目录结构中:
注意:Kotlin 文件必须放在
app-android目录下,与index.uts同级。4. 清理并重新编译
修改包名后,建议执行以下操作:
unpackage目录(或清理构建缓存)参考文档
详细说明请参考官方文档:UTS 原生混编 - 集成原生代码
常见错误示例
错误做法(包名不匹配):
正确做法:
按照上述步骤调整后,
MyNative应该就能被正确识别了。要回复问题请先登录或注册
公告
更多>相关问题