Service not registered: com.google.android.gms.common.internal.a0@3bab668
com.google.android.gms.common.stats.a.a(Unknown Source:12)
日志
android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1759)
android.app.ContextImpl.unbindService(ContextImpl.java:1786)
android.content.ContextWrapper.unbindService(ContextWrapper.java:751)
com.google.android.gms.common.stats.a.a(Unknown Source:12)
com.google.android.gms.common.internal.a0.b(Unknown Source:2)
com.google.android.gms.common.internal.z.handleMessage(Unknown Source:17)
android.os.Handler.dispatchMessage(Handler.java:103)
b.h.a.c.d.b.e.dispatchMessage(Unknown Source:1)
android.os.Looper.loop(Looper.java:224)
android.app.ActivityThread.main(ActivityThread.java:7520)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
BaseGmsClient#zzb#handleMessage(Message var1)
public final void handleMessage(Message var1) {
if (BaseGmsClient.this.zzcr.get() != var1.arg1) {
if (zzb(var1)) {
zza(var1);
}
} else if ((var1.what == 1 || var1.what == 7 || var1.what == 4 && !BaseGmsClient.this.enableLocalFallback() || var1.what == 5) && !BaseGmsClient.this.isConnecting()) {
zza(var1);
} else {
ConnectionResult var5;
if (var1.what == 4) {
BaseGmsClient.this.zzco = new ConnectionResult(var1.arg2);
if (BaseGmsClient.this.zzl() && !BaseGmsClient.this.zzcp) {
BaseGmsClient.zza(BaseGmsClient.this, 3, (IInterface)null);
} else {
var5 = BaseGmsClient.this.zzco != null ? BaseGmsClient.this.zzco : new ConnectionResult(8);
BaseGmsClient.this.zzcf.onReportServiceBinding(var5);
BaseGmsClient.this.onConnectionFailed(var5);
}
} else if (var1.what == 5) {
var5 = BaseGmsClient.this.zzco != null ? BaseGmsClient.this.zzco : new ConnectionResult(8);
BaseGmsClient.this.zzcf.onReportServiceBinding(var5);
BaseGmsClient.this.onConnectionFailed(var5);
} else if (var1.what == 3) {
PendingIntent var4 = var1.obj instanceof PendingIntent ? (PendingIntent)var1.obj : null;
ConnectionResult var3 = new ConnectionResult(var1.arg2, var4);
BaseGmsClient.this.zzcf.onReportServiceBinding(var3);
BaseGmsClient.this.onConnectionFailed(var3);
} else if (var1.what == 6) {
BaseGmsClient.zza(BaseGmsClient.this, 5, (IInterface)null);
if (BaseGmsClient.this.zzck != null) {
BaseGmsClient.this.zzck.onConnectionSuspended(var1.arg2);
}
BaseGmsClient.this.onConnectionSuspended(var1.arg2);
BaseGmsClient.this.zza(5, 1, (IInterface)null);
} else if (var1.what == 2 && !BaseGmsClient.this.isConnected()) {
zza(var1);
} else if (zzb(var1)) {
((BaseGmsClient.zzc)var1.obj).zzo();
} else {
int var2 = var1.what;
Log.wtf("GmsClient", (new StringBuilder(45)).append("Don't know how to handle message: ").append(var2).toString(), new Exception());
}
}
}
还不确定是哪个方法com.google.android.gms.common.stats.a.a(Unknown Source:12)
WakeLockTracker#registerReleaseEvent(Context var1, Intent var2)
public abstract class GCoreWakefulBroadcastReceiver extends WakefulBroadcastReceiver {
private static String TAG = "GCoreWakefulBroadcastReceiver";
public GCoreWakefulBroadcastReceiver() {
}
@SuppressLint({"UnwrappedWakefulBroadcastReceiver"})
@KeepForSdk
public static boolean completeWakefulIntent(Context var0, Intent var1) {
if (var1 == null) {
return false;
} else {
if (var0 != null) {
WakeLockTracker.getInstance().registerReleaseEvent(var0, var1);
} else {
String var10000 = TAG;
String var10002 = String.valueOf(var1.toUri(0));
String var10001;
if (var10002.length() != 0) {
var10001 = "context shouldn't be null. intent: ".concat(var10002);
} else {
String var10003 = new String;
var10001 = var10003;
var10003.<init>("context shouldn't be null. intent: ");
}
Log.w(var10000, var10001);
}
return WakefulBroadcastReceiver.completeWakefulIntent(var1);
}
}
}
@KeepForSdk
public class WakeLockTracker {
private static WakeLockTracker zzgc = new WakeLockTracker();
private static Boolean zzgd;
@VisibleForTesting
private static boolean zzge = false;
public WakeLockTracker() {
}
@KeepForSdk
public static WakeLockTracker getInstance() {
return zzgc;
}
....
@KeepForSdk
public void registerEvent(Context var1, String var2, int var3, String var4, String var5, String var6, int var7, List<String> var8, long var9) {
if (zzw()) {
if (TextUtils.isEmpty(var2)) {
String var10002 = String.valueOf(var2);
String var10001;
if (var10002.length() != 0) {
var10001 = "missing wakeLock key. ".concat(var10002);
} else {
String var10003 = new String;
var10001 = var10003;
var10003.<init>("missing wakeLock key. ");
}
Log.e("WakeLockTracker", var10001);
} else {
if (7 == var3 || 8 == var3 || 10 == var3 || 11 == var3) {
long var11 = System.currentTimeMillis();
WakeLockEvent var13 = new WakeLockEvent(var11, var3, var4, var7, StatsUtils.zza(var8), var2, SystemClock.elapsedRealtime(), zza.zzg(var1), var5, StatsUtils.zzi(var1.getPackageName()), zza.zzh(var1), var9, var6, false);
zza(var1, var13);
}
}
}
}
private static void zza(Context var0, WakeLockEvent var1) {
try {
var0.startService((new Intent()).setComponent(LoggingConstants.zzfg).putExtra("com.google.android.gms.common.stats.EXTRA_LOG_EVENT", var1));
} catch (Exception var3) {
Log.wtf("WakeLockTracker", var3);
}
}
}
firebase在Android端的集成仅仅需要配置gradle一行代码,利用ContentProvider的特性实现了代码的0侵入。firebase所依赖的gms框架内方法调用启动服务com.google.android.gms.common.stats.GmsCoreStatsService,GmsCoreStatsService没有注册,而且GmsCoreStatsService在firebase所依赖的gms包内不存在。我在Manifest中注册有可能会引发其他问题。也许是class not found。
总结有两种可能
1、集成firebase导致ReportService被启动;
2、Google AD Manager 定时或上传错误日志启动的。