Ship google-services.json with ionic package builds

1.3k Views Asked by At

Since I do not have Mac and iPhone, the only option for me is to use Ionic Cloud to build my native binaries. However, first I wanted to play with it and see how will it work with android builds.

My application uses https://github.com/fechanique/cordova-plugin-fcm

So I can build application with ionic cordova build android and run it on my emulator without any problems. However if I execute ionic package build android and then ionic package info I get message that my build FAILED.

Examine this failure with ionic package BUILD_ID I get this message:

Error: cordova-plugin-fcm: You have installed platform android but file 'google-services.json' was not found in your Cordova project root folder.

So, looks like that my google-services.json does not get uploaded to the cloud. So searching I find few posts of people that had same problem but none of them provided me with solution. I also found this:

https://cordova.apache.org/docs/en/latest/config_ref/index.html#resource-file

So I have tried to tell to ionic to include this google-services.json file with package like this:

<?xml version='1.0' encoding='utf-8'?>
<widget id="me.citybeep.partnerapp" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <!-- ... -->

    <platform name="android">
         <!-- ... -->
        <resource-file src="google-services.json" target="platforms/android/google-services.json" />
    </platform>

    <!-- ... -->

    <engine name="android" spec="^6.2.3" />
    <plugin name="cordova-plugin-device" spec="^1.1.4" />
    <plugin name="cordova-plugin-fcm" spec="^2.1.2" />
    <plugin name="cordova-plugin-splashscreen" spec="^4.0.3" />
    <plugin name="cordova-plugin-statusbar" spec="^2.2.2" />
    <plugin name="cordova-plugin-whitelist" spec="^1.3.1" />
    <plugin name="cordova-sqlite-storage" spec="^2.0.4" />
    <plugin name="de.appplant.cordova.plugin.local-notification" spec="^0.8.5" />
    <plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
</widget>

And also tried this:

<resource-file src="google-services.json" target="google-services.json" />

But we no success, however now I get another message:

Adding android project...
Creating Cordova project for the Android platform:
    Path: platforms/android
    Package: me.citybeep.partnerapp
    Name: City_Beep_Partner
    Activity: MainActivity
    Android target: android-25
Subproject Path: CordovaLib
Android project created with [email protected]
Error: Source path does not exist: google-services.json

I think this error is just that google-services.json did not get uploaded.

I am really dependent now on this plugin and using Ionic Push notifications is not an options at the moment...

So is there any way to tell ionic to include this google-services.json file when uploading to the cloud (and also .plist file). And I repeat, it is not problem with google-services.json file or my firebase project as everything works fine while performing build on my machine.

1

There are 1 best solutions below

0
On

i tried several solutions, but the only one worked for me was specifying src and target with relative path of the google-services.json. In your case change

    <resource-file src="google-services.json" target="platforms/android/google-services.json" />

to

    <resource-file src="platforms/android/google-services.json" target="platforms/android/google-services.json" />

this should work.