Firebase file not found exception
Asked Answered
M

3

7

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'
Mccool answered 3/1, 2017 at 9:17 Comment(8)
Did you check this StackOverflow thread? This might be helpful.Vahe
I have gone through the suggested thread,but in my case all the import statements are linked up i cannot exclude any library imported except one library which i already did and tried,there is no change still error keeps coming.I am literally fighting with this error :-( @VaheMccool
Do you have an antivirus or a firewall running? Try to disable it and make the test. Does it work?Hadik
already tried itMccool
Did you edit your AndroidManifest.xml to support multidex ?Araucaria
You are building with both the legacy API, com.firebase:firebase-client-android:2.5.2 and the current ("new") API, e.g. com.google.firebase:firebase-database:10.0.1. Why are you using both? Why is the legacy API needed?Imprest
./gradlew assembleDebug --stacktraceMulticolor
Either turn off the Anti-Virus or the Instant Run feature...(Hope you tried it already)Secessionist
F
0

First try this to clean and rebuild your project.

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

Fennec answered 3/1, 2017 at 10:18 Comment(1)
i did exactly like you told but still the same error pops up on the logcat window..!!Mccool
I
0

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?

Imprest answered 29/6, 2017 at 15:46 Comment(0)
M
0

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'
}
Multicolor answered 1/7, 2017 at 20:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.