android - 保存在 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 测试中安装在手机上的应用程序中添加时,它会将字段名称更改为字母:
我找不到任何可能有同样问题的人,这就是我提出这个问题的原因。
有什么想法吗?
解决方案
问题:从技术上讲,不知道会发生什么,但问题是:当生成 apk 并将“proguard minify”设置为“true”时,它会丢失对象类的引用并将字段名称保存为字母。当设置为“false”时,它通常使用正确的对象属性名称。
解决方案:因此,目前,解决方案是:在这个特定的应用案例中,始终生成将 proguard minify 设置为 false 的 apk。
推荐阅读
- java - 如何对字符串集合的集合进行排序?
- cmake - 如何从 cmake 运行复合脚本语句?
- ios - HealthKit - 在 HKWorkoutSession 期间更改 HKWorkoutConfiguration?
- python - Sklearn 随机森林在预测上比训练花费更多的时间
- c# - 如何登录用户对持久层的声明(洋葱架构)
- node.js - 前端 API 调用接收 403 错误状态
- flutter - Flutter 在尝试查找包时遇到套接字错误
- java - Difference between Java bytecode and Kotlin bytecode
- vue.js - 如何使用自定义图标在 vuetify 数据表上运行排序箭头功能?
- javascript - 节点js document.getElementById中的tensorflow-models/posenet null