首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于缺少Play存储,android仿真器上的防火墙身份验证失败

由于缺少Play存储,android仿真器上的防火墙身份验证失败
EN

Stack Overflow用户
提问于 2022-03-08 15:49:20
回答 1查看 530关注 0票数 0

我一直在尝试让Firebase身份验证工作,但是当我尝试登录时,我一直在Logcat中得到以下错误。

这些似乎表明需要安装Play Store才能使身份验证工作?有没有办法在仿真器上做到这一点?

我正在使用“API30GoogleAPI”系统映像进行测试,每次都会得到这个错误。

使用物理设备进行测试似乎如预期的那样有效。但到目前为止,我一直无法为模拟器找到解决方案。

Logcat

代码语言:javascript
运行
复制
2022-03-08 09:38:37.265 3784-3784/<package-name> W/GooglePlayServicesUtil: <package-name> requires the Google Play Store, but it is missing.
2022-03-08 09:38:37.270 3784-3810/<package-name> W/GooglePlayServicesUtil: <package-name> requires the Google Play Store, but it is missing.
2022-03-08 09:38:37.270 3784-3810/<package-name> W/GoogleApiManager: The service for com.google.android.gms.internal.auth-api.zbo is not available: ConnectionResult{statusCode=SERVICE_INVALID, resolution=null, message=null}
2022-03-08 09:38:37.363 3784-3784/<package-name> E/LoginActivity: sign-in failed
    com.firebase.ui.auth.FirebaseUiException: Exception serialization error, forced wrapping. Original: com.firebase.ui.auth.FirebaseUiException: Play Services update cancelled, original cause: com.google.android.gms.common.api.ApiException: 9: Error connecting to Google Play services
        at com.firebase.ui.auth.KickoffActivity$2.onFailure(KickoffActivity.java:77)
        at com.google.android.gms.tasks.zzk.run(com.google.android.gms:play-services-tasks@@18.0.1:1)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

LoginActivity

代码语言:javascript
运行
复制
public class LoginActivity extends AppCompatActivity {
    private static final String LOG_TAG = LoginActivity.class.getSimpleName();
    private Button loginButton;
    private ActivityResultLauncher<Intent> signInLauncher;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // Register a callback for when the sign in process is complete
        signInLauncher =
            registerForActivityResult(
                new FirebaseAuthUIActivityResultContract(),
                (result) -> onSignInResult(result)
            );

        // Register click listener
        loginButton = findViewById(R.id.loginButton);
        loginButton.setOnClickListener((view) -> {

            // Choose authentication providers
            List<AuthUI.IdpConfig> providers = new ArrayList<>();
            providers.add(new AuthUI.IdpConfig.EmailBuilder().build());
            providers.add(new AuthUI.IdpConfig.GoogleBuilder().build());

            // Create sign-in intent
            Intent signInIntent =
                AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setAvailableProviders(providers)
                    .build();

            // Launch sign-in activity
            signInLauncher.launch(signInIntent);
        });
    }

    private void onSignInResult(FirebaseAuthUIAuthenticationResult result) {
        if (result.getResultCode() == RESULT_OK) {
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            Log.i(LOG_TAG, "sign-in successful: " + user.getUid());
        } else {
            IdpResponse response = result.getIdpResponse();
            if (response != null) {
                FirebaseUiException error = response.getError();
                Log.e(LOG_TAG, "sign-in failed", error);
            } else {
                Log.e(LOG_TAG, "sign-in failed: no response");
            }
        }
    }
}

文档

此代码基于使用FirebaseUI轻松地为你的Android应用程序添加登录

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-11 15:49:41

与我所预期的相反,Play Store映像似乎只适用于某些设备.

我通常使用"Nexus“手机和"Nexus 7”平板电脑进行测试,因为它们分辨率低,资源密集。然而,谷歌似乎不支持在这两张图片上安装Play Store。

若要创建预装Play Store的模拟器,请执行以下操作:

  1. 在Android中打开Android虚拟设备(AVD)管理器。
  2. 点击“创建虚拟设备”

  1. 选择一个小数量的像素电话,它支持Play Store.

  1. 现在,您可以下载并使用(Play Store)进行测试。

  1. 狩猎愉快!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71397810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档