Native Android Development Or Adobe AIR? - android

What are the benefits and disadvantages of using android AIR instead of Android native application?

Native UI Controls
When using Adobe AIR you cannot mix Android UI Controls with AIR views. Your only choice is starting android native activity or place android native view container on top of AIR view. But AIR must always be at the bottom.
Android API Access
There are many native Android APIs that been implemented in Adobe AIR, how ever many haven't been. To use Android API that is not supported in AIR you must write a native extension, and if you wish to see use it in desktop-debug, you must write an extension for desktop as well. Writing extensions is easy if you familiar with the native code, how ever compiling them could be a nightmare as there is no easy tool for that.
Performance
It's hard to say where the performance is better. If you are using native air VS any native Android Application than probably native Android will be faster. How ever if you use Stage-3D(well implemented in Starling API), than Air will be faster than any native Android application that does not use OpenGL ES, in case of OpenGL, I think the performance is parity much the same. One exception will be Android NDK, how ever this is not exactly native, and I am not sure if you can or cannot implement it in Adobe AIR.
Cross Platform
When working for cross platform, Adobe AIR can save you tons of time, your code may not be the same on all of the platforms but it defiantly will have a lots of shared libraries. Native Android application is not giving you anything in this case.
*inspired by old article about this topic from 2010.

Related

Using Android NDK for an existing iOS app

I'm bidding for a contract that insists on using the NDK for their iOS app. Basically, they're arguing that they already have an iOS app and they want to use the Android NDK to have an Android app for it.
I'm sorry if this comes off ignorant. I suggested that I could rewrite the entire app in Native Java/Kotlin but they don't see it any other way. Is there a way to use Android NDK to create an android version of an existing iOS app? I've never worked with the NDK.
Android does not support either Objective-C or Swift, the two main development languages for iOS development. If the iOS app is written in either of those then there's nothing for it but to rewrite the app for Android.
As #CommonsWare says in their comment, if the app is written in C++ using OpenGL ES, which is cross-platform, then you might be able to share significant parts of the code between platforms.
You also say "I'm bidding for a contract that insists on using the NDK for their iOS app." That doesn't really make sense. The Android NDK does not support cross-development for iOS. You can't use it to develop iOS apps, full stop.

Using JNI FOR IOS and Android

Is it Reccommended to use JNI and C++ Code to make a shared library code between IOS and Android ?
I'am asking this because i think it not just saves us plenty of wasted time for implementing same logic in both platforms but also we will have the speed of a C++ core Backing the logic-process of our modules.
Update :
I ask my question in another way :
is it recommended to share a C++ Library for core functions of Android And IOS versions of a similar app ? or it would be better to completely migrate the codes to a multiplatform language ?
Since I remember my needs back then, I know that hybrid apps were not an option, Also JNI is not used for making cross-platform apps but the best use is to drive hardware peripherals via native UNIX scripts for Android or run c++ code on Android. So if we omit PhoneGap, Appcelerator, Ionic etc we will be facing several cross-platform technologies that have attracted many developer attentions so far.
Xamarin:
The framework was founded by the same people who have created Mono, an Ecma standard-compliant, .NET Framework-compatible set of tools. Xamarin offers developers a single C# codebase that can be used to produce native apps for all major mobile operating systems.
Unlike many other frameworks, Xamarin has already been used by over 1.4 million developers from around the world. Thanks to Xamarin for Visual Studio, developers can take advantage of the power of Microsoft Visual Studio and all its advanced features, including code completion, IntelliSense, and debugging of apps on a simulator or a device. Xamarin Test Cloud makes it possible to instantly test apps on 2,000 real devices in the cloud. This is by far the best way how to deal with the heavy fragmentation of the Android ecosystem and released bug-free apps that work without any major issues.
But being honest I didn't enjoy my first time face-to-face meeting with Xamarin. There were so many bugs and also speed and performance problems were bothering.
React Native
React Native is developed by Facebook and used by Instagram, Airbnb, Walmart, Tesla, Baidu, and many other Fortune 500 companies. It is an open-source version of Facebook’s React JavaScript framework. Because React Native uses the same UI building blocks as regular iOS and Android apps, it’s impossible to distinguish a React Native app from an app built using Objective-C or Java. As soon as you update the source code, you can see the changes instantly manifest in an app preview window. Should you ever feel the urge to manually optimize certain parts of your application, React Native lets you combine native code with components written in Objective-C, Java, or Swift.
The ones I mentioned above are not the only options, but since now they are the most used frameworks between programmers. But beware that Flutter is being publicly announced by Google in Google IO and maybe it may be going to create a hit soon.

Disadvantages of cross-platform mobile app development using Visual Studio

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

Marmalade or Adobe AIR to embedded in Android/ios codes

My team has a project which has native app features
and some games within.
At first , I thought Unity3D is a good choice for us,
but I found that the battery drain is a problem.
Also,it's hard to refer to a native features of Android/ios in unity.
I want it to run the native part quietly and and to run the game part fast.
So is it possible that I develop this app basically
in Android/ios using Java or Objective-c with Marmalade or Adobe AIR?
You can not mix and match here. You need to either go full Cross platform or full native.
I follow this rule of thumb,
Whenever you are in doubt always go native.
You can have extensions and plugins to support native functionality in Adobe Air, Unity3D or marmalade. So there wouldn't be any issue with it. Since there's some game content, you should choose a game engine such as Unity3D to do this.
In theory each one of these options are capable of achieving this. It's upto you to find pros and cons of each.

Adobe Air for cross-platform iOS and Android development

I saw this sometime ago and wanted to check if anyone with experience doing cross-platform Application using Adobe AIR. I have seen their LVVM compiler with AOT and Android runtime.
Say I need to create the same application for iOS and Android, is this recommended? Are they any limiation that I don't aware yet? Can they access to respective's native API? Are things like Animation h/w accelerated? Any performance penalty?
It really depend on the application that you want to build. Adobe Air is more focus on game development, but not saying it can't be used for application usage. Plus there are some cool native plug-in which can boost up your application. I suggest to understand your project requirement and have a checklist against Adobe air, then decide to implement or not.
Have a read the following review by Cnet about this product.
http://download.cnet.com/Adobe-AIR/3000-2383_4-10652806.html
You can create IOS and android application Using PhoneGap.

Categories

Resources