我正在开发的应用程序有一个非常定制的构建过程。无法使用 gradle 构建我的应用程序。这并不理想,但我无法改变任何事情。尽管如此,我想在我的应用程序中使用 Firebase Analytics。其中包括模块 firebase-core、firebase-common、firebase-analytics、firebase-analytics-impl、firebase-iid、firebase-iid-interop、firebase-measurement-connector、firebase-measurement-connector-imple、play-services-测量基础和播放服务测量 API。我还在我的 中添加了以下字符串,其中包含我在Firebase 项目strings.xml中找到的值:google-services.json
<string name="google_app_id" translatable="false">xxx</string>
<string name="gcm_defaultSenderId" translatable="false">xxx</string>
<string name="default_web_client_id" translatable="false">xxx</string>
<string name="firebase_database_url" translatable="false">xxx</string>
<string name="google_api_key" translatable="false">xxx</string>
<string name="google_crash_reporting_api_key" translatable="false">xxx</string>
<string name="project_id" translatable="false">xxx</string>
Run Code Online (Sandbox Code Playgroud)
(如此处所述)并FirebaseInitProvider从 AndroidManifest.xml 中删除了 。在我的应用程序Application课上onCreate(),我这样做:
FirebaseOptions.Builder builder = new FirebaseOptions.Builder()
.setApplicationId(getString(R.string.google_app_id))
.setApiKey(getString(R.string.google_api_key));
FirebaseApp.initializeApp(this, builder.build(), "[DEFAULT]");
Run Code Online (Sandbox Code Playgroud)
到目前为止没有问题。执行上述代码时,我收到一条调试日志消息:
FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
Run Code Online (Sandbox Code Playgroud)
一切都好,我没有包含 auth 模块。我的应用程序不需要它。当我调用FirebaseAnalytics.getInstance(adblockSettingsTextView.getContext()).getFirebaseInstanceId()它时,它返回一个字符串值,所以我假设初始化成功。
现在每次我想记录这样的事件
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Dashboard");
FirebaseAnalytics.getInstance(this).logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
Run Code Online (Sandbox Code Playgroud)
我在日志中看到一条错误,Missing …