QuickBlox / quickblox-android-sdk

QuickBlox Android SDK includes code snippets with main use cases and framework JAR library.
BSD 3-Clause "New" or "Revised" License
417 stars 697 forks source link

App is crashing internally due to the error in the SDK #813

Closed gurjeetsingh-impinge closed 6 months ago

gurjeetsingh-impinge commented 1 year ago

My app is getting crash due to the problem described below with logs.

I am using this below code & app is crashing due to this :

QBRequestGetBuilder requestBuilder = new QBRequestGetBuilder(); requestBuilder.setLimit(DIALOGS_PER_PAGE); // requestBuilder.setSkip(clearDialogHolder ? 0 : QbDialogHolder.getInstance().getDialogs().size()); /if (!utilObj.getProgressDialogObj().isShowing())/ utilObj.startLoader(this, R.drawable.image_for_rotation);

    if (!QbDialogHolder.getInstance().getDialogs().isEmpty()) {
        Set<String> dialogsIds = new HashSet<>();

        for (QBChatDialog dialog : QbDialogHolder.getInstance().getDialogs().values()) {
            dialogsIds.add(dialog.getDialogId());
        }

        QBRestChatService.getTotalUnreadMessagesCount(dialogsIds, new Bundle()).performAsync(new QBEntityCallback<Integer>() {
            @Override
            public void onSuccess(Integer total, Bundle params) {
                utilObj.stopLoader();

                unreadMessageCount = total;
                getPermissionMenuList(UserId);

                Log.i("P-Total", "total unread messages from saved Dialog: " + total);

// Log.i(TAG, "dialog Unread1: " + params.getInt("56f3fac3a0eb4786ae00003f")); // Log.i(TAG, "dialog Unread2: " + params.getInt("56f3f546a28f9affc0000033")); }

            @Override
            public void onError(QBResponseException e) {
                utilObj.stopLoader();
            }
        });
    } else {
        ChatHelper.getInstance().getDialogs(requestBuilder, new QBEntityCallback<ArrayList<QBChatDialog>>() {
            @Override
            public void onSuccess(ArrayList<QBChatDialog> dialogs, Bundle bundle) {
                if (dialogs.size() > 0) {

                    Set<String> dialogsIds = new HashSet<>();

                    if (clearDialogHolder) {
                        QbDialogHolder.getInstance().clear();
                    }

                    for (QBChatDialog dialog : dialogs) {
                        dialogsIds.add(dialog.getDialogId());
                    }

                    QbDialogHolder.getInstance().addDialogs(dialogs);

                    QBRestChatService.getTotalUnreadMessagesCount(dialogsIds, new Bundle()).performAsync(new QBEntityCallback<Integer>() {
                        @Override
                        public void onSuccess(Integer total, Bundle params) {
                            if (utilObj != null) utilObj.stopLoader();

                            unreadMessageCount = total;
                            getPermissionMenuList(UserId);

                            Log.i("P-Total", "total unread messages: " + total);

// Log.i(TAG, "dialog Unread1: " + params.getInt("56f3fac3a0eb4786ae00003f")); // Log.i(TAG, "dialog Unread2: " + params.getInt("56f3f546a28f9affc0000033")); }

                        @Override
                        public void onError(QBResponseException e) {
                            utilObj.stopLoader();
                        }
                    });
                } else {
                    utilObj.stopLoader();
                }
            }

            @Override
            public void onError(QBResponseException e) {
                utilObj.stopLoader();
            }
        });
    }
}

................................................................................................................................................

SDK VERSION : 4.1.1 OS - Windows 10 Android Studio Details-

Android Studio Hedgehog | 2023.1.1 Canary 14 Build #AI-231.9225.16.2311.10533651, built on July 20, 2023 Runtime version: 17.0.7+0-b2043.56-10353782 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 10.0 GC: G1 Young Generation, G1 Old Generation Memory: 2048M Cores: 4 Registry: external.system.auto.import.disabled=true debugger.new.tool.window.layout=true ide.text.editor.with.preview.show.floating.toolbar=false ide.highlighting.mode.essential=true ide.experimental.ui=true ide.essentials.mode=true

Non-Bundled Plugins: Dart (231.9161.14) io.flutter (75.1.3) ...........................................................................................................................................................

Logs :

Process: com.GoAquatix.WorkForceApp, PID: 14821 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$4.done(AsyncTask.java:415) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:381) at java.util.concurrent.FutureTask.setException(FutureTask.java:250) at java.util.concurrent.FutureTask.run(FutureTask.java:269) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012) Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/iid/FirebaseInstanceId; at com.quickblox.messages.services.a.a.(Unknown Source:3) at com.quickblox.messages.services.a.b.a(Unknown Source:2) at com.quickblox.messages.services.SubscribeService.a(Unknown Source:15) at com.quickblox.messages.services.SubscribeService.c(Unknown Source:57) at com.quickblox.messages.services.SubscribeService.b(Unknown Source:0) at com.quickblox.messages.services.SubscribeService.onHandleWork(Unknown Source:50) at androidx.core.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:396) at androidx.core.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:387) at android.os.AsyncTask$3.call(AsyncTask.java:394) at java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.iid.FirebaseInstanceId" on path: DexPathList[[dex file "/data/data/com.GoAquatix.WorkForceApp/code_cache/.overlay/base.apk/classes2.dex", dex file "/data/data/com.GoAquatix.WorkForceApp/code_cache/.overlay/base.apk/classes3.dex", zip file "/data/app/4ptMcKFUSva13ISQg9Z3GA==/com.GoAquatix.WorkForceApp-_Flb_TrDchT6uBPLQcIFVw==/base.apk"],nativeLibraryDirectories=[/data/app/4ptMcKFUSva13ISQg9Z3GA==/com.GoAquatix.WorkForceApp-_Flb_TrDchT6uBPLQcIFVw==/lib/arm64, /data/app/~~4ptMcKFUSva13ISQg9Z3GA==/com.GoAquatix.WorkForceApp-_Flb_TrDchT6uBPLQcIFVw==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.quickblox.messages.services.a.a.(Unknown Source:3) at com.quickblox.messages.services.a.b.a(Unknown Source:2) at com.quickblox.messages.services.SubscribeService.a(Unknown Source:15) at com.quickblox.messages.services.SubscribeService.c(Unknown Source:57) at com.quickblox.messages.services.SubscribeService.b(Unknown Source:0) at com.quickblox.messages.services.SubscribeService.onHandleWork(Unknown Source:50) at androidx.core.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:396) at androidx.core.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:387) at android.os.AsyncTask$3.call(AsyncTask.java:394) at java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012)

..................................................................................................................................................................... Apps build.gradle

plugins { id("com.android.application") // ...

// Make sure that you have the Google services Gradle plugin
id("com.google.gms.google-services")

// Add the Crashlytics Gradle plugin
id("com.google.firebase.crashlytics")

}

android { compileSdkVersion 33 buildToolsVersion '30.0.3'

defaultConfig {
    applicationId "com.GoAquatix.WorkForceApp"
    minSdkVersion 21
    versionCode 76
    versionName "7.6"
    targetSdkVersion 33
    multiDexEnabled true
}

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

lintOptions {
    abortOnError false
}
packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
    exclude 'org/apache/http/version.properties'
    exclude 'org/apache/http/client/version.properties'
    exclude 'org/apache/http/entity/mime/version.properties'
}

useLibrary 'org.apache.http.legacy'

dexOptions {
    // Prevent OutOfMemory with MultiDex during the build phase
    javaMaxHeapSize "4g"
    preDexLibraries = false
    jumboMode true
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

}

dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.mediarouter:mediarouter:1.4.0' implementation files('libs/sdei-support-lib.jar') implementation project(':compact_calender_library') implementation 'com.mikhaellopez:circularimageview:3.0.1' implementation 'com.github.michaelye.easydialog:easydialog:1.4' implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.vectordrawable:vectordrawable:1.1.0' implementation 'com.google.android.material:material:1.4.0'

implementation 'com.google.code.gson:gson:2.8.9'

implementation('org.apache.httpcomponents:httpmime:4.5.6') {
    exclude module: 'httpclient'
}
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5'
implementation 'com.github.bumptech.glide:glide:4.12.0'
implementation 'com.google.android.play:core:1.10.3'
implementation 'com.google.android.gms:play-services-maps:18.1.0'
implementation 'com.google.android.gms:play-services-location:21.0.1'
implementation 'com.google.firebase:firebase-auth:22.1.0'
implementation 'com.google.firebase:firebase-database:20.2.2'
implementation 'com.google.firebase:firebase-storage:20.2.1'
implementation 'com.google.android.gms:play-services-analytics:18.0.3'
implementation 'org.jsoup:jsoup:1.13.1'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

implementation 'com.google.firebase:firebase-analytics:21.3.0'

implementation 'com.google.android.gms:play-services-gcm:17.0.0'
implementation 'com.google.firebase:firebase-core:21.1.1'
implementation 'com.google.firebase:firebase-messaging:23.2.0'
implementation 'android.arch.lifecycle:extensions:1.1.1'
//Quick blox
implementation "com.quickblox:quickblox-android-sdk-messages:$qbSdkVersion"
implementation "com.quickblox:quickblox-android-sdk-chat:$qbSdkVersion"
implementation "com.quickblox:quickblox-android-sdk-content:$qbSdkVersion"
implementation "com.quickblox:quickblox-android-sdk-videochat-webrtc:$qbSdkVersion"
implementation "com.quickblox:quickblox-android-sdk-conference:$qbSdkVersion"
implementation "com.quickblox:quickblox-android-sdk-customobjects:$qbSdkVersion"
implementation 'com.timehop.stickyheadersrecyclerview:library:0.4.2'
implementation 'com.github.orangegangsters:swipy:1.2.3'

implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation files('libs/YouTubeAndroidPlayerApi.jar')
// Import the BoM for the Firebase platform
/// implementation platform('com.google.firebase:firebase-bom:27.0.0')

// Declare the dependencies for the Crashlytics and Analytics libraries
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-crashlytics:18.4.0'

// Recommended: Add the Google Analytics SDK.
implementation 'com.google.firebase:firebase-analytics:21.3.0'

}

............................................................................................................................................................................................ Project's build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript { ext.qbSdkVersion = '4.1.1' repositories { jcenter() google() } dependencies { // implementation 'com.google.firebase:firebase-crashlytics' classpath 'com.android.tools.build:gradle:4.1.3' classpath 'com.google.gms:google-services:4.3.15' // Add the Crashlytics Gradle plugin. classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.0' } }

//In your Gradle File

allprojects { repositories { jcenter() google() maven { url "https://maven.google.com/" } maven { url "https://github.com/QuickBlox/quickblox-android-sdk-releases/raw/master/" } } }

Please let me know if you need anything else to resolve this issue also this has raised due to updation of the TargetSDK to 33 as this is the requirement of the PlayStore

Baterka commented 1 year ago

Similar problem here...

AqeelAaqi commented 11 months ago

resolve crashes with adding these SDK implementation "com.google.firebase:firebase-core:21.1.1" implementation "com.quickblox:quickblox-android-sdk-messages:3.11.0"//