You attempted to use a firebase module that's not installed on your android project by calling firebase.storage()

14,402

Add to the import section of the app MainApplication class the following:

import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;
import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;

Add to packages loop the following:

 protected List<ReactPackage> getPackages() {
          @SuppressWarnings("UnnecessaryLocalVariable")
          List<ReactPackage> packages = new PackageList(this).getPackages();
          // Packages that cannot be autolinked yet can be added manually here, for example:
          ...
         packages.add(new RNFirebaseMessagingPackage());
         packages.add(new RNFirebaseNotificationsPackage());
         return packages;
    }

Share:
14,402
Admin
Author by

Admin

Updated on July 28, 2022

Comments

  • Admin
    Admin almost 2 years

    Im trying to use firebase storage on React Native using the react-native-firebase module and when y call firebase storage I get this error:

    You attempted to use a firebase module that's not installed on your android project by calling firebase.storage()2IM.png

    I have add all the necessary dependancies already.

    android/app/build.gradle

    apply plugin: "com.android.application"
    import com.android.build.OutputFile
    
    project.ext.react = [
        entryFile: "index.js"
    ]
    
    apply from: "../../node_modules/react-native/react.gradle"
    def enableSeparateBuildPerCPUArchitecture = false
    def enableProguardInReleaseBuilds = false
    
    android {
        compileSdkVersion 26
        buildToolsVersion "26.0.2"
    
        defaultConfig {
            applicationId "com.detecta.detecta"
            minSdkVersion 19
            targetSdkVersion 26
            versionCode 5
            versionName "1.1.6"
            vectorDrawables.useSupportLibrary = true
            ndk {
                abiFilters "armeabi-v7a", "x86"
            }
        }
        signingConfigs {
            release {
                if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                    storeFile file(MYAPP_RELEASE_STORE_FILE)
                    storePassword MYAPP_RELEASE_STORE_PASSWORD
                    keyAlias MYAPP_RELEASE_KEY_ALIAS
                    keyPassword MYAPP_RELEASE_KEY_PASSWORD
                }
            }
        }
        splits {
            abi {
                reset()
                enable enableSeparateBuildPerCPUArchitecture
                universalApk false  // If true, also generate a universal APK
                include "armeabi-v7a", "x86"
            }
        }
        buildTypes {
            release {
                minifyEnabled enableProguardInReleaseBuilds
                proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
                signingConfig signingConfigs.release
            }
        }
        // applicationVariants are e.g. debug, release
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                // For each separate APK per architecture, set a unique version code as described here:
                // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
                def versionCodes = ["armeabi-v7a":1, "x86":2]
                def abi = output.getFilter(OutputFile.ABI)
                if (abi != null) {  // null for the universal-debug, universal-release variants
                    output.versionCodeOverride =
                            versionCodes.get(abi) * 1048576 + 
    defaultConfig.versionCode
                }
            }
        }
    }
    
    dependencies {
        compile project(':react-native-image-crop-picker')
        compile project(':react-native-svg')
        compile(project(':react-native-firebase')) {
            transitive = false
        }
        compile fileTree(dir: "libs", include: ["*.jar"])
        compile "com.android.support:appcompat-v7:26.1.0"
        compile "com.facebook.react:react-native:+"  // From node_modules
    
        compile "com.google.android.gms:play-services-base:11.8.0"
        compile "com.google.firebase:firebase-core:11.8.0"
        compile "com.google.firebase:firebase-auth:11.8.0"
        compile "com.google.firebase:firebase-database:11.8.0"
        compile "com.google.firebase:firebase-storage:11.8.0"
    }
    
    // Run this once to be able to run the application with BUCK
    // puts all compile dependencies into folder libs for BUCK to use
    task copyDownloadableDepsToLibs(type: Copy) {
        from configurations.compile
        into 'libs'
    }
    apply plugin: 'com.google.gms.google-services'
    

    MainApplication.java

    package com.detecta;
    
    import android.app.Application;
    
    import com.facebook.react.BuildConfig;
    import com.facebook.react.ReactApplication;
    import com.facebook.react.ReactNativeHost;
    import com.facebook.react.ReactPackage;
    import com.facebook.react.shell.MainReactPackage;
    import com.facebook.soloader.SoLoader;
    
    import java.util.Arrays;
    import java.util.List;
    
    import io.invertase.firebase.RNFirebasePackage;
    import io.invertase.firebase.auth.RNFirebaseAuthPackage;
    import io.invertase.firebase.database.RNFirebaseDatabasePackage;
    import io.invertase.firebase.storage.RNFirebaseStoragePackage;
    
    public class MainApplication extends Application implements ReactApplication {
    
      private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
          return BuildConfig.DEBUG;
        }
    
        @Override
        protected List<ReactPackage> getPackages() {
          return Arrays.<ReactPackage>asList(
                  new MainReactPackage(),
                  new RNFirebasePackage(),
                  new RNFirebaseAuthPackage(),
                  new RNFirebaseDatabasePackage(),
                  new RNFirebaseStoragePackage()
          );
        }
    
        @Override
        protected String getJSMainModuleName() {
          return "index";
        }
      };
    
      @Override
      public ReactNativeHost getReactNativeHost() {
        return mReactNativeHost;
      }
    
      @Override
      public void onCreate() {
        super.onCreate();
        SoLoader.init(this, /* native exopackage */ false);
      }
    }
    

    Calling the method

    import firebase from 'react-native-firebase';
    
    /*...*/
    
    uploadImage(userId) {
        path = this.state.image ? this.state.image.uri : null;
        firebase
            .storage()
            .ref(`users/${userId}/profile.jpg`)
            .putFile(path)
            .then(snapshot => {
                console.log(snapshot)
            })
            .catch(err => {
                console.log(err)
            });
    };
    
  • Ali Sajid
    Ali Sajid over 4 years
    This is a very vague answer, please specify which part of the file made it work for you? And what was the issue to begin with?
  • Brianhenry
    Brianhenry over 4 years
    This not an appropriate answer, it does not explain anything, just a large puch of line codes
  • msqar
    msqar over 4 years
    Such a loooong comment! :S i need some help on this