Java Question Google Firebase Manifestentries

Discussion in 'Libraries developers questions' started by DonManfred, May 30, 2019.

  1. DonManfred

    DonManfred Expert Licensed User

    While developing Firebase Firestore Library and updating Firebase RemoteConfig library i encountered that new Manifestentries have to be made.

    The firebase.b4x_excluded from FirebaseAnalytics contains this snippet:

    Code:
    CreateResourceFromFile("google-services""google-services.json")
    AddPermission(android.permission.ACCESS_NETWORK_STATE)
    AddPermission(android.permission.INTERNET)
    AddPermission(android.permission.WAKE_LOCK)
    AddPermission(com.google.android.c2dm.permission.RECEIVE)
    AddPermission(${applicationId
    }.permission.C2D_MESSAGE)
    AddPermission(com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE)
    AddManifestText( <permission android:name="$
    {applicationId}.permission.C2D_MESSAGE"
      android:protectionLevel="signature" />)
    AddApplicationText(
     <receiver
                android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
                android:enabled="true"
                android:exported="false" >
            </receiver>

      <service
                android:name="com.google.android.gms.measurement.AppMeasurementService"
                android:enabled="true"
                android:exported="false" />
                
     <receiver
                android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
                android:enabled="true"
                android:exported="true"
                android:permission="android.permission.INSTALL_PACKAGES" >
                <intent-filter>
                    <action android:name="com.android.vending.INSTALL_REFERRER" />
                </intent-filter>
    </receiver>
    <service
                android:name="com.google.android.gms.measurement.AppMeasurementJobService"
                android:enabled="true"
                android:exported="false"
                android:permission="android.permission.BIND_JOB_SERVICE" />

     <service android:name="com.google.firebase.components.ComponentDiscoveryService" >
                <meta-data
                    android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
                    android:value="com.google.firebase.components.ComponentRegistrar" />
                 <meta-data
                    android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
                    android:value="com.google.firebase.components.ComponentRegistrar" />
                 <meta-data
                    android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
                    android:value="com.google.firebase.components.ComponentRegistrar" />
    </service>
       <provider
      android:authorities="$
    {applicationId}.firebaseinitprovider"
      android:name="com.google.firebase.provider.FirebaseInitProvider"
      android:exported="false"
      android:initOrder="100" />
     
       <receiver
      android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
      android:exported="true"
      android:permission="com.google.android.c2dm.permission.SEND" >
      <intent-filter>
      <action android:name="com.google.android.c2dm.intent.RECEIVE" />
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
      <category android:name="$
    {applicationId}" />
      </intent-filter>
      </receiver>
        <receiver
      android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
      android:exported="false" />


      <service
      android:name="com.google.firebase.iid.FirebaseInstanceIdService"
      android:exported="true">
      <intent-filter android:priority="-500">
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
      </intent-filter>
      </service>
    )
    In fact the entries which belongs to ComponentDiscoveryService are the interesting ones

    Code:
    <service android:name="com.google.firebase.components.ComponentDiscoveryService" >
                <meta-data
                    android:name=
    "com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
                    android:value=
    "com.google.firebase.components.ComponentRegistrar" />
                 <meta-data
                    android:name=
    "com.google.firebase.components:com.google.firebase.iid.Registrar"
                    android:value=
    "com.google.firebase.components.ComponentRegistrar" />
                 <meta-data
                    android:name=
    "com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
                    android:value=
    "com.google.firebase.components.ComponentRegistrar" />
    </
    service>
    To get firestore working i needed to add
    Code:
    <meta-data android:name="com.google.firebase.components:com.google.firebase.firestore.FirestoreRegistrar"
                 android:value=
    "com.google.firebase.components.ComponentRegistrar"/>
    to this service.

    ----------------------------------------

    To get RemoteConfig working again i needed to add

    Code:
    <meta-data
                    android:name=
    "com.google.firebase.components:com.google.firebase.remoteconfig.RemoteConfigRegistrar"
                    android:value=
    "com.google.firebase.components.ComponentRegistrar"/>
    to this service.

    I am wondering if it is a good idea to ask Erel to add this meta-data´s to the Firebaseintegration.

    for now i am using a replacement for FirebaseAnalytics.firebase.b4x_excluded from FirebaseAnalytics and tell the user to change the integration to my edited snippet.
     
  2. DonManfred

    DonManfred Expert Licensed User

    And i also facing the same problem when trying to get the Firebase InAppMessaging (currently in Beta) working.
    Ok, here i am facing other problems too. i´m not able to resolve a maven artifact not found error. Even when trying to "patch" the installed_components. I´ll create a new thread for this issue.


    But i know i need to add another meta-data for FirebaseInAppMessaging too.
    in particular:
    Code:
    <meta-data
    android:name=
    "com.google.firebase.components:com.google.firebase.inappmessaging.FirebaseInAppMessagingRegistrar"
    android:value=
    "com.google.firebase.components.ComponentRegistrar"/>
     
  3. Erel

    Erel Administrator Staff Member Licensed User

    DonManfred likes this.
  4. DonManfred

    DonManfred Expert Licensed User

    Did i understand correctly: i can add new meta-data this way? I mean with replacing anything.
     
  5. Erel

    Erel Administrator Staff Member Licensed User

    This is a relatively new solution. Based on my tests on several devices it works properly.
     
    Johan Hormaza and DonManfred like this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice