代码之家  ›  专栏  ›  技术社区  ›  Asim

geoFire。设置位置正在崩溃-科特林

  •  0
  • Asim  · 技术社区  · 7 年前

    我正在和GeoFire一起制作地图。尝试将我的地理位置上载到firebase时,请使用:

    initGeoFire.setLocation(currentUser, GeoLocation(mMap.cameraPosition.target.latitude, mMap.cameraPosition.target.longitude))
    

    应用程序崩溃,出现以下错误:

    GeoFire.setLocation - No virtual method setValue(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/firebase/tasks/Task; in class Lcom/google/firebase/database/DatabaseReference; or its super classes (declaration of 'com.google.firebase.database.DatabaseReference'
    

    请帮我解决这个问题。。

    2 回复  |  直到 7 年前
        1
  •  1
  •   abel    7 年前

    这里的问题是GeoFire声明的方式 firebase-database 附属国。2.1.2之后的版本使用以下版本声明(例如,最新的2.3.1): <version>12.0.1</version> .对于给定版本的 firebase数据库 setValue方法解析为 setValue(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/firebase/tasks/Task; .的实际方法签名 firebase数据库 我的项目中的依赖性(我使用最新的16.0.4)是 setValue(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/android/gms/tasks/Task; .注意,返回类型不同,这就是 NoSuchMethodError .

    同样的问题也存在 removeLocation() 也只有一个参数。快速解决方法是使用 setLocation()/removeLocation() 如果有一个额外的侦听器参数,这些方法将被正确解析。

        2
  •  0
  •   Boukharist    7 年前

    如果你的应用程序中有proguard,也许你应该添加这个规则,这样方法就不会混淆

    -dontwarn com.firebase.**
    -keep class com.firebase.** { *; }
    -keep interface com.firebase.** { *; }
    
    推荐文章