#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
Сбой моего приложения для Android при попытке загрузить данные из базы данных firebase в реальном времени. Этот сбой происходит только в рабочей среде Play Store. Я попытался создать релиз apk и установить на устройство, которое сработало.
Фатальное исключение: java.lang.RuntimeException: неперехваченное исключение в цикле выполнения базы данных Firebase (19.6.0). Если вы еще не используете последнюю версию Firebase SDK, попробуйте обновить свои зависимости. Если эта проблема сохраняется, пожалуйста, отправьте отчет по адресу https://github.com/firebase/firebase-android-sdk
на com.google.firebase.database.android.AndroidPlatform $ 1 $ 1.запустите (AndroidPlatform.java: 6) в android.os.Handler.handleCallback(Handler.java: 808) в android.os.Handler.DispatchMessage(Handler.java: 101) в android.os.Looper.loop(Looper.java: 166) вandroid.app.ActivityThread.main(ActivityThread.java: 7529) в java.lang.reflect.Метод.invoke(Method.java ) в com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
И
Вызвано java.lang.Ошибка NoSuchMethodError: нет виртуального метода object() Lk/ a / e; в классе Lk/a / e; или его суперклассов (объявление ‘k.a.e’ появляется в /data/app/com.example.android.buyer-zyr2oysT1mAsYofRhpiDMA==/base.apk) вcom.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:4) на com.google.firebase.database.util.JsonMapper.serializeJsonValue(JsonMapper.java:59) на com.google.firebase.database.util.JsonMapper.serializeJSON(JsonMapper.java: 12) на com.google.firebase.database.connection.WebsocketConnection.send(WebsocketConnection.java:12) на com.google.firebase.database.connection.Connection.sendData(Connection.java: 12) в com.google.firebase.database.connection.Connection.sendRequest(Connection.java: 12) на com.google.firebase.database.connection.PersistentConnectionImpl.sendSensitive(PersistentConnectionImpl.java:12) на com.google.firebase.database.connection.PersistentConnectionImpl.sendAction(PersistentConnectionImpl.java:22) на com.google.firebase.database.connection.Подключение.onConnectionReady(Connection.java:22) на com.google.firebase.database.connection.Подключение.onHandshake (Connection.java:22) на com.Google.firebase.database.connection.Подключение.onControlMessage(Connection.java:2) в com.google.firebase.database.connection.Connection.g(Connection.java:47) в com.google.firebase.database.connection.WebsocketConnection.appendFrame(WebsocketConnection.java:6) в com.google.firebase.database.connection.WebsocketConnection.handleIncomingFrame(WebsocketConnection.java:4) в com.google.firebase.database.connection.WebsocketConnection$WSClientTubesock$2.запустите (WebsocketConnection.java:4) в java.util.concurrent.Исполнители $RunnableAdapter.call(Executors.java:457) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1162) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) в java.lang.Thread.run(Thread.java:784)
Это мой файл gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.afrimarketsquare.android.buyer"
minSdkVersion 19
targetSdkVersion 30
versionCode 35
versionName "2.3.5"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
signingConfigs {
release {
storeFile file('/Users/pc/Desktop/me/path/to/key.keystore')
storePassword '..djjd'
keyPassword '..dhd'
keyAlias = '..dhdh'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
main {
assets.srcDirs = ['src/main/assets']
}
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == "androidx.appcompat") {
if (!requested.name.startsWith("multidex")) {
details.useVersion "1. "
//details.useVersion "${targetSdk}. "
}
}
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation platform('com.google.firebase:firebase-bom:26.4.0')
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-database'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.navigation:navigation-fragment:2.3.3'
implementation 'androidx.navigation:navigation-ui:2.3.3'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation "androidx.browser:browser:1.3.0"
implementation 'org.apache.httpcomponents:httpcore:4.4.13'
implementation 'com.facebook.android:facebook-login:4.35.0'
implementation 'com.facebook.fresco:fresco:2.1.0'
implementation 'com.google.android.gms:play-services-safetynet:17.0.0'
implementation 'com.google.android.gms:play-services-auth:19.0.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'com.github.bumptech.glide:glide:4.11.0'
implementation 'com.github.nkzawa:socket.io-client:0.6.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
implementation 'com.squareup.okhttp3:okhttp:3.14.9'
implementation 'org.jsoup:jsoup:1.13.1'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'com.fenchtose.nocropper:nocropper:0.3.0'
implementation 'com.android.volley:volley:1.1.1'
implementation "me.leolin:ShortcutBadger:1.1.22@aar"
implementation 'com.github.stfalcon:frescoimageviewer:0.5.0'
implementation 'co.paystack.android:paystack:3.0.18'
implementation 'io.agora.rtc:full-sdk:3.1.2'
implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2'
implementation 'com.github.medyo:fancybuttons:1.9.1'
implementation 'com.parse.bolts:bolts-tasks:1.4.0'
implementation 'com.parse.bolts:bolts-applinks:1.4.0'
}
Ниже приведен мой код для запроса firebase
public void loadNotificationDatabase(NotificationsActivity.dataFinishChanging myCallback) {
ArrayList<NotificationsHandler> lists = new ArrayList<>();
Query ref = notificationDatabase.child(user.getKey()).orderByChild("notification_time").limitToLast(100);
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
NotificationsHandler list = dataSnapshot.getValue(NotificationsHandler.class);
if (list != null) {
list.setTitle(ds.child("notification_title").getValue(String.class));
list.setMessage(ds.child("notification_message").getValue(String.class));
list.setUserid(ds.child("notification_to").getValue(String.class));
list.setType(ds.child("notification_type").getValue(String.class));
list.setImage(ds.child("notification_image").getValue(String.class));
list.setFrom(ds.child("notification_from").getValue(String.class));
list.setStatus(ds.child("notification_status").getValue(String.class));
list.setRowKey(ds.child("notification_id").getValue(String.class));
Long time = ds.child("notification_time").getValue(long.class);
if(time != null) {
list.setTimestamp(time);
}else{
list.setTimestamp(System.currentTimeMillis()/1000);
}
}
lists.add(list);
}
Collections.reverse(lists);
myCallback.onCallback(lists);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.e("FB", "Error: " error);
}
});
}
Комментарии:
1. Вы пробовали обновлять свои зависимости до последней версии, как говорится в сообщении об ошибке?
2. @AlexMamo я просто переключился с
firebase-bom:26.4.0
наfirebase-bom:26.6.0
. но есть ли какой-либо способ протестировать исправление, не выпуская мое приложение?3. Да, на локальном эмуляторе или реальном устройстве.
4. @AlexMamo Да, это то, что я использовал, но оно не вылетает, за исключением случаев, когда я загружаю из play store
5. Вы подаете в суд на ProGurad, чтобы запутать данные?