c***@163.com
c***@163.com
  • 发布:2024-09-18 17:17
  • 更新:2024-09-19 16:19
  • 阅读:223

uts插件实际运行的时候报错,不知道为啥会报这个错

分类:uts

报错
[Vue warn]: Error in v-on handler: "Error: java.lang.IllegalArgumentException: method uts.sdk.modules.mlcMdns.CallbackPair.<init> argument 1 has type kotlin.jvm.functions.Function1, got java.lang.Integer"

found in

Error: java.lang.IllegalArgumentException: method uts.sdk.modules.mlcMdns.CallbackPair.<init> argument 1 has type kotlin.jvm.functions.Function1, got java.lang.Integer

我不知道为啥会报这个错误

kotlin代码
package uts.sdk.modules.mlcMdns

import java.io.IOException
import javax.jmdns.JmDNS
import javax.jmdns.ServiceEvent
import javax.jmdns.ServiceListener

object MdnsDiscovery {
private lateinit var jmdns: JmDNS

fun startMdnsDiscovery(callback: CallbackPair) {  
    try {  
        jmdns = JmDNS.create()  
        callback.success("success")  
    } catch (e: IOException) {  
        callback.fail("error")  
    }  
}  

fun addServiceListener(listenerWrapper: ServiceListenerWrapper) {  
    jmdns.addServiceListener(listenerWrapper.serviceType, object : ServiceListener {  
        override fun serviceAdded(event: ServiceEvent?) {  
            listenerWrapper.onServiceAdded(event)  
        }  
        override fun serviceRemoved(event: ServiceEvent?) {  
            listenerWrapper.onServiceRemoved(event)  
        }  
        override fun serviceResolved(event: ServiceEvent?) {  
            listenerWrapper.onServiceResolved(event)  
        }  
    })  
}  

fun stopDiscovery(callback: CallbackPair) {  
    try {  
        if (::jmdns.isInitialized) {  
            jmdns.close()  
            callback.success("success")  
        } else {  
            callback.fail("error")  
        }  
    } catch (e: IOException) {  
        callback.success("success")  
    }  
}  

}

data class CallbackPair(
val success: (String) -> Unit,
val fail: (String) -> Unit
)

data class ServiceListenerWrapper(
val serviceType: String,
val onServiceAdded: (ServiceEvent?) -> Unit,
val onServiceRemoved: (ServiceEvent?) -> Unit,
val onServiceResolved: (ServiceEvent?) -> Unit
)

uts代码

import ServiceEvent from 'javax.jmdns.ServiceEvent';

export function startDiscovery(options: CallbackPair): void {
MdnsDiscovery.startMdnsDiscovery(options);
}

export function addServiceListener(options: ServiceListenerWrapper) {
MdnsDiscovery.addServiceListener(options);
}

export function stopDiscovery(options: CallbackPair): void {
MdnsDiscovery.stopDiscovery(options);
}

vue代码
startDiscovery({
success: function(response) {
console.log("start success");
addServiceListener({
serviceType: "_http._tcp.local.",
onServiceAdded: function(e) {
console.log("onServiceAdded", e);
},
onServiceRemoved: function(e) {
console.log("onServiceRemoved", e);
},
onServiceResolved: function(e) {
console.log("onServiceResolved", e);
}
});
setTimeout(function() {
stopDiscovery({
success: function(res) {
console.log("stop success");
},
error: function(err) {
console.log("stop error");
}
});
}, 6000);
},
fail: function(error) {
console.log("start error");
}
});

2024-09-18 17:17 负责人:无 分享
已邀请:
c***@163.com

c***@163.com (作者)

app端啥都得用插件,自带的啥功能都没有,完了官方还不出插件,插件市场全是第三方的,而且插件的质量跟垃圾一样,这个破东西我真是服了

c***@163.com

c***@163.com (作者)

官方的脑子是咋想的?我TM要疯了,整个破插件就是开发不出来了,也没处问去,草!用这玩意开发app简直就是坑人!!!

DCloud_Android_MHF

DCloud_Android_MHF

麻烦把你遇到的问题贴出来,带上你的最简单代码

另外具体示例地址在这里:https://gitcode.net/dcloud/hello-uts/-/tree/dev/uni_modules/uts-syntaxcase/utssdk/app-android

  • c***@163.com (作者)

    代码贴上了,给看看是咋回事,要疯了

    2024-09-18 21:40

  • c***@163.com (作者)

    实际运行的时候包的错,编译打包的时候没事

    2024-09-18 21:40

DCloud_Android_MHF

DCloud_Android_MHF

你看下https://gitcode.net/dcloud/hello-uts/-/blob/dev/uni_modules/uts-syntaxcase/utssdk/app-android/kotlinCode.kt 这个示例里面有

fun kotlinCallbackUTS(callback: (String) -> Unit){  

        if(lastTaskId != -1){  
            // 避免重复开启  
            clearInterval(lastTaskId)  
        }  

        lastTaskId = setInterval({  

            val activityManager = UTSAndroid.getUniActivity()?.getSystemService(ACTIVITY_SERVICE) as ActivityManager  
            val memoryInfo = ActivityManager.MemoryInfo()  
            activityManager.getMemoryInfo(memoryInfo)  
            val availMem = memoryInfo.availMem / 1024 / 1024  
            val totalMem = memoryInfo.totalMem / 1024 / 1024  

            callback("设备内存:$totalMem MB,可用内存:$availMem MB")  

        },1000,2000)  

    }  

有这个方法,看看怎么调用的,另外你把你的CallbackPair 也拆成两个参数传入,别用对象了试试,看你的错误是CallbackPair这个参数传的有问题

  • c***@163.com (作者)

    如果kotlin执行回调函数的时候传入的是kotlin中的一个具体的对象实例的话uts这边应该怎么定义接收呢,我现在只知道string这种类型的参数怎么传,但是一涉及到对象我就不知道了

    2024-09-19 18:00

  • c***@163.com (作者)

    callback("设备内存:$totalMem MB,可用内存:$availMem MB") 就像这句代码如果这个callback中传的参数是一个kotlin中的对象实例uts那边怎么定义类型呢

    2024-09-19 18:01

  • c***@163.com (作者)

    我这参数的类型老是对不上了,kotlin那边是可为空的一个对象实例,uts这边我就也定义成可为空,但是编译的时候就报预计是Any但推算的是xx可为空的对象实例,我蒙圈了

    2024-09-19 18:03

DCloud_Android_DQQ

DCloud_Android_DQQ

提供一下可以复现问题的最简完整示例。 我看一下

要回复问题请先登录注册