无法使用最新的 Firebase 版本创建用户.我得到一个 W/DynamiteModule 和 W/GooglePlayServicesUtil [英] Cannot create a user with latest Firebase version. I get a W/DynamiteModule and W/GooglePlayServicesUtil

查看:24
本文介绍了无法使用最新的 Firebase 版本创建用户.我得到一个 W/DynamiteModule 和 W/GooglePlayServicesUtil的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想向我的应用添加 Firebase 身份验证和 Firebase 云消息传递.遵循最新的入门指南后,我无法创建新用户.我还考虑过 此代码示例.我在 Firebase 控制台中启用:

I want to add Firebase authentication and Firebase cloud messaging to my app. After following the latest get started guide i cannot create a new user. I also considered this code example. I enabled in my Firebase console:

  • 使用电子邮件/密码登录
  • 出于测试目的匿名登录

OTUPUT:

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 similar questions but all the answers didn't helped me within my problem... I think it's just a small silly bug but I cannot resolve the problem.

我的应用级 gradle 文件如下所示:

My gradle file on 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'

我的项目级别的 gradle 文件如下所示:

My gradle file on 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
}

我有一个外部数据库,用于存储登录的用户.在 Firebase 中,我只想使用默认密码存储我的数据库中的电子邮件地址.为此,我刚刚创建了一个按钮,该按钮应在用户按下时将其存储在 Firebase 上.

I have an external DB where I store the logged in users. In Firebase I only want to store the email address from my DB with a default password. To do this I just created a button that should store the user on Firebase when it's 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 this doesn't work. I get the Output (see at the top of the question).

推荐答案

这是问题所在:

W/GooglePlayServicesUtil: Google Play services out of date.  Requires 10084000 but found 9877470

如果您在模拟器上运行,则需要降级到 Play 服务和 Firebase 库的 9.8.0 或 9.6.1 版,具体取决于您模拟的 API 级别.没有支持版本 10.0.0 的已发布模拟器映像.

If you running on an emulator, you will need to downgrade to version 9.8.0 or 9.6.1 of the Play Services and Firebase libraries, depending on the API level you are emulating. There is no released emulator image that supports version 10.0.0.

如果您在真实设备上运行,则需要更新您的 Google Play 服务版本.当前版本是 10.0.84.您可以前往设置">应用程序管理器">Google Play 服务",查看手机上安装的版本.

If you are running on a real device, you need to update your version of Google Play Services. The current version is 10.0.84. You can see the version installed on your phone by going to Settings > Application Manager > Google Play services.

此日志消息并不表示存在问题.正常运行时好像是输出:

This log message is not an indication of a problem. It seems to be output during normal operation:

W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.

这篇关于无法使用最新的 Firebase 版本创建用户.我得到一个 W/DynamiteModule 和 W/GooglePlayServicesUtil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆