升级到 Kotlin 1.5.20 时出现谷歌地图问题

Posted

技术标签:

【中文标题】升级到 Kotlin 1.5.20 时出现谷歌地图问题【英文标题】:Issue whit google maps when upgrading to Kotlin 1.5.20 【发布时间】:2021-09-20 04:57:50 【问题描述】:

我最近从 1.5.0 升级到 gradle 1.5.20,因为我使用 Hilt,所以我添加了这个 Solution for @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
                
        

【问题讨论】:

【参考方案1】:

我也有这个问题。

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

已在 1.5.21 版本中解决,现已发布。

【讨论】:

以上是关于升级到 Kotlin 1.5.20 时出现谷歌地图问题的主要内容,如果未能解决你的问题,请参考以下文章

通过 GCP 上的笔记本读取表格时出现谷歌云错误

如何在多个域的 vue 应用上实现谷歌分析?

sencha touch 2 中的谷歌地图实现(MVC 方式)

如何在 iPhone 应用中实现谷歌聊天

在 windows phone 中实现谷歌游戏服务

如何在应用引擎上实现谷歌风格的分页?