问题描述
每次在第三次重新启动时,我的应用程序都卡在黑屏上。我不知道为什么,我已经检查了Facebook和Firebase文档,后面的例子()。有没有人也经历过这种情况? 其他信息: b Facebook lib:com .facebook.android:facebook-android-sdk:4.12.0 Firebase lib:com.google.firebase:firebase-auth:9.0.0
$ b MainActivity
public class MainActivity extends AppCompatActivity {
private static final String TAG =MainActivity;
私人意图navigationIntent;
私人意图serviceIntent;
// FIREBASE
私有FirebaseAuth firebaseAuth;
私有FirebaseAuth.AuthStateListener firebaseAuthListener;
// FACEBOOK
private CallbackManager FBcallbackManager;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navigationIntent = new Intent(this,NavigationActivity.class);
serviceIntent = new Intent(this,BackgroundService.class);
//初始化Firebase
firebaseAuth = FirebaseAuth.getInstance();
firebaseAuthListener = new FirebaseAuth.AuthStateListener(){
@Override $ b $ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){
FirebaseUser user = firebaseAuth.getCurrentUser();
$ b $ if(user!= null){
//用户已经登录
//如果是这样的话就开始下一步活动并关闭这个
Log.d(TAG ,用户登录);
startHomeActivity();
startActivity(navigationIntent);
finish();
} else {
Log.d(TAG,User not logged in);
}
}
};
//初始化Facebook登录按钮
FBcallbackManager = CallbackManager.Factory.create();
LoginButton loginButton =(LoginButton)findViewById(R.id.facebookButton);
loginButton.setReadPermissions(email,public_profile);
loginButton.registerCallback(FBcallbackManager,new FacebookCallback< LoginResult>(){
@Override
public void onSuccess(LoginResult loginResult){
handleFacebookAccessToken(loginResult.getAccessToken()); $
$ b @Override
public void onCancel(){
}
@Override
public void onError (FacebookException错误){
Log.d(Facebook Error,error.toString());
}
});
$ b $覆盖$ b $保护无效onActivityResult(int requestCode,int resultCode,意图数据){
super.onActivityResult(requestCode ,resultCode,data);
FBcallbackManager.onActivityResult(requestCode,resultCode,data);
@Override
protected void onResume(){
super.onResume();
firebaseAuth.addAuthStateListener(firebaseAuthListener);
@Override
protected void onPause(){
super.onPause();
if(firebaseAuthListener!= null){
firebaseAuth.removeAuthStateListener(firebaseAuthListener);
$ b private void handleFacebookAccessToken(AccessToken accessToken){
final AuthCredential authCredential = FacebookAuthProvider.getCredential(accessToken.getToken());
firebaseAuth.signInWithCredential(authCredential).addOnCompleteListener(this,new OnCompleteListener< AuthResult>(){
@Override
public void onComplete(@NonNull Task< AuthResult> task){
$ b $ if(task.isSuccessful()){
Log.d(TAG,Authentication successful);
startHomeActivity();
} else {
Log.d(TAG,Authentication not successful);
Log.d(TAG,task.getException()。getMessage());
}
}
});
$ b private boolean isServiceRunning(Class<?> serviceClass){
ActivityManager manager =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); (ActivityManager.RunningServiceInfo service:manager.getRunningServices(Integer.MAX_VALUE)){
if(serviceClass.getName()。equals(service.service.getClassName())){
return真正;
}
}
return false;
private void startHomeActivity(){
if(navigationIntent!= null&& serviceIntent!= null){
$ b $如果(!isServiceRunning(BackgroundService.class)){
startService(serviceIntent);
Log.d(TAG,Service is no running。Starting service ..);
} else {
Log.d(TAG,Service is running。Not starting service ..);
}
startActivity(navigationIntent);
finish();
$ b 申请:
public class ????????扩展应用程序{
@Override
public void onCreate(){
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
$ b Logcat(app specific)在上次重新启动之前(第3次重启/冻结时没有登录)
05-24 16:53:19.547 16587-16618 / my.package.app W / System.err:删除失败:ENOENT(没有这样的文件或目录):/data/user/0/my.package.app/files/AppEventsLogger.persistedevents
05-24 16:53:19.557 16587-16609 / my.package.app V / FA:不活跃,从AppMeasurementService断开连接
05-24 16:53:19.627 16587-16618 / my.package。应用程序I / System.out:(HTTPLog)-Static:isSBSettingEnabled false
05-24 16:53:19.627 16587-16618 / my.package.app I / System.out:(HTTPLog)-Static:isSBSettingEnabled false
05-24 16:53:30.167 16587-16587 / my.package.app D / ViewRootImpl:ViewPostImeInputStage processKey 0
05-24 16:53:30.247 16587-16587 / my.package.app D / ViewRootImpl:ViewPostImeInputStage processKey 1
05-24 16:53:30.287 16587-16609 / my.package.app V / FA:活动暂停,时间:455339818
05-24 1 6:53:30.807 16587-16587 / my.package.app D / FirebaseApp:通知后台状态改变listeners.a
Logcat(firebase背景崩溃)
05-24 16:53:14.247 16940 -16940 / my.package.app:background_crash E / DynamiteModule:未能加载模块描述符类:未找到类com.google.android.gms.dynamite.descriptors.com.google.android.gms.crash.ModuleDescriptor 在路径上:DexPathList [[zip文件/data/app/my.package.app-1/base.apk\"],nativeLibraryDirectories=[/data/app/my.package.app-1/lib/arm64,/供应商/ lib64,/系统/ lib64]]
05-24 16:53:14.247 16940-16968 / my.package.app:background_crash W / System.err:删除失败:ENOENT(没有这样的文件或目录) :/data/user/0/my.package.app/files/AppEventsLogger.persistedevents
05-24 16:53:14.247 16940-16956 / my.package.app:background_crash I / System.out:(HTTPLog )-Static:isSBSettingEnabled false
05-24 16:53:14.247 16940-16956 / my.package.app:background_cr ash I / System.out:(HTTPLog)-Static:isSBSettingEnabled false
05-24 16:53:14.257 16940-16940 / my.package.app:background_crash V / GoogleSignatureVerifier:com.google.android.gms签名无效。实测:
//我已经改变了键下方出于安全原因MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
05-24 16:53:14.267 16940-16940 / my.package.app:background_crash在my.package中运行的W / ResourcesManager:getTopLevelResources:/system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk / 1.0 .app rsrc包com.google.android.gms
05-24 16:53:14.26 7 16940-16940 / my.package.app:background_crash D / ResourcesManager:对于用户0获取的新叠加空
05-24 16:53:14.267 16940-16940 / my.package.app:background_crash I / InjectionManager:内部getClassLibPath调用者
05-24 16:53:14.287 16940-16940 / my.package.app:background_crash W / System:ClassLoader引用未知路径:/ system / priv-app / PrebuiltGmsCore / lib / arm64
05-24 16:53:14.297 16940-16940 / my.package.app:background_crash W / ResourcesManager:getTopLevelResources:/system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk/1.0在my.package.app包中运行rsrc com.google.android.gms
05-24 16:53:14.297 16940-16940 / my.package.app:background_crash D / ChimeraCfgMgr:读取存储的模块配置
05-24 16:53:14.317 16940-16940 / my.package.app:background_crash I / DynamiteModule:考虑到本地模块com.google.android.gms.crash:0和远程模块com.google.android.gms.crash:2
05-24 16:53:14.317 16940-16940 / my.package.app:backgr ound_crash I / DynamiteModule:选定的远程版本的com.google.android.gms.crash,版本> = 2
05-24 16:53:14.317 16940-16940 / my.package.app:background_crash W / ResourcesManager :getTopLevelResources:/system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk/1.0在my.package.app rsrc中运行com.google.android.gms
05-24 16:53:14.327 16940-16940 / W / System:ClassLoader引用未知路径:/ data / user / /我的包注释:我的注入管理器:内部getClassLibPath调用者
05-24 16:53:14.327 16940-16940 / my.package.app:background_crash /0/com.google.android.gms/app_chimera/m/00000005/n/arm64-v8a
05-24 16:53:14.327 16940-16940 / my.package.app:background_crash D / ChimeraFileApk:Primary请求进程的ABI是arm64-v8a
05-24 16:53:14.327 16940-16940 / my.package.app:background_crash D / ChimeraFileApk:类加载成功。找到优化的代码。
05-24 16:53:14.337 16940-16940 / my.package.app:background_crash I / FirebaseCrashReceiverServiceImpl:由ClassLoader创建的FirebaseCrashReceiverServiceImpl com.google.android.chimera.container.internal.DelegateLastPathClassLoader [DexPathList [[zip文件/data/user/0/com.google.android.gms/app_chimera/m/00000005/DynamiteModulesC_GmsCore_prodmnc_alldpi_release.apk\"],nativeLibraryDirectories=[/data/user/0/com.google.android.gms/app_chimera/m/ 00000005 / n / arm64-v8a,/ vendor / lib64,/ system / lib64]]]
05-24 16:53:14.337 16940-16940 / my.package.app:background_crash D / FirebaseCrashReceiverServiceImpl:onCreate
05-24 16:53:14.347 16940-16940 / my.package.app:background_crash I / DynamiteModule:考虑到本地模块com.google.android.gms.flags:0和远程模块com.google.android.gms。标记:1
05-24 16:53:14.347 16940-16940 / my.package.app:background_crash I / DynamiteModule:选定的远程版本com.google.android.gms.flags,版本> = 1
05-24 16:53: 14.417 16940-16940 / my.package.app:background_crash I / FirebaseCrashSenderServiceImpl:由ClassLoader创建的FirebaseCrashSenderServiceImpl com.google.android.chimera.container.internal.DelegateLastPathClassLoader [DexPathList [[zip文件/data/user/0/com.google .android.gms / app_chimera / m / 00000005 / DynamiteModulesC_GmsCore_prodmnc_alldpi_release.apk],nativeLibraryDirectories = [/ data / user / 0 / com.google.android.gms / app_chimera / m / 00000005 / n / arm64-v8a / vendor / lib64,/ system / lib64]]]
05-24 16:53:14.417 16940-16940 / my.package.app:background_crash D / FirebaseCrashSenderServiceImpl:onCreate
解决方案我从firebase analytics版本9.0.2中得到同样的问题,我认为这是一个bug。 b
$ b
我发现这个问题是在分析版本9.0.2上,我试着将版本恢复到9.0.0,这样会很好,没有黑屏。
但是你是auth lib 9.0.0,所以我认为它是不同的...
我的解决方案如下:
compile'com.google.firebase:firebase-analytics:9.0.0'
code>
Everytime at the 3th relaunch, my app gets stuck on a dark screen. I have no clue why, I have checked out the Facebook and Firebase docs, followed examples (github). Has anyone experienced this too?
Additional information:
Facebook lib: com.facebook.android:facebook-android-sdk:4.12.0
Firebase lib: com.google.firebase:firebase-auth:9.0.0
MainActivity
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private Intent navigationIntent;
private Intent serviceIntent;
// FIREBASE
private FirebaseAuth firebaseAuth;
private FirebaseAuth.AuthStateListener firebaseAuthListener;
// FACEBOOK
private CallbackManager FBcallbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navigationIntent = new Intent(this, NavigationActivity.class);
serviceIntent = new Intent(this, BackgroundService.class);
// Initialize Firebase
firebaseAuth = FirebaseAuth.getInstance();
firebaseAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
// if so start next activty and close this one
Log.d(TAG, "User logged in");
startHomeActivity();
startActivity(navigationIntent);
finish();
} else {
Log.d(TAG, "User not logged in");
}
}
};
// Initialize Facebook Login button
FBcallbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.facebookButton);
loginButton.setReadPermissions("email", "public_profile");
loginButton.registerCallback(FBcallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
Log.d("Facebook Error", error.toString());
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
FBcallbackManager.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onResume() {
super.onResume();
firebaseAuth.addAuthStateListener(firebaseAuthListener);
}
@Override
protected void onPause() {
super.onPause();
if (firebaseAuthListener != null) {
firebaseAuth.removeAuthStateListener(firebaseAuthListener);
}
}
private void handleFacebookAccessToken(AccessToken accessToken) {
final AuthCredential authCredential = FacebookAuthProvider.getCredential(accessToken.getToken());
firebaseAuth.signInWithCredential(authCredential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Authentication successful");
startHomeActivity();
} else {
Log.d(TAG, "Authentication not successful");
Log.d(TAG, task.getException().getMessage());
}
}
});
}
private boolean isServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
private void startHomeActivity() {
if (navigationIntent != null && serviceIntent != null) {
if (!isServiceRunning(BackgroundService.class)) {
startService(serviceIntent);
Log.d(TAG, "Service is no running. Starting service..");
} else {
Log.d(TAG, "Service is running. Not starting service..");
}
startActivity(navigationIntent);
finish();
}
}
}
Application:
public class ???????? extends Application {
@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
}
}
Logcat (app specific) before last restart (there is no log on 3th restart/freeze)
05-24 16:53:19.547 16587-16618/my.package.app W/System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/my.package.app/files/AppEventsLogger.persistedevents
05-24 16:53:19.557 16587-16609/my.package.app V/FA: Inactivity, disconnecting from AppMeasurementService
05-24 16:53:19.627 16587-16618/my.package.app I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
05-24 16:53:19.627 16587-16618/my.package.app I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
05-24 16:53:30.167 16587-16587/my.package.app D/ViewRootImpl: ViewPostImeInputStage processKey 0
05-24 16:53:30.247 16587-16587/my.package.app D/ViewRootImpl: ViewPostImeInputStage processKey 1
05-24 16:53:30.287 16587-16609/my.package.app V/FA: Activity paused, time: 455339818
05-24 16:53:30.807 16587-16587/my.package.app D/FirebaseApp: Notifying background state change listeners.a
Logcat (firebase background crash)
05-24 16:53:14.247 16940-16940/my.package.app:background_crash E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.android.gms.crash.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/my.package.app-1/base.apk"],nativeLibraryDirectories=[/data/app/my.package.app-1/lib/arm64, /vendor/lib64, /system/lib64]]
05-24 16:53:14.247 16940-16968/my.package.app:background_crash W/System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/my.package.app/files/AppEventsLogger.persistedevents
05-24 16:53:14.247 16940-16956/my.package.app:background_crash I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
05-24 16:53:14.247 16940-16956/my.package.app:background_crash I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
05-24 16:53:14.257 16940-16940/my.package.app:background_crash V/GoogleSignatureVerifier: com.google.android.gms signature not valid. Found:
// I have changed the key below for security reasons MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw
05-24 16:53:14.267 16940-16940/my.package.app:background_crash W/ResourcesManager: getTopLevelResources: /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk / 1.0 running in my.package.app rsrc of package com.google.android.gms
05-24 16:53:14.267 16940-16940/my.package.app:background_crash D/ResourcesManager: For user 0 new overlays fetched Null
05-24 16:53:14.267 16940-16940/my.package.app:background_crash I/InjectionManager: Inside getClassLibPath caller
05-24 16:53:14.287 16940-16940/my.package.app:background_crash W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/arm64
05-24 16:53:14.297 16940-16940/my.package.app:background_crash W/ResourcesManager: getTopLevelResources: /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk / 1.0 running in my.package.app rsrc of package com.google.android.gms
05-24 16:53:14.297 16940-16940/my.package.app:background_crash D/ChimeraCfgMgr: Reading stored module config
05-24 16:53:14.317 16940-16940/my.package.app:background_crash I/DynamiteModule: Considering local module com.google.android.gms.crash:0 and remote module com.google.android.gms.crash:2
05-24 16:53:14.317 16940-16940/my.package.app:background_crash I/DynamiteModule: Selected remote version of com.google.android.gms.crash, version >= 2
05-24 16:53:14.317 16940-16940/my.package.app:background_crash W/ResourcesManager: getTopLevelResources: /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk / 1.0 running in my.package.app rsrc of package com.google.android.gms
05-24 16:53:14.327 16940-16940/my.package.app:background_crash I/InjectionManager: Inside getClassLibPath caller
05-24 16:53:14.327 16940-16940/my.package.app:background_crash W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000005/n/arm64-v8a
05-24 16:53:14.327 16940-16940/my.package.app:background_crash D/ChimeraFileApk: Primary ABI of requesting process is arm64-v8a
05-24 16:53:14.327 16940-16940/my.package.app:background_crash D/ChimeraFileApk: Classloading successful. Optimized code found.
05-24 16:53:14.337 16940-16940/my.package.app:background_crash I/FirebaseCrashReceiverServiceImpl: FirebaseCrashReceiverServiceImpl created by ClassLoader com.google.android.chimera.container.internal.DelegateLastPathClassLoader[DexPathList[[zip file "/data/user/0/com.google.android.gms/app_chimera/m/00000005/DynamiteModulesC_GmsCore_prodmnc_alldpi_release.apk"],nativeLibraryDirectories=[/data/user/0/com.google.android.gms/app_chimera/m/00000005/n/arm64-v8a, /vendor/lib64, /system/lib64]]]
05-24 16:53:14.337 16940-16940/my.package.app:background_crash D/FirebaseCrashReceiverServiceImpl: onCreate
05-24 16:53:14.347 16940-16940/my.package.app:background_crash I/DynamiteModule: Considering local module com.google.android.gms.flags:0 and remote module com.google.android.gms.flags:1
05-24 16:53:14.347 16940-16940/my.package.app:background_crash I/DynamiteModule: Selected remote version of com.google.android.gms.flags, version >= 1
05-24 16:53:14.417 16940-16940/my.package.app:background_crash I/FirebaseCrashSenderServiceImpl: FirebaseCrashSenderServiceImpl created by ClassLoader com.google.android.chimera.container.internal.DelegateLastPathClassLoader[DexPathList[[zip file "/data/user/0/com.google.android.gms/app_chimera/m/00000005/DynamiteModulesC_GmsCore_prodmnc_alldpi_release.apk"],nativeLibraryDirectories=[/data/user/0/com.google.android.gms/app_chimera/m/00000005/n/arm64-v8a, /vendor/lib64, /system/lib64]]]
05-24 16:53:14.417 16940-16940/my.package.app:background_crash D/FirebaseCrashSenderServiceImpl: onCreate
解决方案 I have the same problem from firebase analytics version 9.0.2, I think it's a bug.
And I found this issue is on the analytics version 9.0.2, and I try to revert version to 9.0.0, it will be fine and no black screen.
But you are the auth lib 9.0.0, so I think it's different...
My solution like this:
compile 'com.google.firebase:firebase-analytics:9.0.0'
这篇关于使用Firebase&第3次重新启动后,Facebook身份验证没有响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!