You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API 21以上Genymotion模拟器中App Facebook登录卡死问题

Android集成Facebook SDK登录高版本Genymotion模拟器卡死问题

问题表现

  • Facebook登录流程在Genymotion 5.0(API 21)模拟器、一加7 Pro真机环境下运行正常
  • 触发系统版本高于Android 5.0(API 21)的Genymotion模拟器上的Facebook登录流程时,应用直接卡死
  • 异常参考截图:Facebook登录卡死异常截图

开发环境版本

  • Genymotion Desktop 3.2.1
  • VirtualBox 6.1.34

项目相关代码

LoginActivity实现代码

public class LoginActivity extends AppCompatActivity {

    private ActivityLoginBinding binding;
    private ActivityResultLauncher<Intent> startForResult = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.Theme_SignInActivity);
        super.onCreate(savedInstanceState);
        binding = ActivityLoginBinding.inflate(getLayoutInflater());
        View view = binding.getRoot();

        setContentView(view);
        FacebookSdk.setClientToken(String.valueOf(R.string.facebook_client_token));
        this.handleResponseAfterSignIn();
        this.setupListeners();
    }

    private void handleResponseAfterSignIn() {
        startForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {

            if (result.getResultCode() == RESULT_OK) {
                // userManager.createUser();
                startMainActivity();

            } else if (result.getResultCode() == RESULT_CANCELED) {
                Utils.showSnackBar(binding.loginLayout, getString(R.string.snackbar_msg_login_cancelled));
            } else {
                Utils.showSnackBar(binding.loginLayout, getString(R.string.snackbar_msg_error_unknow));
            }
        });
    }


    // 跳转主页
    private void startMainActivity() {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    }

    private void setupListeners() {

        binding.bntLoginFacebook.setOnClickListener(v -> signInWith("facebook"));

        binding.bntLoginGoogle.setOnClickListener(v -> signInWith("google"));

        binding.bntLoginEmail.setOnClickListener(v -> signInWith("email"));

    }


    private void signInWith(String provider) {
        //AuthUI 配置
        AuthUI.IdpConfig authUiConfig;

        // 选择登录提供商
        switch (provider) {
            case "facebook":
                authUiConfig = new AuthUI.IdpConfig.FacebookBuilder().build();
                break;
            case "google":
                authUiConfig = new AuthUI.IdpConfig.GoogleBuilder().build();
                break;
            default:
                authUiConfig = new AuthUI.IdpConfig.EmailBuilder().build();
                break;
        }

        Intent intentLogin = AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(Collections.singletonList(authUiConfig))
                .setIsSmartLockEnabled(false, true)
                .build();
        startForResult.launch(intentLogin);
    }
}

App模块build.gradle依赖配置

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    ///FIREBASE相关依赖///
    implementation platform('com.google.firebase:firebase-bom:30.1.0')
    implementation 'com.google.firebase:firebase-analytics'
    // FIREBASE UI 登录组件
    implementation 'com.firebaseui:firebase-ui-auth:8.0.1'
    //FACEBOOK SDK
    implementation 'com.facebook.android:facebook-android-sdk:13.2.0'
}

已尝试排查操作

  • 在出问题的高版本Genymotion模拟器中安装从Google Play Store下载的Firefox、Chrome、Opera等多款浏览器做兼容性测试,卡死问题始终复现,寻求可行的排查方案。

内容的提问来源于stack exchange,提问作者mabdelouahad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:21:15