Firebase SDK在一个APK中包含多个项目

时间:2018-10-10 09:56:13

标签: android firebase-analytics

我试图仅通过使用FirebaseOptions构建器来初始化FirebaseApp,如下所示(我仅使用applicationId和ApiKey,因为我只希望开始分析):

FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId(applicationID) // Required for Analytics.
.setApiKey(apiKey) // Required for Auth.
.build();
FirebaseApp.initializeApp(context, options);

我的项目中没有google-services.json文件,我已在AndroidManifest.xml中删除了FirebaseInitProvider,如下所示:

<provider android:name="com.google.firebase.provider.FirebaseInitProvider"
   android:authorities="${applicationId}.firebaseinitprovider"
   android:exported="false"
   tools:node="remove"/>

我希望从服务器发送应用程序ID,因为我想要多个项目,并且我并不在意在应用程序初始化期间是否丢失了一些事件。 启动应用程序时,尝试在Android Studio调试日志中查看事件时,如下所示:

adb shell setprop log.tag.FA VERBOSE

adb shell setprop log.tag.FA-SVC VERBOSE

adb logcat -v time -s FA FA-SVC

我得到:Missing google_app_id. Firebase Analytics disabled.

我不想在strings.xml静态文件中使用google_app_id,因为我想要多个项目。但是,我尝试将所有应用程序ID都保存在XML文件中,并尝试在FirebaseApp.initializeApp之前使用反射来更改它们,但这似乎不起作用。

1 个答案:

答案 0 :(得分:0)

默认 public override View GetView(int position, View convertView, ViewGroup parent) { var view = convertView; FormHolder holder = null; if (view != null) { holder = view.Tag as FormHolder; } if (holder == null) { holder = new FormHolder(); view = context.LayoutInflater.Inflate(Resource.Layout.Forms_ChildLayout, parent, false); holder.Form_Image = (ImageView)view.FindViewById(Resource.Id.form_Image); holder.Heading = (TextView)view.FindViewById(Resource.Id.heading); holder.SubHeading1 = (TextView)view.FindViewById(Resource.Id.subHeading1); holder.SubHeading2 = (TextView)view.FindViewById(Resource.Id.subHeading2); holder.Formupdateddatetime = (TextView)view.FindViewById(Resource.Id.formupdateddatetime); holder.Form_Image.SetImageBitmap(imageBitMap); holder.Heading.Text= form.Heading; holder.SubHeading1.Text= form.SubHeading; holder.SubHeading2.Text = form.Caption; holder.Formupdateddatetime.Text = form.UpdatedFormDate; } return view; } 初始化看起来像这样(在不传递名称时使用):

FirebaseApp
  

从字符串资源中读取默认应用实例使用的FirebaseApp fb = FirebaseApp.initializeApp(context, options, "[DEFAULT]");

但是...一个人可以分配自定义名称,以从字符串资源中读取

FirebaseOptions

找到了这个Firebase Blog,这是所要求的可靠来源。

FirebaseApp的文档也对此做了一般解释。