I want to make a mobile app, but I app very new to the field. I am looking for what language I should go for. I know that iOS supports Swift and Objective-C. Android supports a range of languages, but Kotlin or Java are best. However, it seems that C# is supported on both iOS and Android (but I can't find a solid statement). I am also open to (free) converters. In terms of the app, I have these requirements:
Make HTTP/HTTPS requests
Text rendering
Basic Audio Capabilities
Image Rendering
Buttons (optional)
What would be the optimal language? I don't want an opinion as much as I want a simple list. If there is no such language that supports both systems, what would be the easiest two languages to port between? Thanks in advance!
Let prefer Flutter framework (Dart language), by Google. It is quite similar with web development but support multi platforms.
https://flutter.dev/
Generally speaking, there are 3 popular options, with widespread use and community support:
Flutter framework (uses Dart)
React Native (uses JS)
Kotlin Multiplatform (business logic in Kotlin, UI can be drawn natively for the platform)
If you're still not satisfied with these frameworks, other options would be:
Xamarin (uses .NET/C#)
Ionic (uses JS)
There are two good cross platforms for developing application on both ios and android
Flutter
KMM (kotlin multiplateform mobile)
Flutter uses dart language and KMM uses Kotlin language for development.
flutter is evolving rapidly while KMM is getting attraction of developers after the release of android jetpack compose.
It is also possible to use c++ both for Android and iOS.
Meanwhile most of the code can be shared between different platforms, there could be platform specific differences; like hardware accelerated graphics, permission handling or file handling.
Starting points:
Share a library among platforms
Microsoft learn for cross platform app
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'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!!!
Microsoft has introduced his new Visual Studio, with compatibility to develop multi-platform applications for Android, iOS and windows.
This is a very good news, for developers, that a large and reliable company produced such a thing. It can make life easier, a lot.
But, as you know, there are always disadvantages when you get advantages. So I want to know:
1) What is the difference between developing native apps for each platform, and using this kind of tools? What is the disadvantage compared to using for example Objective-C or Java for iOS and Android separately?
2) Is there any dependencies in order to running developed apps on different OSs? Something like .NET framework?
3) Is there any performance cost? Or works just like native ones?
4) What kind of apps are supposed to be developed with such tools?
In my point of view , this not good idea to develop android or ios application in XAMARIN. First of all performance issue occurs. You can not achieve performance like native application.
There are some dependencies like Xamarin compiles C# to native code, but still relies on the Mono runtime to do a lot of its work.
Native, no cheating – this is native. But there is an overhead, it isn’t like ObjectiveC native. The apps are going to be larger – this minor stuff matters when you are trying to get the max oomph out of your very resource restrictive mobile device.
You still need a mac for ios:-)
A huge emphasis on better app patterns like MVC or MVVM, because user interface is still native. You can write about 70% reusable code using Xamarin, but the last 30% or more depending upon your app design and nature, has to be native.
Generally speaking, in my experience, I’ve had better luck finding support and code samples for native, than for Xamarin.
And like I said, you still need to know ObjectiveC and Java – even if you are using Xamarin.
And Visual Studio + Xamarin = $$$$$. Plus a Xamarin developed product, while superior than HTML5 and Packaged HTML5, is going to cost you more. You have to evaluate if your needs justify the cost.
However, in practical application, I don't think it is very useful. Consider this... If you are coding in C# then this code has to be translated into objective-C or Java, and that translation depends on the Xamarin SDK. If Apple releases 4,000 new APIs in the next release of iOS tomorrow, how long will it be before the Xamarin API allows you to call those native APIs? And multiplied by two if adding Java. If you can't wait, then you code what you can in C#, and then write native code for the rest, but now you are supporting three code bases, and the advantage of Xamarin flys out the window.
I provide some links of debate on this topic
http://willowtreeapps.com/blog/xamarin-or-native-development-tools-for-ios-android-projects/
Android Xamarin limitation
https://developer.xamarin.com/guides/android/advanced_topics/limitations/
https://www.linkedin.com/grp/post/121874-5848849341191569409
https://www.quora.com/Why-would-people-build-native-mobile-applications-for-Android-iOS-using-Java-Objective-C-when-they-could-use-Xamarin-C-for-all-platforms-if-license-cost-isnt-an-issue
Why I Don’t Recommend Xamarin for Mobile Development
is it possible to develop android apps using Visual Basic? if yes, how?
i have been working with it for a while and eclipse is quite difficult to use. i'd seriously prefer using VS
MSDN has a fairly useful library article about cross-platform development in Visual Studio with links on how to install and use the Xamarin or Apache Cordova tools.
Xamarin seems to only support C#, but maybe you could look at using a tool such as ILSpy to decompile a binary created from VB into C#
It is possible to develop android apps using VB.Net and Xamarin.Forms.
Xamarin allows you to develop cross platform apps using .Net framework - however, Xamarin users in most cases use C#.
Source - Xamarin.Forms using Visual Basic.Net
Another way would be using ionic framework, cordova or phonegap (pretty much the same, with different GUI's).
You will code the app in JS, HTML and CSS and can compile it as native app for iOs, Android and other devices.
You can read more here
It would be possible yes, but I'd recommend you to take a look at Android Studio.
It's a very nice IDE using Java to develop android applications.
You can also use Intel XDK. Very easy to use and flexible in choosing a framework, like Ionic or Jquery Mobile.
Yes, you can develop Android apps using Visual Basic. Look at the product called "B4A" (Basic4Android) by Anywhere Software.
It's basically like developing in VB6 for Android, and has built-in visual designers and emulation connectivity. You write all code in BASIC and it compiles down to native Java and APK files. No special frameworks or runtimes are required. Unlimited in its capabilities due to its ability to use Java code in modules (if desired), it's a truly amazing product. it's also as popular as ever. 100% of the code you write will be in BASIC - NO JAVA, C#, or anything else). If you ever want to know where all the VB developers went, now you know.
You're welcome. :-)