gpt4 book ai didi

Android AIDL : Project crash after change code to kotlin from java

转载 作者:行者123 更新时间:2023-12-03 02:25:24 26 4
gpt4 key购买 nike

这些是我的项目的链接 AIDL-Client , AIDL-Server 。步骤:

  1. 请安装这两个应用程序。

  2. 然后点击“绑定(bind)设备按钮”

  3. IBindDeviceCallback:deviceName:tpd deviceBrand:loop”在客户端项目中打印

  4. 将AIDL-Server项目中的“AIDLService.java”更改为“AIDLService.kt”,然后安装apk。

  5. 然后点击AIDL-server项目的“BIND Device”按钮

你会发现崩溃。

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter deviceCertifcate
at android.os.Parcel.readException(Parcel.java:1697)
at android.os.Parcel.readException(Parcel.java:1646)
at com.loop.ILoopService$Stub$Proxy.bindDevice(ILoopService.java:88)
at com.client.MainActivity$mServiceConnection$1.onServiceConnected(MainActivity.kt:53)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1516)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1544)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

这看起来像是 android/kotlin 的问题,而不是我的问题。

关于此崩溃的任何想法,如何在 kotlin 中修复它?

最佳答案

异常看起来像是来自 Android 的原因是因为它是在进程之间传递的。

在客户端代码中的 MainActivity.kt 第 53 行,您将 null 传递给 bindDevicedeviceCertificate byte[]。异常(exception)情况是告诉您 this 不能为空。

当您将服务从 Java 转换为 Kotlin 时,它默认将方法参数视为非空,deviceCertifcate: ByteArray。如果你告诉 Kotlin 这个参数可以为 null,它就不会崩溃。这是通过使用 ? 声明类型来实现的,即 deviceCertifcate: ByteArray?

有关更多信息,请参阅 the Kotlin docs on Null-Safety.

在普通的 Kotlin 应用程序中,这甚至无法编译,但由于它通过 AIDL 跨越进程边界,因此编译器无法捕获此问题。

关于Android AIDL : Project crash after change code to kotlin from java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com