Firebase file not found exception

2.1k views Asked by At

I am using Firebase Database in a Rideshare app and I am trying to dump the code in a device and it shows me File not found an exception where the Jackson data bind library files are not being integrated at build time.I need to clean it and gradle run it like 10 or 15 times and then it's getting installed once.I am converting the Firebase data snapshot to my custom java objects in my code and the Jackson library files go missing and ultimately the mapping fails. Tried removing the legacy Api too,only to see it crash one more time.Someone help me out.

Here is the error which i am getting all the time:

Error:Failed to capture snapshot of output files for task 'transformClassesWithDexForDebug' during up-to-date check.

java.io.FileNotFoundException: D:\FirebaseDBTesting\app\build\intermediates\transforms\dex\debug\folders\1000\10\jackson-databind-2.2.2_502dac698d8ab87b5c73024fb2c1baa4c979a770\classes.dex (The system cannot find the file specified)

here is my gradle file:

apply plugin: 'com.android.application'

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/notice.txt'
    }
    compileSdkVersion 23
    buildToolsVersion "24.0.3"
    defaultConfig {
        applicationId "com.example.xinthe.firebasedbtesting"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.google.firebase:firebase-database:10.0.1'
    compile 'com.firebase:geofire-android:2.1.1'
    compile 'com.google.firebase:firebase-crash:10.0.1'
    compile 'com.google.firebase:firebase-auth:10.0.1'
    compile 'com.firebase:firebase-client-android:2.5.2'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:design:23.4.0'
    compile 'com.google.android.gms:play-services-maps:10.0.1'
    compile 'com.google.android.gms:play-services-location:10.0.1'
    compile 'com.android.support:support-v4:23.4.0'
    compile 'com.serhatsurguvec.libraries:continuablecirclecountdownview:1.2'
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
3

There are 3 answers

1
Malik Abu Qaoud On

First try this to clean and rebuild your project.

Then open File --> Invalidate Caches / Restart , Click on the blue button Invalidate Caches / Restart.

0
Bob Snyder On

See if these changes help:

compileSdkVersion 25
buildToolsVersion "25.0.3"

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1' // <= CHANGE
    compile 'com.google.firebase:firebase-database:10.0.1'
    compile 'com.firebase:geofire-android:2.1.1'
    compile 'com.google.firebase:firebase-crash:10.0.1'
    compile 'com.google.firebase:firebase-auth:10.0.1'
    compile 'com.firebase:firebase-client-android:2.5.2'  // <= Why using legacy SDK??
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:design:25.3.1' // <= CHANGE
    compile 'com.google.android.gms:play-services-maps:10.0.1'
    compile 'com.google.android.gms:play-services-location:10.0.1'
    compile 'com.android.support:support-v4:25.3.1' // <= CHANGE
    compile 'com.serhatsurguvec.libraries:continuablecirclecountdownview:1.2'
    testCompile 'junit:junit:4.12'
}

And as I noted in my comment, you are building with both the legacy SDK and the 10.x.x SDK. That is normally not necessary and can cause problems. Is there something in the legacy SDK that you think is not available in the 10.x.x SDK?

0
JP Ventura On

TL; DR

As @bob-snyder mentioned, why are you using both legacy and latest APIs? Are you migrating your app code?

Cleaner build gradle

Several times we are trolled by Gradle build, so in order to make update build dependencies less error prone and bugs easier to fix, we should better structure configuration files.

Jackson & Firebase 3

Jackson dependencies were part of the original Firebase, not Firebase 3. If you is migrating your app from 2 to 3, I would advise you to migrate your data objects to Google Gson.

Enable minify

You are not using so many libraries that you you should be forced to use multidex. There are good examples at Firebase-UI Android and Android Blueprints of how to configure ProGuard file.

Support Library Version

Define your library version at the root project build.gradle file, as shown at Google Samples:

ext {
    // SDK and tools
    minSdkVersion = 10
    targetSdkVersion = 25
    compileSdkVersion = 25
    buildToolsVersion = '25.0.0'

    // App dependencies
    firebaseVersion = '11.0.2'
    guavaVersion = '18.0'
    googleServicesVersion = rootProject.firebaseVersion
    supportLibraryVersion = '25.3.1'
}

And use the rootProject values at the project build.gradle:

dependencies {
    compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    compile "com.android.support:design:$rootProject.supportLibraryVersion"
    compile "com.android.support:support-v4:$rootProject.supportLibraryVersion"

    // Legacy Firebase
    compile "com.firebase:firebase-client-android:2.5.2"
    compile "com.firebase:geofire-android:2.1.1"

    // Google Services
    compile "com.google.android.gms:play-services-location:$rootProject.googleServicesVersion"
    compile "com.google.android.gms:play-services-maps:$rootProject.googleServicesVersion"

    // Google Firebase
    compile "com.google.firebase:firebase-auth:$rootProject.firebaseVersion"
    compile "com.google.firebase:firebase-crash:$rootProject.firebaseVersion"
    compile "com.google.firebase:firebase-database:$rootProject.firebaseVersion"

    compile 'com.serhatsurguvec.libraries:continuablecirclecountdownview:1.2'
}