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;
}
Author by
Admin
Updated on July 28, 2022Comments
-
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:
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 over 4 yearsThis 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 over 4 yearsThis not an appropriate answer, it does not explain anything, just a large puch of line codes
-
msqar over 4 yearsSuch a loooong comment! :S i need some help on this