API 21以上Genymotion模拟器中App Facebook登录卡死问题
Android集成Facebook SDK登录高版本Genymotion模拟器卡死问题
问题表现
- Facebook登录流程在Genymotion 5.0(API 21)模拟器、一加7 Pro真机环境下运行正常
- 触发系统版本高于Android 5.0(API 21)的Genymotion模拟器上的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
相关产品推荐
相关产品推荐

