I’m currently running a Meteor app that’s mainly an Android app, though when testing and making features, I run on the browser, and some builds on a test device after a few major changes.
I also deploy to a cloud server (through MUP and Digital Ocean) and also prepare a properly signed apk for distribution.
I understand that hot code push happens on the mobile builds as well, but I’m not exactly sure which changes in the project requires a re-build of the apk. (Or what gets covered by hot code push to the cloud?) Can we discuss? Thank you!
Updating, adding, or removing a Cordova package afaik
Is it strictly cordova packages only?
I mean, I suppose that’s why the build stays so small…
also changes in mobile-config.js
Right! That totally makes sense!
I’m currently facing an issue regarding my mobile build.
I’m consistently facing an ImageView error, resource not found, almost every time I deploy a new version of my meteor app to my server.
There shouldn’t be any changes needed for the mobile build, since we’re relying on the webview anyway.
And it seems to disappear if I reinstall “cordova-splashscreen-plugin” to a specific version.
It’s very unreliable right now, and it seems like inefficient to have to rebuild an mobile app every update.
Can you explain further on what the exact error is and what are you currently doing to solve that error?
Based on my research , if you are adding in a new cordova plugin , it is a new build and hotcode push does not work . I am debating if i should even upgrade one of the cordova plugins in one of the apps … Hotcode push does not help even with changes in mobile.config and requires app re submission. Our apps are on google cloud .
So here’s the scenario:
- Make changes/update code then deploy to MUP (no cordova plugins changes of any kind).
- The mobile build available before the update runs ok the first time, but kill the app then open it again, faces this error:
12-12 06:07:05.518 23949 23949 W ImageView: android.content.res.Resources$NotFoundException: Resource ID #0x7f010000
12-12 06:07:05.518 23949 23949 W ImageView: at android.content.res.ResourcesImpl.getValueForDensity(ResourcesImpl.java:224)
12-12 06:07:05.518 23949 23949 W ImageView: at android.content.res.Resources.getDrawableForDensity(Resources.java:876)
12-12 06:07:05.518 23949 23949 W ImageView: at android.content.res.Resources.getDrawable(Resources.java:819)
12-12 06:07:05.518 23949 23949 W ImageView: at android.content.Context.getDrawable(Context.java:606)
12-12 06:07:05.518 23949 23949 W ImageView: at android.widget.ImageView.resolveUri(ImageView.java:923)
12-12 06:07:05.518 23949 23949 W ImageView: at android.widget.ImageView.setImageResource(ImageView.java:477)
12-12 06:07:05.518 23949 23949 W ImageView: at org.apache.cordova.splashscreen.SplashScreen$5.run(SplashScreen.java:296)
12-12 06:07:05.518 23949 23949 W ImageView: at android.app.Activity.runOnUiThread(Activity.java:6216)
12-12 06:07:05.518 23949 23949 W ImageView: at org.apache.cordova.splashscreen.SplashScreen.showSplashScreen(SplashScreen.java:288)
12-12 06:07:05.518 23949 23949 W ImageView: at org.apache.cordova.splashscreen.SplashScreen.pluginInitialize(SplashScreen.java:113)
12-12 06:07:05.518 23949 23949 W ImageView: at org.apache.cordova.CordovaPlugin.privateInitialize(CordovaPlugin.java:58)
I run this command: “meteor add cordova:email@example.com” or 5.0.2, depending on what I used last, toggling between the 2.
The new app has no problem anymore.
When I simply rebuild the app without changing the splashscreen plugin version, the app still faces the same error. And it gets stuck on loading.
But when the app is newly installed, it runs ok, it always happens on app restart and succeeding attempts to open the app
We are using the splashscreen plugin version 5.0.2 but never encountered this problem. Since the issue seems to be specific to the splashscreen plugin, you can also try posting this as an issue to the github repo of the plugin since the error is coming from the plugin code
On top of my head, the only potential issue that I can see is that the identified splashscreens in mobile-config.js might not be existing.
Hmm, I’m still using the default splash resources, never changed any of them So I don’t actually have any edits to the mobile-config.js regarding the use of any resources.
I also tried just rebuilding the app without changing the plugin version, well actually, I added the same one already in the build (just to see if there were changes), and the build still fails the same way.
I’m thinking it might be something about my deployment since it literally only happens when I deploy an update.
What’s your means of deploying your app? I’m currently using MUP with Digital Ocean (wherein both my app and my MongoDB instance is within a droplet), but I’ll be moving to Waves Hosting (AWS) + MongoDB Atlas (AWS too) very soon.
BTW , i use meteor build and drop the gizzped tar on my server , extract it , and run it with PM2
I’m comparing my experience between MUP w/ Digital Ocean, vs Waves Hosting, and I’m having a better experience overall with Waves. However, it seems that hot code isn’t exactly working with Waves .
I might be doing the HCP check wrong, since I’m changing the CSS, and it’s not reflecting, but when I change the deployed version on the server, it doesn’t seem to take effect on the app. But not only the CSS. In the 2 versions I’m toggling between also has a significant change in the specific React Components I render in the app. It changes on the browser, but doesn’t take effect on the mobile build. And it doesn’t matter if I rebuild the app, it never “gets” the old version that’s up on the server.
Am I missing something about HCP and the mobile build? Is it really just building from the current state of the project? Or is there a way to completely change the content of the web app through HCP?
I feel like a dumb dumb because I missed the actual issue of my stuck on loading screen problem.
The splash plugin was a red herring as now, I see that I’m facing the CORS problem…
I20181213-21:21:29.978(8)? 12-13 21:21:30.008 11746 11746 I chromium: [INFO:CONSOLE(0)] "Access to XMLHttpRequest at 'http://somethingsomething/sockjs/info?cb=ivbxwut525' from origin 'http://localhost:12344' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.", source: http://localhost:12344/ (0)
It only showed up when I launched the app while still connected to my machine and with the local host meteor running, I guess it was able to debug in a better way.
So I suppose this is the actual problem of why I can’t get past my loading screen, though I’m not sure why it only happens on subsequent app launches…
I do have this in my mobile-config.js however: