We are developing an AWS IoT app for large boats. The IoT devices have sensors all over the boat for engine oil pressure, position, water depth, fuel level, crew location, etc. When the boat has internet, we interact with AWS cloud using lambda and Amazon DynamoDB. When the boat is offshore, the captain and crew still need normal and emergency alerts and real-time sensor information. The crew might have an Android or IoS phone or a Windows or macOS PC to receive alerts and interact with sensors. We may use the AWS GreenGrasss edge computing solution and either MQTT or HTML for that function.
Question: We want to develop a cross-platform client to run on Windows, Mac, Android, IOS, and possibly Linux. We are primarily Python programmers, so PyQt or Kivy are options for us, but we have heard good things about React Native, Flutter, Xamarin, and others. We think an AWS Greengrass core on an RPI4 could communicate to the client with MQTT or a local webserver with a client web interface.
Looking for some advice: we are planning to create a hybrid app for both iOS and Android; this app will consume a REST API. We are looking for a tool for this development with the following attributes:
Shallow learning curve; easiness to adopt (all team is new into mobile development, with diverse backgrounds: Java, Python & AngularJS),
Easiness to test (we discarded Angular-based tools already: creating a unit test in Angular we considered time-consuming and low value. At this point of the project, we cannot afford UI testing with Selenium/Appium based tools).
So far, we are not considering any specific capability of the device. Still, in the mid/long term, we would require the usage of GPS (geolocalization) and accelerometer (not sure if it's possible to use it from a hybrid app).
Suggest any other tool if you wish.
We have experience with React Native, Flutter or Xamarin, the lion share of the native cross-platform tools used. They all allow you to create very good user experiences. You can check their reddit pages to see the beautiful designs people recreate.
I highly recommend using cross platform tools vs native if your app has generic functionality that doesn't use advanced functionality of the app like VR/AR. So, for something like a dating app without those features, you would probably be better off with cross platform native instead of single platform native (swift/kotlin).
If budget is low, a lot of companies have success just using Expo (a framework on top of React Native). It limits you further, but it's the easiest and most affordable to find developers with. Eventually you might decide to move away from it, but at that time ou ll have a lot more money and react native will be an easy tech to move towards.
Xamarin is the oldest of the cross platform native tools and so there's a lot more documentation and supporting libraries.
Flutter is super fast & fluid, and since it uses pixels(skia), it's even more performant than all the other technologies including native single platform. But it doesn't come with the amazing libraries that Xamarin and React Native is able to leverage
Sencha Touch 2, a high-performance HTML5 mobile application framework, is the cornerstone of the Sencha HTML5 platform. Built for enabling world-class user experiences, Sencha Touch 2 is the only framework that enables developers to build fast and impressive apps that work on iOS, Android, BlackBerry, Kindle Fire, and more.
Xamarin’s Mono-based products enable .NET developers to use their existing code, libraries and tools (including Visual Studio*), as well as skills in .NET and the C# programming language, to create mobile applications for the industry’s most widely-used mobile devices, including Android-based smartphones and tablets, iPhone, iPad and iPod Touch.
PhoneGap is a web platform that exposes native mobile device apis and data to JavaScript. PhoneGap is a distribution of Apache Cordova. PhoneGap allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development, avoiding each mobile platforms' native development language. Applications execute within wrappers targeted to each platform, and rely on standards-compliant API bindings to access each device's sensors, data, and network status.
Built on HTML5 Technology- Sencha Touch 2, a high-performance HTML5 mobile application framework, is the cornerstone of the Sencha HTML5 platform.;Smoother Scrolling and Animations- Sencha Touch 2 provides a user experience unparalleled in HTML5. Fluid Adaptive Layouts- Sencha Touch’s novel layout engine leverages HTML5 in powerful ways to let developers build complex applications that respond, load, and layout in a snap.;Navigation View- The new Navigation View component makes it easy to make applications that feature beautiful animated transitions between screens as well as providing automatic back button management.;Class System- Sencha Touch 2 builds on the class system from Ext JS 4. Developers can take advantage of powerful features like dynamic loading and mixins, all making it easy to create minified custom builds for your application.;Component DataView- The new Component DataView enables you to build beautiful interfaces based on a Model and a Store. It’s easy to create a template that has full featured components instead of simple HTML templates so you can bind, listen, and control components inside of a DataView.;Advanced List Plugins- Lists are one of the most popular components in Sencha Touch, and with 2.0 we’ve updated two of the most powerful plugins: Pull to Refresh and Load More. These plugins, activated with a single line of code, deliver a fantastic List experience out of the box.;Infinite Carousel- Carousels are a great way of showing multiple screens of information in a constrained space. In Sencha Touch 2 they get even more powerful, with a data-bound Carousel supporting an infinite number of items. No need to worry about performance, or memory — Sencha Touch manages it for you, so scrolling is consistently smooth.;Config System- Sencha Touch 2 has a great API thanks largely to its config system. Almost any configuration of any component can be changed at run time, with a consistent and predictable API.;AJAX - Sencha Touch provides full AJAX support, including CORS and JSON-P;DOM manipulation - Full DOM manipulation support available;Feature Detection - Automatically detects the presence of features like geolocation, canvas and orientation support;Geolocation - Provides a simple wrapper around geolocation on devices that support it;Icons - 300 icons included;Example apps - 8 full example apps included;Touch events - Provides a full range of touch events and gestures like tap, swipe and pinch
Cross-platform development- Thinking about supporting iOS, Android, Mac and Windows? Xamarin allows you to write it all in C#.;Reuse existing code- Use your favorite .NET libraries in Xamarin apps. Easily use third-party native libraries and frameworks.;
Discover as you type- Explore APIs as you type with code autocompletion.;Visual Studio or Xamarin Studio- Create, build, debug, and deploy apps in Visual Studio. Or use Xamarin Studio, a fully-featured IDE that is built for mobile app development.;Native UI, Native Performance- Xamarin delivers high performance compiled code with full access to all the native APIs so you can create native apps with device-specific experiences.; Point and Click UI Design- Xamarin provides a world class Android UI designer. Use Apple Xcode UI designer to create interfaces and Storyboards that automatically sync with your Xamarin.iOS project.
Android;Blackberry;iOS;Windows Phone;Windows8
Statistics
GitHub Stars
-
GitHub Stars
-
GitHub Stars
4.0K
GitHub Forks
-
GitHub Forks
-
GitHub Forks
889
Stacks
78
Stacks
1.3K
Stacks
578
Followers
90
Followers
1.5K
Followers
685
Votes
28
Votes
785
Votes
94
Pros & Cons
Pros
8
Structured code
5
PhoneGap intergation
5
Mvc
3
Customised Component
2
Easy Data Binding
Pros
121
Power of c# on mobile devices
81
Native performance
79
Native apps with native ui controls
73
No javascript - truely compiled code
67
Sharing more than 90% of code over all platforms
Cons
9
Build times
5
Visual Studio
4
Price
3
Complexity
3
Scalability
Pros
46
Javascript
13
Backed by Adobe
11
Free
9
Easy and developer friendly
6
Support more platforms
Cons
2
Never as good as a native app
1
Hard to see
1
Not build for high performance
1
Created for web pages, not for complex Apps
1
Poor user experience
What are some alternatives to Sencha Touch, Xamarin, PhoneGap?