When I first started using Meteor about 6 months ago I was completely psyched. DDP, Tracker, the tight Mongo integration and so on. It all seemed so good. Along the way I have learned a lot about JS, Node, Mongo, HTML, etc. Yet every step of the way I have run into problems with Meteor and in particular the build process. From day one I was intent on building mobile apps, which would run on both Android and iOS. And after all these months the end is near, or at least I hope so. However, each day begins with the some trepidation over what adventure is awaiting me on my trip down the Meteor rabbit hole. A few days ago it was the battle with getting the Android emulator run with 1.3. After 2 days on Genymotion I gave up, hopeless. I finally got AVD working after editing the gradle.build file to trick Meteor into using x86 emulation. Yay!, I wiped the blood off my nose and moved on. Today started off taking a beating by MUP and MUPx. Eventually, I worked though it with the help of others who have passed this way before me and and just good old trial and error. As I already mentioned earlier the target for the mobile app is both iOS and Android using the same backend. The Android side appears to be ready and I have now moved on to iOS and low an behold I have run afoul of the build process once again. This time it stated with EPERM errors, then Mongo problems, followed by Cordova issues. All while trying to use ‘meteor run ios’ or perform meter reset. For the last few hours I have been deleting Mongo lock files, reinstalling node, removing the cordova-build files and so on. And I am pretty much nowhere. It’s one more, incredibly frustrating, tail chasing session. When it will end who knows. Once upon a time I was hoping to build a mobile app business, using Meteor as the foundation. Now I am having serious doubts about my choice and am considering moving to what I was trying to avoid in the first place, native.
Having been in the software/systems business for many years I have seen a lot of different technologies come and go. The is no denying that there are many talented people working at Meteor and many more trying to make use of it. However, I am losing hope that Meteor is the game changer I was looking for. It’s focus seems to be on the next great thing, which in a rapidly changing world is admirable. Though this has come at a cost. My whole hearted recommendation is for Meteor to step away from the cutting edge for awhile and focus on making the build, test and deployment systems stable and robust enough to be effective and productive enough for everyday professional use. After all, Galaxy seems have them as it’s target audiences.
Have you looked into React Native? I plan to go down that route and hopefully by then React Native Android will be ready too. You can still use Meteor for the backend with DDP to hook into React.
Everything on your post is about how much Cordova sucks. It’s related to Meteor only because Meteor promises you mobile development through Cordova. Web development (without the Cordova part) has its own challenges, but I’m sure it’s not this terrible experience you are having with Cordova integration.
I gave up on Meteor and mobile through Cordova. I prefer react-native without a doubt for it. Hope Meteor integrates with it soon.
elie, under .meteor/cordova-build/platforms/android go to the build.gradle file and around line 184 swap just the name armv7 with x86. Then meteor run android again. It will start up the x86 AVD emulator, which you should have already created.
We deployed a complex App on ChromeBook, Android and iOS with great success. We even used custom plugins for Cordova. Are you doing anything out of the ordinary?
Note that we are using Blaze. Cordova remains a great project, but it is still a bit rough around the edges. But MDG did a great job integrating it well.
Now, you are 100% right there seems to be a lack of focus (React, Angular, etc.). That’s because making money on an open-source project / framework is really not easy.
I am 100% against React-Native now. It’s not ready for production and enterprise apps (if you are a company with development teams and lawyers you could frown on a lot of things with React, like its ecosystem, lock-in into its methodology, JSX, licensing etc.)
As for mupx, I was disappointed too. I understand that MDG won’t support it as they need to sell their service, but the developers bungled their communication and support. We have to run ‘mupx deploy’ a couple of times to make it work, and it still spits out errors.
Thanks makstr, I appreciate the hard work. I’ll give it a try tomorrow. On the bright side I finally got the app working on an iPhone6 using meteor run ios-device. Things are looking up.
Hi ramez, thanks for the feedback. I’m encouraged by your success. As for the app, it is also somewhat complex, but I don’t think it is all that unusual, technology wise anyway. It’s using Blaze and Cordova, as well. For now the server is on DigitalOcean. M4v3R also responded with info on an update to Mup, which hopefully make things work better. I’ll give that a try later today.
Any suggestions of best practices for deploying and using hot code push?
I’m afraid to say this but I think meteor has a quality problem. I know the most of the problems you described and I spent much more time to solve such problems then writing code.
The main question for me is: can I use meteor for production apps for my clients?
To give one example: Today I spent the whole day to find out why my app stopped working in production mode while it is running fine without --production. I upgraded and downgraded packages, added debug messages but nothing helped. Such things are very annoying if you are on a tight schedule.
I really didn’t do anything out of the ordinary except add a custom Cordova plugin.
I use Ubuntu though as our main development machine, then pull from git onto a Mac OSX to test in iOS simulator.