Как работает null safety в Kotlin и чем опасны platform types?
Kotlin делит каждый тип на nullable (String?) и non-nullable (String), и компилятор не даёт обратиться к nullable-значению без проверки, поэтому NullPointerException в основном исчезает. Platform types появляются на границе с Java: Kotlin не знает, может ли Java-метод вернуть null, и доверяет вам. Именно оттуда NPE и приходят — аннотируйте Java-API или считайте их результат nullable в месте вызова.