2017-07-10 8 views
4

Firebaseと非常に奇妙なことが分かりました。私がそれが何か間違っているのか、この問題の解決策があるのか​​を知りたいと思います。アプリケーションがデバッグまたはリリースのバージョンである場合、Firebaseは異なるファイルを書き込みます

基本的に、これは私がアプリを開発していた(そしてそれは私が期待していたまさにだ)とき、それは常に書かれたものです:

[email protected]¸com maxMatches: 60 maxPlayers: 500 maxTeams: 30 userId: "SnMuRZEVqyN***...***hv2" userMail: "[email protected]" userName: "Nicola Salvaro" userPicture: "https://lh4.googleusercontent.com/-L7lSPz0VJ9A/..." userToken: -1

、これは私はアプリを構築した後、それが書き込みをするものですリリースモード:

[email protected]¸com a: "Nicola Salvaro" b: "ESjqwuh***...***wg1" c: "[email protected]" d: "https://lh4.googleusercontent.com/-2kwSEmLEN1c/..." e: -2 f: 30 g: 500 h: 60 userToken: 1499775285255

すべての "タイトル" の文字に置き換えられました。そして、 "e:"は "userToken"とされていました。それを更新しようとすると、正しい文字列で書かれていましたが、元の値の上に書かれていません...新しいものを書きました。次に、フル・ユーザーを読み込もうとすると、「userToken:」ではなく「e:」の値が取得されます。

私は間違っていましたか?

答えて

4

リリースモードでは、あなたのAndroidアプリはProguardによって縮小されています。このプロセスは、未使用のメソッドを取り除き、他のメソッド名を短くします。

結果として、あなたのPOJOクラス(Firebaseとの間で読み書きするクラス)は新しいメソッド名を取得し、Firebaseはこれらのメソッド名を反射的に使用してJSONのプロパティを決定します。

解決策は、ProguardにPOJOのメソッド名を変更しないように指示することです。これを行う方法についての最古のQ & Aがある

+0

ありがとうございました!!!私の場合、@ Keepを追加するだけで十分でしたし、すべてが完璧に機能しました!あなたは私の一日を救った! –

+0

これをよく聞いて問題を解決しました。私はいつも '@ Keep'について忘れていますが、これは実際にこの作業を行う最速の方法と思われます。これは私にとっても素晴らしい思い出でした。 :-) –

関連する問題