android - 升级到 Kotlin 1.5.20 时出现谷歌地图问题
问题描述
我最近从 1.5.0 升级到 gradle 1.5.20,因为我使用 Hilt,所以我为@AndroidEntryPoint 添加了这个解决方案,我也使用 Google Maps Api,当我升级时出现了一个新问题。
Internal Error occurred while analyzing this expression:
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:459)
at org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt.extractTypeParametersFromUpperBounds(TypeUtils.kt:209)
at org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt.extractTypeParametersFromUpperBounds(TypeUtils.kt:203)
at org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt.extractTypeParametersFromUpperBounds(TypeUtils.kt:189)
at org.jetbrains.kotlin.load.java.lazy.types.JavaTypeResolverKt.getErasedUpperBound(JavaTypeResolver.kt:358)
at org.jetbrains.kotlin.load.java.lazy.types.JavaTypeResolver$computeArguments$1$erasedUpperBound$1.invoke(JavaTypeResolver.kt:234)
at org.jetbrains.kotlin.load.java.lazy.types.JavaTypeResolver$computeArguments$1$erasedUpperBound$1.invoke(JavaTypeResolver.kt:233)
at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedLazyValue.invoke(LockBasedStorageManager.java:408)
at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedNotNullLazyValue.invoke(LockBasedStorageManager.java:527)
at org.jetbrains.kotlin.types.LazyWrappedType.getDelegate(SpecialTypes.kt:82)
at org.jetbrains.kotlin.types.WrappedType.getConstructor(KotlinType.kt:128)
at org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt.containsSelfTypeParameter(TypeUtils.kt:231)
at org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt.containsSelfTypeParameter(TypeUtils.kt:237)
at org.jetbrains.kotlin.types.typeUtil.TypeUtilsKt.hasTypeParameterRecursiveBounds(TypeUtils.kt:223)
at org.jetbrains.kotlin.load.java.lazy.types.JavaTypeResolver.computeArguments(JavaTypeResolver.kt:218)
at org.jetbrains.kotlin.load.java.lazy.types.JavaTypeResolver.computeSimpleJavaClassifierT...
该问题是指这行代码:
val collection = markerManager.getCollection(layer.id)
if (collection == null) {
markerManager.newCollection(layer.id)
.setOnMarkerClickListener { marker ->
navigate(marker.tag as Marker)
false
}
}
解决方案
我也有这个问题。
我为此问题找到了官方 Kotlin 票:https ://youtrack.jetbrains.com/issue/KT-47459
它已在版本 1.5.21 上得到解决,该版本现已发布。