dataSnapshot.getValue (MyClass.class) из Firebase отлично работает в разработке, но получают нулевые значения после публикации в Play Store - PullRequest
0 голосов
/ 26 апреля 2020

Я извлекаю данные из базы данных в реальном времени (база данных в реальном времени) и правильно отображаю их в обзоре переработчика. Это мой код:

Мой класс, StickerPack.class

public class StickerPack implements Parcelable {
    //Vienen de la bd
        public String identifier;
        public String name;
        public String publisher;
        public String trayImageFile;
        public String publisherEmail;
        public String publisherWebsite;
        public String privacyPolicyWebsite;
        public String licenseAgreementWebsite;
        public String imageDataVersion;
        public boolean avoidCache;
    //Se generan dinamicamente
        public String iosAppStoreLink;
        public List<Sticker> stickers;
        public long totalSize;
        public String androidPlayStoreLink;
        public boolean isWhitelisted;

    //Constructores
        public StickerPack(){}
        public StickerPack(String identifier, String name, String publisher, String trayImageFile, String publisherEmail, String publisherWebsite, String privacyPolicyWebsite, String licenseAgreementWebsite, String imageDataVersion, boolean avoidCache) {
            this.identifier = identifier;
            this.name = name;
            this.publisher = publisher;
            this.trayImageFile = trayImageFile;
            this.publisherEmail = publisherEmail;
            this.publisherWebsite = publisherWebsite;
            this.privacyPolicyWebsite = privacyPolicyWebsite;
            this.licenseAgreementWebsite = licenseAgreementWebsite;
            this.imageDataVersion = imageDataVersion;
            this.avoidCache = avoidCache;
        }
        protected StickerPack(Parcel in) {
            identifier = in.readString();
            name = in.readString();
            publisher = in.readString();
            trayImageFile = in.readString();
            publisherEmail = in.readString();
            publisherWebsite = in.readString();
            privacyPolicyWebsite = in.readString();
            licenseAgreementWebsite = in.readString();
            iosAppStoreLink = in.readString();
            stickers = in.createTypedArrayList(Sticker.CREATOR);
            totalSize = in.readLong();
            androidPlayStoreLink = in.readString();
            isWhitelisted = in.readByte() != 0;
            imageDataVersion = in.readString();
            avoidCache = in.readByte() != 0;
        }

    //Getter and Setters are generated by default but i will not show them to not make the post so long
}

И я использую ссылку и слушателей, как это, я использую два разных способа только для тестирования и оба они отлично работают

        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
        DatabaseReference databaseReference = firebaseDatabase.getReference("sticker_packs");
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                stickerPackList = new ArrayList<>();
                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    StickerPack pack = ds.getValue(StickerPack.class) ;
                    StickerPackFirebase pack2 = ds.getValue(StickerPackFirebase.class) ;

                    GenericTypeIndicator<ArrayList<StickerPack>> t = new GenericTypeIndicator<ArrayList<StickerPack>>() {};
                    ArrayList<StickerPack> spl = dataSnapshot.getValue(t);

                    GenericTypeIndicator<StickerPack> t2 = new GenericTypeIndicator<StickerPack>() {};
                    StickerPack sp = ds.getValue(t2);


                    Log.i("CARTOONLOG", "value1: " + Objects.requireNonNull(ds.getValue()).toString());
                    Log.i("CARTOONLOG", "value2: " + Objects.requireNonNull(pack).name );
                    Log.i("CARTOONLOG", "value2: " + Objects.requireNonNull(pack2).name );


                    if (sp!= null){
                        stickerPackList.add(sp);
                        Log.i("CARTOONLOG", "pack: " + sp.name);
                    }
                }
                setUpRecyclerView(stickerPackList);
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.i("ERROR FIREBASE", "Error trayendo los datos, firebase snapshot in stickerpacklist");
            }
        });

        DatabaseReference databaseReference2 = firebaseDatabase.getReference("sticker_packs");
        databaseReference2.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {



                StickerPack pack = dataSnapshot.getValue(StickerPack.class) ;
                StickerPackFirebase pack2 = dataSnapshot.getValue(StickerPackFirebase.class) ;
                Log.i("CARTOONLOGCHILD", "value0: " + Objects.requireNonNull(dataSnapshot.getValue()).toString() + " string: " + s);
                Log.i("CARTOONLOGCHILD", "value1: " + Objects.requireNonNull(pack).name);
                Log.i("CARTOONLOGCHILD", "value2: " + Objects.requireNonNull(pack2).name);


            }
                //The other methods are below this
        });

Мои данные в Firebase выглядят так:

структура данных firebase

Это журналы из среды разработки:

введите описание изображения здесь

И это журналы из приложения, загруженного из магазина Google Play после того, как я отправил на внутреннее тестирование:

введите описание изображения здесь

И это моя конфигурация в Gradle

buildTypes {
    customDebugType {
        debuggable true
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

Редактировать:

Может быть, это полезная информация

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.1.0'

    implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
    implementation 'androidx.browser:browser:1.2.0'
    implementation 'androidx.media:media:1.1.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

    implementation 'com.google.android.material:material:1.1.0'

    implementation 'com.google.firebase:firebase-messaging:20.1.5'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.facebook.fresco:fresco:1.10.0'
    implementation 'com.facebook.fresco:webpsupport:1.10.0'
    implementation 'com.facebook.fresco:animated-webp:1.10.0'
    implementation 'com.facebook.fresco:webpsupport:1.10.0'
    implementation 'com.facebook.fresco:animated-base:1.13.0'
    implementation 'com.facebook.fresco:nativeimagetranscoder:1.12.0'
    implementation 'com.google.android.gms:play-services-ads:19.1.0'
    implementation 'com.android.billingclient:billing:2.2.0'

    implementation 'com.google.firebase:firebase-analytics:17.3.0'
    implementation 'com.google.firebase:firebase-ads:19.1.0'


    //implementation 'com.firebaseui:firebase-ui-database:6.2.1'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'com.google.firebase:firebase-database:19.2.1'
    implementation 'com.google.firebase:firebase-storage:19.1.1'
    implementation 'com.firebaseui:firebase-ui-storage:6.2.1'
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'


}

1 Ответ

0 голосов
/ 26 апреля 2020

Скорее всего, ProGuard минимизирует ваши классы моделей, что означает, что приложение не может считывать их из базы данных.

См .:

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