首页 > 解决方案 > 保存在 Cloud Firestore 中的 Hashmap 对象,字段名称为通知名称的字母

问题描述

我正在 Kotlin 中编写一个 android 应用程序,并且在将文档添加到 Cloud Firestore 时遇到问题。在 android studio AVD Emulator 中测试应用程序时,它运行良好并按预期保存,但是当我从手机测试时,在测试模式下从 Google Play 商店安装应用程序时,它会将地图的字段名称更改为字母。

我在 kotlin 中创建了一个 hashMap,如下所示:

            val mapeamento: HashMap<String, Any?>  = hashMapOf(
                "user_id" to userId,
                "data" to data,
                "hora" to hora,
                "local" to mapLocais,
                "sinal" to mapSinais,
                "companhia" to mapCompanhias,
                "contexto" to contexto,
                "soma" to mapSoma,
                "energossoma" to mapEnergossoma,
                "psicossoma" to mapPsicossoma,
                "mentalsoma" to mentalsoma,
                "hipotese" to mapHipotese,
                "informacoes" to mapInformacoes,
                "sincronicidades" to mapSincronicidades,
                "categoria" to mapCategoria,
                "hipotese_comprovada" to hipoteseComprovada,
                "explicacao_comprovacao" to explicacaoComprovacao
            )

并以这种方式添加 Cloud Firestore:

                dbMapeamentoUser.add(mapeamento)
                    .addOnSuccessListener { documentReference ->
                        Log.d(TAG, "Mapeamento DocumentSnapshot added with ID: ${documentReference.id}")
                        Toast.makeText(this@CadastroMapeamentoActivity, "Mapeamento adicionado!", Toast.LENGTH_LONG).show()
                        dbMapeamentoUser.addSnapshotListener { documentSnapshot, firebaseFirestoreException ->
                            // do nothing, just to make sure server will update local cache
                        }
                        finish()
                    }
                    .addOnFailureListener { e ->
                        Log.w(TAG, "Error adding Mapeamento document", e)
                        Toast.makeText(this@CadastroMapeamentoActivity, "Erro ao tentar adicionar o mapeamento: ${e.message}", Toast.LENGTH_LONG).show()
                    }

问题是,当我从 android studio AVD Emulator 添加一个新文档时,它正确如下:

在此处输入图像描述

但是,当我从 beta 测试中安装在手机上的应用程序中添加时,它会将字段名称更改为字母:

在此处输入图像描述

我找不到任何可能有同样问题的人,这就是我提出这个问题的原因。

有什么想法吗?

标签: androidkotlinhashmapgoogle-cloud-firestore

解决方案


问题:从技术上讲,不知道会发生什么,但问题是:当生成 apk 并将“proguard minify”设置为“true”时,它会丢失对象类的引用并将字段名称保存为字母。当设置为“false”时,它通常使用正确的对象属性名称。

解决方案:因此,目前,解决方案是:在这个特定的应用案例中,始终生成将 proguard minify 设置为 false 的 apk。


推荐阅读