I'm beginning to look into Android programming.
When developing a mobile application, are there other options besides using the SDK to develop a native application?
For instance, is it possible to develop an application using only web technologies?
If so, what is your experience on the different techniques (limitations, etc)?
Thanks
With Gingerbread now you have the possibility to create an app just with the NDK using NativeActivity.
This release of the NDK includes many
new APIs, most of which are introduced
to support the development of games
and similar applications that make
extensive use of native code. Using
the APIs, developers have direct
native access to events, audio,
graphics and window management,
assets, and storage. Developers can
also implement the Android application
lifecycle in native code with help
from the new NativeActivity class. For
detailed information describing the
changes in this release, read the
CHANGES.HTML document included in the
downloaded NDK package.
If you are willing to use web technologies I would recommend you this book:
Programming the Mobile.
For instance, is it possible to develop an application using only web technologies?
Yes. You can use PhoneGap, Rhodes, or Titanium Mobile for this.
If so, what is your experience on the different techniques (limitations, etc)?
Of the three, I prefer PhoneGap, as it seems the cleanest and simplest. Rhodes might be good if you are a Rails developer and want to use that style of Web development on-device.
You can also develop applications on top of Adobe AIR.
So it seems you have quite a few options:
Java based app
Native app
Adobe AIR
Mobile website
Related
So I created an app on android studio and now my boss wants me to get it to work on Apple devices.
Is there a short cut to get an Android App to work on Apple devices ie iPhones, iPads and so on.
I really don't wanna create a whole other version for Apple devices.
Impossible. An option is to create hybrid application using Xamarin or Flutter which will run on both iOS and Android. That means you need to migrate you current implementation to hybrid app.
There are several options to do it and each of them has pros and cons so choose wisely.
Hybrid App
A hybrid app allows you to build a cross-platform mobile application with web technology. There are plenty of options you can use like Ionic, PhoneGap or React Native. But since you have built an Android app with the native code I assume, those existent features need to be rewritten in order to run on an iOS device.
Xamarin/Flutter
They are both create a native-like experience. The advantage of them comparing with hybrid app technology is the performance would be better in general. But again, it doesn't mean that you can just create an iOS app without changing any code, you'll still need to rewrite most of part in your app.
Kotlin Native
As an android developer, you're probably familiar with Kotlin. It's officially supported by Android team and It's 100% interoperable with Java. Kotlin can also be compiled to run on multiplatform including iOS. By this way, you'll be able to reuse a lot of existing Kotlin code on both Android and iOS so you don't need to use a new language to rewrite all the functionalities you had done on Android. The cons are It's an experimental feature so It's young and could change on the future and the reusability doesn't mean that you don't need to learn iOS platform.
I am looking for a Multi-platform mobile app development framework.
Key features i require are:
Support for Background Services for synchronization
Database support
Which frameworks are better suite for these?
My research comparing React Native and Xamarin so far says that react native used more often in industry and has more developer support available but officially they only have 'headless-js-android' for Android for running services. Xamarin on the other hand has the support for running services on both platforms.
I need some guidance from someone who has worked with both technologies.
Thanks.
The following is a list of multi-platform mobile apps development frameworks:
Adobe PhoneGap: https://phonegap.com/
Appcelerator Titanium: http://www.appcelerator.com
Sencha Touch: http://www.sencha.com/products/touch
Ionic: https://ionicframework.com/
Sinpalm: http://www.simpalm.com/services/sencha-touch-development-developer
Check them out and let me know which one got your attention.
This is an oversimplification on the way they work:
They allow you to create a user interface with HTML5 and JavaScript.
Then, via JavaScript injection, they provide you with a standard API framework.
This JS API framework is a common interface to both Android and iOS. Therefore, you only focus on coding against the JavaScript API framework. Behind the scenes, they have libraries that will execute this API in the respective device.
Most of them allow you to use the database and other features provided by the respective OS (Android/iOS). You only need to check which supports the feature you need better.
I'm maintaining a plethora of apps for one of my clients all of which have native projects for each of the three main platforms. The apps are relatively simple in functionality. My client wants to always take advantage of the latest features in each platform for marketing opportunities. They also want to appear to be a native app (responsive, not laggy). I haven't followed cross-platform development very much lately, so that's why I'm reaching out to SO.
My initial idea is to write a C++ library that has all the functionality shared by the three platforms. Then, for each platform, I'll write some network, file access, and UI-code that connects the abstract library code to the concrete platform.
Of course, this is exactly what cross-platform systems aim to do. Would it be a waste of my time to write the above myself when this has already been done by platforms like PhoneGap? My concern is that I would be dependent on a third-party. If I write the code myself, I have full control, and I will always have access to the latest features.
Hope to get some pro's and con's.
Thanks!
Yet a third option (after Facebook's React Native and Microsoft's Xamarin) is Google's new Flutter and as the other answers suggests "then writing the Windows app purely natively". BTW, React Native does have Windows support the lack of which in Flutter could be a plus or a minus depending on how you look at it.
Have you considered using React Native for iOS and Android, then writing the Windows app purely natively?
There are tons of articles out there about pros and cons for React Native.
PhoneGap is just a web, written in HTML, CSS and JavaScript. React Native actually renders native components for iOS/Android.
There is also Xamarin. It supports multiple platforms and uses c#. The new features from the native languages all work great.
I am new to mobile development with a requirement to develop applications for Android and IOS. My programming background is in C#.
Which is the best language and framework to start developing mobile applications?
Is it better to use native development or use cross-platform frameworks?
Please suggest frameworks and languages with respect to ease of development, development support etc..
I am no expert in Cross Platform Mobile Development (in fact, I was just searching for a cross platform mobile development languages/frameworks), but you could take a look at Xamarin, especially as you have a C# Background.
You may also want to take a look at Apache Cordova (and Adobe Phonegap), they use HTML+CSS+JavaScript.
I recently found Flutter, the development language is Dart and it's an early stage OSS project (as of 2016 october) and Haxe. They both seem like active projects, so worth following the progress on GitHub.
If I had to choose and I already had skills in C#, I'd go with Xamarin.
I strongly recommend you give a try to Flutter... It just came out from Google... It's in Beta, but Google heavily used it until now in production mobile applications. It uses Dart, as a programming language and it's awesome. If you have a background in C# (or similar languages, like Java for example) you won't have any problems - it's quick to learn and there are a bunch of tutorials already.
Do a search on YouTube for Flutter, and also on medium...
Here's the website link: http://flutter.io
You can also download some sample applications with all the Android / iOs widgets you can use in a Flutter application. Here's the app for Android: https://play.google.com/store/apps/details?id=io.flutter.gallery&hl=en
The key difference between Flutter and React native for example is that there's no Javascript bridge... and it compiles to native code. You also write the code once, and it will work by default both on Android and iOs... Hack, you can even switch to iOs widgets on an Android phone.
It's AWESOME!!!
I need to develop an application related to C2C communication in which manufacturers can directly start communicating with retailers for bulk orders and maintain the order in an easy and fast way. Please suggest what framework i can use. For example: Native android developement, PhoneGap, Appcelerator Titanium.
PhoneGap: I have read that you cannot provide rich interactive applications and that it's not good in communicating with Android native apis.
Appcelerator Titanium: I need to purchase it and it requires a lot of money to develop an application.
Native development API: I have to provide a lot of time and it will be hard to communicate with my database and my web application using web services and it will be for the Android apps only
Which should I use for my app?
I'd say it depends on:
Your skills...
HTML: PhoneGap, Titanium (our Alloy MVC uses XML)
JS: Titanium, PhoneGap
JAVA: JAVA
Your plans...
One platform: Android
Multiple platforms: Titanium, PhoneGap
Your requirements...
Good UX: Titanium, Android
Titanium is open source and free (appcelerator.org) but we do provide paid (starting at $39/month) services, including Arrow, which is great to quickly build mobile web services to connect apps with any remote data source.
When you only want to develop an Android app you should use the native API. It offers most features, the better documentation (IMO) and is easier (and therefore cheaper) to maintain. Additionally it should be easy to communicate with databases and/or web APIs.
The only advantage Titanium offers is the multiple platform support. But when you only want to develop for Android use the native APIs.