[Solved] Cordova hot code push not working

#1

I’m developing a cordova app and hot code push is not working to an android build I created that I installed from APK. It is a signed release apk sideloaded to an android phone (not through the play store)

Here was my code to build the apk:

meteor build ../build/ --server=https://example.com --mobile-settings settings-production.json

I am using Gitlab’s CI/CD to automatically deploy to Digital Ocean whenever I commit to deploy branch. Here is the build command in my runner:

meteor build /home/gitlab-runner/build-output --server=https://example.com --server-only

I’m not sure where to start checking. Needs some assistance here.

#2

I forgot to add that I’m using Meteor 1.6.1

#3

I thought hot code push only work in dev and not on compiled APKs.

Perhaps you can take a look here as a starting point.

#4

HCP works in production cordova builds for Android and iOS. It was working last week and I’m trying to figure out why it stopped

#5

I think it works for build files because you’ve a Gitlab’s CI configured and you are constantly deploying. Why you want HOC enabled in production? I think what they’re saying here is that the same HOC capability can be used to updated clients code without having them download the APK again.

Are you pointing to a local dev server or a remote production server?

#6

My Gitlab CI/CD scripts are just automating steps that I would do if I deploy manually. So I’m not sure how HCP will work just because of CI/CD.

It is a remote staging server (mirror of production).

#7

Sorry my bad I understand now, I got mixed up for a moment with Hot Module Replacement (HMR) :sweat_smile:

So basically you’re saying when the updates are pushed the client mobile devices are not refreshing automatically to pick up the changes, is that correct?

#8

Yep. Hot code push stopped working.

I was wrong earlier. I am using 1.6.1.1. So it stopped working when I updated to 1.6.1.1 from 1.6.1

I’m clearing caches now and doing a manual install to verify if it was the automated deployment but I haven’t changed it for weeks now.

1 Like
#9

Ok. So I found the culprit now. It was a mismatch of Meteor version.

My machine that created the APk build at Meteor 1.6.1.1
Gitlab-runner machine creating the server build at Meteor 1.6.1

I learned something new with this CI/CD thing. Now I need to remember to add meteor update in the build script whenever I updated meteor. I also removed caching in my CI build script just to be safe (longer build of just 1 minute)

1 Like
#10

Good catch! glad you found it.

So due to server version mismatch between the server and the published APK after a Meteor update, the hot code push was not being triggered at the client. Good to know…

#11

What we do is use the Cordova env variables at each compile to make sure all clients get updated - but make sure you test on your clients in case the meteor Cordova stack makes breaking changes

#12

Can you help explain how did you do it to minimize the issues of mismatch Meteor versions like I posted above?