Android minifyEnabled true для firebase - PullRequest
0 голосов
/ 04 июня 2018

Я новичок в Android, и я написал такой код.Если я включаю minifyEnabled = true, этот конкретный код не запускается, и я также не знаю, как правильно отлаживать (я могу только войти).Как мне быть?

    DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("ConversationUser").child(FirebaseAuth.getInstance().getUid());
    database.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            ConversationUser conversationUser = dataSnapshot.getValue(ConversationUser.class);


            Log.e("Chat", conversationUser.toString());
            Log.e("Chat Status", conversationUser.getStatus());
            String status = conversationUser.getStatus();

            if (status != null && status.toLowerCase().equals("active")) {
                //TODO: this never trigger if minifyEnabled = true
                retrieveConversation(conversationUser.getId());
                EventBus.getDefault().post(new ChatDetailAdapter.ReceiveMessage());
            }
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            Log.e("ChatHelper", "onChildChanged");

            ConversationUser conversationUser = dataSnapshot.getValue(ConversationUser.class);
            if (conversationUser.getStatus().toLowerCase().equals("delete")) {

                for(Iterator<Map.Entry<String, Conversation>> it = mainMessage.getConversations().entrySet().iterator(); it.hasNext(); ) {
                    Map.Entry<String, Conversation> entry = it.next();
                    if(entry.getKey().equals(conversationUser.getId())) {
                        it.remove();
                    }
                }

                sortConversation();
                EventBus.getDefault().post(new ChatDetailAdapter.ReceiveMessage());
            }
        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
            EventBus.getDefault().post(new ChatDetailAdapter.RemoveMessage());
        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
            EventBus.getDefault().post(new ChatDetailAdapter.ReceiveMessage());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Возможно, ваши модели запутаны, и поэтому ваш код не работает должным образом.Чтобы это исправить, вам нужно будет сохранить папку, в которой вы храните все ваши FirebaseModels в ваших файлах Proguard.

# Firebase
-keep class com.myAppPackage.folderWhereYouSaveYourModels.** { *; }

Также вам нужно будет добавить еще несколько строк, вы можете проверить документацию:

При использовании базы данных Firebase Realtime в вашем приложении вместе с ProGuard необходимо учитыватькак ваши объекты модели будут сериализованы и десериализованы после запутывания.Если вы используете DataSnapshot.getValue (Class) или DatabaseReference.setValue (Object) для чтения и записи данных, вам необходимо добавить правила в файл proguard-rules.pro:

# Add this global rule
-keepattributes Signature

# This rule will properly ProGuard all the model classes in
# the package com.yourcompany.models. Modify to fit the structure
# of your app.
-keepclassmembers class com.yourcompany.models.** {
  *;
}

Надеюсь, чтоэто тебе поможет!

0 голосов
/ 04 июня 2018

Откройте вашу proguard-rules.pro и добавьте

-keep class com.firebase.** { *; }

При использовании базы данных Firebase Realtime в вашем приложении вместе с ProGuard вам необходимо подумать о том, как будут сериализованы ваши объекты модели.и десериализовано после запутывания.

# Add this global rule
-keepattributes Signature

# This rule will properly ProGuard all the model classes in
# the package com.yourcompany.models. Modify to fit the structure
# of your app.
-keepclassmembers class com.yourcompany.models.** {
  *;
}

Подробнее см. Proguard Rule.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...