uni-app uts插件编译到安卓 Map类型的参数报错field xxx has type io.dcloud.uts.Map got java.util.LinkedHashMap
uni-app uts插件编译到安卓 Map类型的参数报错field xxx has type io.dcloud.uts.Map got java.util.LinkedHashMap
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 15.6.1 | HBuilderX |
| Android | 12 | |
| vivo | ||
| iQoo z3 |
示例代码:
在interface中定义了:
```typescript
export type MyApiOptions = {
data: Map<string, any> // 这个参数
success ?: (res : MyApiResult) => void
fail ?: (res : MyApiFail) => void
complete ?: (res : any) => void
}
```
使用时:
```javascript
import {myApi} from '@/uni_modules/my-plugin'
//以下两种方式运行到安卓都报错
const dataMap = new Map()
myApi({
data: dataMap
})
```
操作步骤:
编译到安卓手机
预期结果:
正常
实际结果:
白屏报错
bug描述:
报错reportJSException >>>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught Error: java.lang.IllegalArgumentException: field uts.sdk.modules.myPlugin.MyApiOptionsJSONObject.data has type io.dcloud.uts.Map, got java.util.LinkedHashMap
更多关于uni-app uts插件编译到安卓 Map类型的参数报错field xxx has type io.dcloud.uts.Map got java.util.LinkedHashMap的实战教程也可以访问 https://www.itying.com/category-93-b0.html
uni-app 环境下不支持传递map 类型,修改为type类型 参考这个示例 https://gitcode.com/dcloud/hello-uts/blob/dev/uni_modules/uts-helloworld/utssdk/index.uts
更多关于uni-app uts插件编译到安卓 Map类型的参数报错field xxx has type io.dcloud.uts.Map got java.util.LinkedHashMap的实战教程也可以访问 https://www.itying.com/category-93-b0.html
好的
这个错误是由于UTS插件在Android平台上的类型映射问题导致的。在Android环境中,UTS的Map类型实际上会被映射为io.dcloud.uts.Map,但JavaScript中的Map对象在原生层被转换成了java.util.LinkedHashMap,导致类型不匹配。
解决方案:
- 修改类型定义:将Map类型改为UTS支持的Object类型
export type MyApiOptions = {
data: Record<string, any> // 使用Record或Object替代Map
success?: (res: MyApiResult) => void
fail?: (res: MyApiFail) => void
complete?: (res: any) => void
}
- 修改调用代码:
import {myApi} from '@/uni_modules/my-plugin'
// 使用普通对象替代Map
const dataObj = {}
myApi({
data: dataObj
})

