I'm about to start developing a mobile app and I'm wondering whether flash can be packaged with apps in both iOS and Android? Are there any implications to be aware of (such as iOS version compatibility?)
One of the main selling points of using the Adobe AIR SDK in Flash is to allow 'packaging' of apps for multiple platforms, including iOS and Android. You'll have to publish separately, of course, to get .ipa files and .apks, but one code-base gets you to both mobile platforms. I've had no trouble with iOS compatibility between all versions from 4.3 to 7. Depending on what you're trying to do you may want to incorporate ANEs -- Adobe Native Extensions -- which require some programming in native codes (Objective C or Java) to get some types of native functionality. I tend to use outside help for that.
Related
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.
I have developed a few Android applications and am currently working on developing an iOS application from scratch. Is there any method by which I can focus on developing my iOS application in such a way that I can reuse some of its components or features for developing the same application on the Android platform?
Is there any method by which I can focus on developing my iOS
application in such a way that I can reuse some of its components or
features for developing the same application on the Android platform?
You can if you use web technologies (HTML, CSS, Javascript). You can do that if you build a web-based app or a hybrid app, i.e. one that uses web-based content running inside a native shell. Look into PhoneGap if you're interested in building a hybrid app -- it offers a quick way to get started. There are also some cross-platform frameworks like Titanium that purport to offer write once/run on several platforms functionality.
If you want to build an app that's fully native on both platforms, you won't be able to reuse application logic. iOS and Android use different frameworks written in different languages running on different hardware, and apps on each platform work somewhat differently as well. Even so, what you can re-use is whatever work you put into the infrastructure that drives the apps. Most apps rely on some sort of server infrastructure to supply or collect data, and that server component can easily serve apps running on either platform.
If you are developing the same application, then you can use j2objc to translate your java (non-UI or hardware/platform specific) code to objective-c.
From the description:
J2ObjC is an open-source command-line tool from Google that translates
Java code to Objective-C for the iOS (iPhone/iPad) platform. This tool
enables Java code to be part of an iOS application's build, as no
editing of the generated files is necessary. The goal is to write an
app's non-UI code (such as data access, or application logic) in Java,
which is then shared by web apps (using GWT), Android apps, and iOS
apps.
I have developed application for android based mobile using Java. I have tried developing apps for Windows based mobile phones using C# and heard about iOS that one would need to know Objective C.
Wondering if there is any way to have one language to develop an application that can run on all these platforms. I understand every operating system executes programs having different binaries that it execute. But just wondering if there is any common platform like JRE that is run on these mobile operating systems.
Thanks for the reply
Short of working with HTML mobile webapps, I reckon your closest bet to a common language between the 3 platforms would be C# using Mono.
Check out Mono for Android and MonoTouch for iOS both supported by the same company.
Whilst you could probably use the same language for your apps and even share internal APIs across the different platforms, you would still start to encounter differences in how the UI is handled on each of the platforms.
There is a project: http://www.appcelerator.com/platform which can be used for writing apps for Android and iOS... But from my experience I can tell that this is good only for simple prototype apps. The more fancy app, the bigger issues you would have with it.
I am going to develop an application which will be cross platform and it will be released for IOS and Android.
My App will be using network connectivity and communicate with the server and it has to be fast, reliable and responsive.
So my Question is: If i choose Adobe Flex to build that app for IOS and Android, So will there be any performance issues?
If no then why people use xcode or android sdk?
What are the disadvantages of using Adobe Flex over xCode and Andoid SDK?
Generally speaking, if you use a cross-platform "write it once and build for many platforms" tool you likely will give up the ability to take advantage of some (or all?) device- or platform-specific features. You are, in effect, choosing a lowest common denominator sort of solution. That is to say, you have available to you only the platform features available on ALL the platforms you are targeting.
Building a native app -- that is, using Xcode to build an iOS app and using the Android SDK to build an Android app -- gives you complete access to all of a given platform's specific features and capabilities, thereby ensuring the best user experience on each platform.
This is now my opinion: Native apps are better, simply because they present the user with a native experience -- an experience that will feel familiar to them as a user of the platform. When you choose to use a cross-platform tool you are actively choosing to give your user a less-than-ideal experience on their device, but YOU saved some time (maybe) getting your app to market. Who's the winner?
In my job, my boss and I had a specific conversation about this. We have native iOS and Android apps, on purpose, because we didn't want to give up platform-specific features. We wanted each app to give the best experience it could on its platform. We specifically agreed that a cross-platform solution was not the way we wanted to go.
Depending on what you are building, Air is a great platform for developing cross-platform mobile applications. Despite recent news that the Flash player is no longer being developed for mobile browsers, the native story remains strong. Plus, having seen native IOS, native Android and Flex development, the Flex platform is much better when it comes to the ease of development. With high-level features like data binding, visual state management, a solid component/skinning model, transitioning model, etc, it is a generation or two ahead of iOS and Android (IMO).
If you are using Flex for mobile (iOS/Android/Playbook), you get a common look/feel across all mobile devices. #MarkGranoff suggested that the user experience is downgraded when using an approach, but I'd challenge that.
Although I agree that an out-of-the-box styling of the UI components in Air feels a tad off, I don't recommend that anyone build apps that way anyways. Instead, create an app that looks like your app. There have been many applications that don't conform to the native look/feel of iOS or Android but are still quality from an aesthetic and UX perspective.
There is something to be said for an app that looks/behaves the same across all platforms. I can tell you this much... the user doesn't really care. If it looks good, feels good and does what they want, they are happy.
The Flex Mobile SDK uses a lot of the same UI paradigms (especially in the soon-to-be-released version of the SDK) and it is getting better. I wouldn't discredit it. You can save a lot of money and time using something like Flex Mobile.
You can use Flex to compile to AIR for iOS or android.
The performance of AIR vs Objective C or Java is significantly slower.
The advantage of using AIR is to have one cod base delivered to two platforms.
But if you have the know-how, Objective C and Java are better suited to development on their respective platforms. However many successful apps have been launched on iOS and Android using AIR. If you want to know if it would work for you I would seek out those apps in iTunes and Android Market and see how they perform for you.
If you app is not a game it will likely work fine. And if you app is a simple game it could also work fine.
Also remember there are other multi=platform development tools to choose from, like phone gap, or appcellerator:
http://www.appcelerator.com/
http://phonegap.com/
or even Unity 3D:
http://unity3d.com/
UPDATE:
Since this original answer in Novemer 2011, Adobe has made significant improvements to AIR for iOS and Android. Petformance problems are negligible unless you are doign somethign very instinsive such as large image processing.
Likewise, Unity3D has improved a lot too. It's an excellent choice for games that are 2D or 3D.
if you are using Air to develop cross platform apps, you should notice the following facts:
1) you don't have access to native features (but you can use Air Native Extensions to by pass this problem)
2) performance is slower than native apps (but you can use Starling framework to use GPU power in devices which will increases the performance a lot!)
the bottom line is that building mobile apps using AS3 and Flex/Air SDK is the best solution you can think of and the performance if using starling is much higher than native apps!
I don't think you can use Adobe Flex on iOS. Another cross platform solution to investigate would be HTML5. If you can afford it, the best solution might be to implement it twice, once with xcode for iOS and once with Android for Android.
I am trying to implement application that is supported to android,iphone,blackberry,windows mobile,symbian, webos (palm).
For that I am using the 3rd party applications here.
However, upon research I found that Android market doesn't accept the application that is developed on total cross tool.
Same for iphone to use application that is done on total cross mobile must be jail broken.
So, now I am in confusion that, is mobile applications those are developed using 3rd party Mobile application development tools are acceptable with their respected marckets.
For example, if I develop an application using phonegap tool on android, will android market accept that application?
The iOS and Android application stores have plenty of applications built using cross-platform frameworks. Apple originally suggested they would restrict these platforms, but they backed off from this position last year as shown here:
http://www.apple.com/pr/library/2010/09/09statement.html
I have to disagree with Sheikh Aman, however. I believe there are several platforms that do that. According to the original poster's link, Bedrock does so.
It's a little misleading to say that PhoneGap is for mobile websites--it's true it uses JavaScript+CSS, but their apps are packaged so they can be sold through the app store.
My company's product, the Particle SDK, covers Android, BlackBerry, iPhone, webOS, and WinPhone7, and legacy support is available for Symbian, but so far we haven't had much call for it. Particle apps are written in Java or ActionScript, not JavaScript.
If the original poster actually needs Windows Mobile, as opposed to Windows Phone 7, Bedrock or PhoneGap might fit the bill.
I haven't tested those toolkits, but they both have applications in the app store. EA's iPhone Battleship game is apparently a Bedrock app.
AFAIK, Appcelarator is very well accepted in app-store and in Android market too.
Phone Gap is for mobile websites.
Most importantly, there's no cross-platform development environment available, which lets you develop for Android+iPhone+WP7+BB+Symbian by writing a JS (or whatever) only once.