Hello folks this may be dumb question but am struggling with this for long time since now, Now let me post what I have tried so far am following this tutorial to integrate firebase with react native project https://rnfirebase.io/, I have followed each and every step given in this but am getting error like Java exeption in NativeModules java.lang.NoClassDefFoundError: Failed resolution of: Lom/google/firebase/database/Servervalue; Please refer this i have posted in detail in stack overflow
https://stackoverflow.com/q/49421418/5498065 Now let me post the code what i have tried so far
This is my build.gradle file:
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.firebasedemo"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
multiDexEnabled true
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
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"
}
}
// 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 fileTree(dir: "libs", include: ["*.jar"])
compile(project(':react-native-firebase')) {
transitive = false
}
// Firebase dependencies
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.android.support:appcompat-v7:26.0.2"
compile 'com.android.support:multidex:1.0.3'
compile "com.facebook.react:react-native:+" // From node_modules
}
// Run this once to be able to run the application witcompile "com.google.firebase:firebase-auth:11.8.0"h 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'
My manifest file:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
MainApplication Class:
package com.firebasedemo;
import android.app.Application;
import com.facebook.react.ReactApplication;
import io.invertase.firebase.RNFirebasePackage;
import io.invertase.firebase.database.RNFirebaseDatabasePackage;
import io.invertase.firebase.auth.RNFirebaseAuthPackage;
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;
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.asList(
new MainReactPackage(),
new RNFirebasePackage(),
new RNFirebaseDatabasePackage(),
new RNFirebaseAuthPackage()
);
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
This is my javascript class:
import React from 'react';
import {
AppRegistry,
// Platform,
StyleSheet,
ToastAndroid,
TextInput, TouchableOpacity, ToolbarAndroid ,
Text,
View,
Button
} from 'react-native';
import { StackNavigator } from 'react-navigation';
import Second from './Second';
import firebase from 'react-native-firebase';
// const auth = firebase.auth();
class HomeScreen extends React.Component {
static auth;
static navigationOptions = {
title: 'Welcome',
};
navigateToAbout = (state) => {
///ToastAndroid.show(state.name, ToastAndroid.SHORT);
fetch('https://reqres.in/api/users', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(state)
})
.then((response) => JSON.stringify(response.json()))
.then((responseData) => { ToastAndroid.show(esponseData.name, ToastAndroid.SHORT);})
.catch((err) => { ToastAndroid.show("err"+err, ToastAndroid.SHORT); });
}
constructor(props){
super(props)
// Firebase.auth=firebase.auth();
this.state = {
name: '',
job: '',
}
}
onRegister = (state) => {
// const { email, password } = this.state;
firebase.auth().createUserWithEmailAndPassword(state.name, state.password)
.then((user) => {
ToastAndroid.show(user, ToastAndroid.SHORT);
})
.catch((error) => {
const { code, message } = error;
ToastAndroid.show(error, ToastAndroid.SHORT);
});
}
//onPress={() => this.props.navigation.navigate('Second')}
render() {
const { navigate } = this.props.navigation;
return (
placeholder="Email address" underlineColorAndroid='transparent'
//
/>
onChangeText={(text) => this.setState({job:text})}
/>
);
}
}
var styles = StyleSheet.create({
toolbar: {
height: 56,
backgroundColor: '#4883da',
},
});
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
const SimpleAppNavigator = StackNavigator({
Home: { screen: HomeScreen },
Second: { screen: Second }
});
const AppNavigation = () => (
);
export default class App extends React.Component {
render() {
return (
);
}
}
Build Tools:Android Studio
RNFirebase Version:Auth
@YogeshLegendkiller you are installing the RNFirebaseDatabasePackage without specifying compile "com.google.firebase:firebase-database:11.8.0" in your build.gradle.
how silly am, thanks @chrisbianca it works now
Most helpful comment
@YogeshLegendkiller you are installing the
RNFirebaseDatabasePackagewithout specifyingcompile "com.google.firebase:firebase-database:11.8.0"in your build.gradle.