본문 바로가기

IT_Story/안드로이드

[kotlin] Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter intent

 

작년부터 Kotlin으로 안드로이드 개발을 하고 있고,

현재는 SmartDeviceLink라는 SDL (차량 연동 앱..??) 기능을 개발하고있다.

 

Sdl과 현재 앱과 연결을 하려면 service로 띄어서 돌려야하는데

(잡다한건 미루고..)

 

간혹가다가 크래쉬가 나서 앱이 죽는다.

 

Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter intent

이게 뭔가 했더니 parameter에서 notnull인데 null로 intenr가 넘어온다는 얘기던데요.

 

현재 Service 코드를 보면  onStartCommand 에서 intetn가 null일 수 있다는 표시가 없습니다.

override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
return super.onStartCommand(intent, flags, startId)
}

 

아래처럼 Intent에 '?' 를 추가하면 크래쉬가 안납니다.

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
return super.onStartCommand(intent, flags, startId)
}

 

처음에 개발할 때 코틀린을 잘 몰라서 자바 -> 코틀린으로 IDE 툴을 이용해 converting을 했더니 발생했던 부분입니다.

또한, 컴파일에 발생하는게 아니기 때문에 바로 확인할 수 없다는 단점이 있습니다.

 

참고하세요~