Android-在Android Studio4.1上AndResGuard和Firebase相冲突解决

这个问题花了我一上午时间,想了想,还是记录下来:
首先AndResGuard是没有任何问题的,应该加的whiteList都加完全了,但就是一运行就崩:

  java.lang.RuntimeException: Unable to create application xxx MainApp: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.wyp.crosshair:backgroundProcess. Make sure to call FirebaseApp.initializeApp(Context) first.
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6465)

反正意思就是FirebaseApp.initializeApp没有主动调用。

第一次报这种错误是没有加AndResGuard也报,这个就比较好分析,发现是两个service放在了独立进程中:

        <service
            android:name=".service.PremiumService"
            android:enabled="true"
            android:exported="false"
            android:process=":backgroundProcess" />

所以主动在MainApp中调用FirebaseApp.initializeApp即可解决。

之后加上AndResGuard, 发现又报上面的错误了,我都主动调了FirebaseApp.initializeApp,那唯一的可能就是如下了,AndResGuard并没有keep住whiteList

public static FirebaseOptions fromResource(@NonNull Context context) {
StringResourceValueReader reader = new StringResourceValueReader(context);
String applicationId = reader.getString(APP_ID_RESOURCE_NAME);google_app_id
if (TextUtils.isEmpty(applicationId)) { // 这里为空了
  return null;
}
return new FirebaseOptions(
	applicationId,
	reader.getString(API_KEY_RESOURCE_NAME),
	reader.getString(DATABASE_URL_RESOURCE_NAME),
	reader.getString(GA_TRACKING_ID_RESOURCE_NAME),
	reader.getString(GCM_SENDER_ID_RESOURCE_NAME),
	reader.getString(STORAGE_BUCKET_RESOURCE_NAME),
	reader.getString(PROJECT_ID_RESOURCE_NAME));
}

这时首先想的是自己主动获取上面的值,强制赋值,如下:

    public void onCreate() {
        super.onCreate();
//        String applicationId = "1:213226519161:android:315d3419313141dcdf32a8";
//        FirebaseOptions.Builder builder = new FirebaseOptions.Builder();
//        builder.setApplicationId(applicationId);
//        builder.setApiKey("AIzaSyBGKkXue2KCRRErqfyk3HIuD-j_Y20gAfE");
//        builder.setDatabaseUrl("https://crosshair-d2532.firebaseio.com");
//        builder.setGaTrackingId(null); // google 的跟踪id,可不提供,以停用跟踪功能
//        builder.setGcmSenderId("213226519161");
//        builder.setStorageBucket("crosshair-d2532.appspot.com");
//        builder.setProjectId("crosshair-d2532");
//        if (builder != null) {
//            FirebaseApp.initializeApp(this, builder.build());
//        }

        sApp = this;
        RemoteConfig.getInstance().fetchFromRemote();
        AdsUtils.initialize(MainApp.getApp());
    }
}

搞定收工。

最后还是纠结了下,没理由啊,说不过去啊!,想着最近升级了Android studio,所以尝试把

    classpath "com.android.tools.build:gradle:4.1.0"

降成了

    classpath "com.android.tools.build:gradle:4.0.0"

嗯,可以了,就是这么坑!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值