2

I am using this library for making an app for Qr code reader. It works when i make a demo separately but it does not work while i am using it with the OneSignal Sdk. Below is my Gradle code:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "param.app.onesignaldemo"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

    manifestPlaceholders = [onesignal_app_id : "61053944-9916-41ae-baa0-1274a5660f6a",
                            // Project number pulled from dashboard, local value is ignored.
                            onesignal_google_project_number: "REMOTE"]
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

repositories {
    maven { url 'https://maven.google.com' }
    maven { url "https://jitpack.io" }
}

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/ASL2.0'
}

}

dependencies {
    compile 'com.android.support:appcompat-v7:26.1.0'
    // OneSignal SDK
    compile 'com.onesignal:OneSignal:[3.6.2, 3.99.99]'
    // OneSignal requires at least version 7.0.0 of GMS but the newest version is recommend.
    // Required for OneSignal, even if you have added FCM.
    compile 'com.google.android.gms:play-services-gcm:11.4.0'
    // Required for geotagging
    compile 'com.google.android.gms:play-services-location:11.4.0'
    compile 'com.google.code.gson:gson:2.8.2'
    compile 'com.github.kenglxn.QRGen:android:2.3.0'
    compile project(':barCodeScanner')
    compile project(path: ':barCodeScanner')
}

and below is the code where i am calling the qr code scanner from my activity.

 final MaterialBarcodeScanner materialBarcodeScanner = new MaterialBarcodeScannerBuilder()
            .withActivity(MainActivity.this)
            .withEnableAutoFocus(true)
            .withBleepEnabled(true)
            .withBackfacingCamera()
            .withText("Scanning...")
            .withResultListener(new MaterialBarcodeScanner.OnResultListener()
            {
                @Override
                public void onResult(Barcode barcode) {

                txtvFriendsId.setText(barcode.rawValue);
            }
        })
        .build();
materialBarcodeScanner.startScan();

the error comes up in log like this .

Process: param.app.onesignaldemo, PID: 16153
                                                                     java.lang.NoClassDefFoundError: com.google.android.gms.internal.zzbgo
                                                                         at com.google.android.gms.vision.barcode.BarcodeDetector$Builder.<init>(Unknown Source)
                                                                         at com.edwardvanraak.materialbarcodescanner.MaterialBarcodeScannerBuilder.buildMobileVisionBarcodeDetector(MaterialBarcodeScannerBuilder.java:235)
                                                                         at com.edwardvanraak.materialbarcodescanner.MaterialBarcodeScannerBuilder.build(MaterialBarcodeScannerBuilder.java:221)
                                                                         at param.app.onesignaldemo.MainActivity.onCreate(MainActivity.java:58)
                                                                         at android.app.Activity.performCreate(Activity.java:5966)
                                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2408)
                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2519)
                                                                         at android.app.ActivityThread.access$800(ActivityThread.java:162)
                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                         at android.os.Looper.loop(Looper.java:189)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5532)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at java.lang.reflect.Method.invoke(Method.java:372)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)

Any help will be highly appreciated.

Vikas Yadav
  • 3,094
  • 2
  • 20
  • 21
parambir singh
  • 224
  • 2
  • 13

1 Answers1

2

As I noticed in your app build.gradle declared google-play services are:

// Required for OneSignal, even if you have added FCM.
compile 'com.google.android.gms:play-services-gcm:11.4.0'
// Required for geotagging
compile 'com.google.android.gms:play-services-location:11.4.0'

However, OneSignal itself already initialized those dependencies,

One signal build.gradle. You should get rid of one of it or add exclude rule in your build.gradle .

QuokMoon
  • 4,387
  • 4
  • 26
  • 50
  • Can you please explain how to do it . as i am using just "compile 'com.onesignal:OneSignal:[3.6.2, 3.99.99]'" to import OneSignal in project. How can i do changes in gradle of OneSignal Sdk. – parambir singh Oct 09 '17 at 06:18
  • It can be many test cases but I would suggest first you remove gcm and location api from your project cause it already provided by OneSignal. – QuokMoon Oct 09 '17 at 06:25