首页 > 解决方案 > 升级到 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
                }
        }

标签: androidgoogle-mapskotlindagger-hilt

解决方案


我也有这个问题。

我为此问题找到了官方 Kotlin 票:https ://youtrack.jetbrains.com/issue/KT-47459

它已在版本 1.5.21 上得到解决,该版本现已发布。


推荐阅读