Unable to create users using the latest Firebase version. I get a W/DynamiteModule and W/Google Play ServicesUtil
I want to add Firebase authentication and Firebase cloud messaging to my app. Follow the latest I can’t create new users after getting started guide. I also considered this code example.I enabled it in my Firebase console:
- Log in with email/password
- and log in anonymously for testing purposes
Output:
D/EmailPassword: onAuthStateChanged:signed_out
D/EmailPassword: createAccount:mail
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
W/GooglePlayServicesUtil: Google Play services out of date. Requires 10084000 but found 9877470
I found a similar problem, but none of the answers helped me solve my problem… I thought it was just a silly little mistake, but I couldn’t fix it.
My gradle file at the app level looks like this:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
applicationId "app.radiant.c.lly"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.android.gms:play-services-appindexing:9.8.0'
compile 'com.google.android.gms:play-services:10.0.0'
compile 'com.android.support:design:24.2.1'
testCompile 'junit:junit:4.12'
compile 'com.android.support:cardview-v7:24.2.1'
Firebase Dependencies
compile 'com.google.firebase:firebase-core:10.0.0'
compile 'com.google.firebase:firebase-auth:10.0.0'
compile 'com.google.firebase:firebase-messaging:10.0.0'
}
Firebase Plugin
apply plugin: 'com.google.gms.google-services'
My gradle file at the project level looks like this:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
NOTE: Do not place your application dependencies here; they belong
in the individual module build.gradle files
Added this line for Firebase
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
I have an external database that stores logged-in users. In Firebase, I only want to use the email address of the database that I use the default password store to self. To do this, I’ve just created a button that should store the user on Firebase when pressed.
public class InboxFragment extends Fragment {
View view;
Activity callingActivity;
Account account;
ListView chats;
Button btn;
ArrayList<String> exampleContent = new ArrayList<>();
ArrayAdapter<String> adapter;
Firebase instance variables
private static final String TAG = "EmailPassword";
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
String username;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_inbox, container, false);
callingActivity = getActivity();
account = (Account) callingActivity.getApplication();
Firebase
[START initialize_auth]
mAuth = FirebaseAuth.getInstance();
[END initialize_auth]
[START auth_state_listener]
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
[START_EXCLUDE]
updateUI(user);
[END_EXCLUDE]
}
};
[END auth_state_listener]
btn = (Button) view.findViewById(R.id.addUsernameBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createAccount(account.getEmail(), "empty");
}
});
Code
chats = (ListView) view.findViewById(R.id.userChatList);
Add example content to array
exampleContent.add("Chat 1");
exampleContent.add("Chat 2");
exampleContent.add(username);
adapter = new ArrayAdapter<String>(callingActivity, android. R.layout.simple_list_item_1, exampleContent);
chats.setAdapter(adapter);
chats.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent i = new Intent(getActivity(), ChatActivity.class);
startActivity(i);
}
});
return view;
}
[START on_start_add_listener]
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
[END on_start_add_listener]
[START on_stop_remove_listener]
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
[END on_stop_remove_listener]
private void createAccount(String email, String password) {
Log.d(TAG, "createAccount:" + email);
/*if (!validateForm()) {
return;
}*/
showProgressDialog();
[START create_user_with_email]
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());
If sign in fails, display a message to the user. If sign in succeeds
the auth state listener will be notified and logic to handle the
signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Log.e(TAG, "ERROR");
/*Toast.makeText(EmailPasswordActivity.this, R.string.auth_failed,
Toast.LENGTH_SHORT).show(); */
}
[START_EXCLUDE]
hideProgressDialog();
[END_EXCLUDE]
}
});
[END create_user_with_email]
}
}
But it won’t work. I got the output (see top of the question).
Solution
The question is:
W/GooglePlayServicesUtil: Google Play services out of date. Requires 10084000 but found 9877470
If you’re running on an emulator, you’ll need to downgrade the Play Services and Firebase libraries to version 9.8.0 or 9.6.1, depending on the API level you’re simulating. No emulator images supporting version 10.0.0 have been released.
If you’re running on a real device, you’ll need to update your version of Google Play Services. The current version is 10.0.84. You can go to Settings> Application Manager> Google Play Services to see which versions are installed on your phone.
This log message does not indicate a problem. It seems to be output like this at normal time:
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.