Java – Unable to create users using the latest Firebase version. I get a W/DynamiteModule and W/Google Play ServicesUtil

Unable to create users using the latest Firebase version. I get a W/DynamiteModule and W/Google Play ServicesUtil… here is a solution to the problem.

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.

Related Problems and Solutions