I know there are guides for android developers to learn iphone programming, and they try and compare and contrast differences between the two platforms to help developers learn, but is there a guide for the opposite? A guide/introduction to android development for developers coming from an iphone dev background?
I dont think there is a guide that compare iphone and android developement (May be I am wrong). From my experience (I started on iphone, now working on both) you should be aware of these things
iphone OS targets some standard devices which has fixed resolution and screen size. So we can align widgets in places by giving absolute pixel values. But in the case of android, we have to target different kind of devices, by different vendors, with different screen size and resolution. So to design and program UI you will need to learn about the concept called layouts.
For iphone we know there is only one soft keyboard. Different android devices comes up with hard and soft keyboards. And let me tell you handling android soft keyboard event can be most frustrating(From my experience).
memory management in ios is tough to learn, there is no garbage collector there, but easy if you understood the concepts. There is garbage collector in android(java) so we dont have to think about memory.
For learning android some links I have bookmarked.(not comparisons between iphone and android)
http://www.devx.com/wireless/Article/39101
http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-androidwidget/index.html?ca=dgr-eclipse-1
http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts
http://saigeethamn.blogspot.com/2010/05/table-of-contents.html
If you want to get something up and running quickly to get a feel of things, I found this short series of articles, Android for iOS developers to be pretty good. There are a couple of errors here and there and you'll have to get past the author's style but I had a quick and dirty port of a similar iOS app up and running in a few hours.
As an aside, the Android SDK is a bit of a faff to get running on Mac OS X. I skipped it and installed on a Windows PC but you'll want a good guide tailored for that as well. There are a lot of steps compared to "install xcode".
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
I have just finished learning application development on android platform, as In matter of language it was easier to understand. However the convention drove me crazy yet simple enough to understand. Now the dillema is I am about to jump in iOS development. Language part wont be hard to understand but I am bit worried about design pattern or use of Xcode.
What challenges I might face which differentiate these two develoment enviroment? And which one is easier to deal with and more productive?
See the "Java" section in this post. Ease and productivity are in the eye of the beholder. Many find Objective C to be incredibly natural and beautiful. Others find it bizarre and frustrating. If you're willing to embrace the iOS way of doing things, you can pick it up very fast. If you fight it and try to keep coding in Java ways (or C way, or C++ ways), then it will be very challenging. The trick is to really work through the tutorials and not just try to figure out "how do I do X that I'm used to doing?" Often the answer is "you don't do X. X happens automatically when you do Y." But the place to start is working through some tutorials.
The Apple documentation is mostly excellent. You should spend time reading through the Programming Guides. Don't just jump to the References. You'll be very confused.
Now i can give you some facts about both that i find really important for clearing your dilemna :
1. Ios development is really costly as it requires a mac as well a hardware device such as iphone to stimulate which costs much more than other phones that you might already know by yourself
2.Android developer have to pay 25$ to become android developer while for Ios it take 100$ per year and your subscription dies after that so yeah again Ios costs much more.
3.Now, swift is used in case of Objective C which is incredibly easy,efficient and I ensure you will fall in love with it(according to me its easier than java itself).
4.Lastly,I myself have worked with the android studio and believe me, Xcode is now easier than android studio(with bugs fixed).
So,the zest is Ios development is costly but its worth learning it and now apple shifting to the new Swift, its super easy now and for the layout stuff don't worry, with time you will get a hang for it
Android and iOS operating system are best at its place. Both are doing good, but it is obvious that one OS can have any feature as pro while other can have it as a cons.
Well, this is my personal opinion that i will choose Android over iPhone for below reasons.
Obviously the first is Price. You can afford a pretty good Android Smartphone with awesome hardware configuration in same or cheap than the price of the iPhone.
Customization: You can customize the way you want like install other OS like Cyanogen and a lot custom Android OS is available over internet (Flexible OS). iPhone is limited to customization. Though jailbreak option is available, but who wants to knowingly spoil that handsome price iPhone. Tons of customized screen launcher available in Android.
Battery: Early battery drain is always the problem in iPhone. Well, battery saving gets better in Android with the Doze feature introduced in Marshmallow. And the good part is, most Android phone’s battery are replaceable and it is pretty easy stuff as compare to iPhone.
Multi-tasking support with multi-window feature and flexible widget in Android.
More free apps as compare to iOS
Custom ROMs. Android gives full control (root) over your phone as compare to iPhone
Memory: In iPhone memory comes at huge cost and no expandable memory as compare to Android. Android supports expandable memory and it does not get that pricey with the increase in the in-built memory
Developer: For those who are willing to develop Application in Android can get the huge community support and can build apps on the affordable hardware rather than iOS. iOS hardware comes at handsome cost as compare the Android.
Well, above are the few points that makes me feel Android is better than iPhone. And no offense to the iPhone users. iPhone is best at its place.
Ref : enter link description here
Hey,
I'm writing a simple game based on my physics engine for Android (in Java). Because I want to play with some special graphic effects performance is very important for me.
I read on the Internet that you can write an application in ActionScript3 and then just export it as an iPhone/iPad or Android application. That means, I wouldn't have to rewrite everything from Java to Objective-C if I wanted to make version also for iPhone.
Do you have any experience with writing games in ActionScript3 for both Android and iPhone/iPad? Are there any significant advantages / disadvantages?
I have made games with both AndEngine and air for android. Air for android is vastly slower. If you game needs performance, Air 2.6 - the current release - will not be able to handle it.
AIR 2.6 can handle simple games. One with a little performance to spare.
I am hopeful that AIR 2.7 (in beta now) will improve things, since it supports OpenGL. But for now I would have to say stay away from AIR for performance games.
To see an example of a simple game made with AIR, check out this one made my a friend of mine:
http://www.appbrain.com/app/kibble-katchers-free/air.com.munchiegames.KibbleCatchersFree
It plays OK, but chugs sometimes if you have a lot of things going on at once.
If your game is going to be more intensive than that, pass on AIR.
In my experience, it's always better to write applications in the native language for the device. Of course, depending on the scale of your game, the advantages may not matter. When using Flash to export to iOS, you are limited to what you can access on the phone (like UI widgets and features like accessing the camera). I've also read that Adobe is not going to include this feature in future versions of the Creative Suite. So you may lose support for your game. In my opinion, there are better tools to develop for both devices. Check out Corona or Unity.
MY impression is no, not a good idea until they get the performance up. Though this post makes it look pretty decent. Ive done an app for the playbook, and the simulator rendered it just fine, but once I saw it on the actual device it was pretty slow. I didn't realize there was a scroll box already there, and I made my own implementation with on enter frame listener and it was pretty slow.
If you're going for an iOS, then you end up with bigger file sizes. So while flash/as3 is great for prototyping and some simple applications, I would suggest using lower level language that doesn't have to be reinterpreted.
Perhaps the AndEngine could be something for you. It's a 2D Game Engine for Android and it supports physics. I played a little bit with it and it's really powerful but simple to use.
Performance is great, but think also about your game success in audience coverage - the flash is easy on web embedding. The flash is platform and its VM continuously enhanced due performance needs as well as mobile hardware. Try to write once and for all as possible)
I am an experienced Flex and Air Developer and love Android having owned a G1, a milestone (Droid), a Nexus One, a Galaxy S and now a Nexus S. Understandably I am interested in developing Flex applications for Android.
I have just started working through the flex for android in 90 mins tutorial here:
http://coenraets.org/flexandroid90/FlexAndroid90Minutes.pdf
The very first step says that I have to create a Flex Mobile Project.
I was under the impression that the whole point of Air is that the same application could run on many different platforms. I was intending on creating an air app with different skins that could be swapped in and out depending on the platform it was running on. This seems to imply that I will have to compile my Air app once for desktop and once for mobile.
This isn't the end of the world but it's not quite how I expected it to work. I suppose that if I am creating mobile specific skins then I may as well create a mobile specific app.
Is it possible to create one Air app that will run on both mobile and desktop? Is this a good idea?
I don't think it is a good idea to write one app for the desktop and for mobile. The views are very different, and the user experience is very different.
Ultimately, this is one of those cases where separated presentation patterns really helps you. You can write all of your app and behavior separated from your view but slap a different view (desktop or mobile) on top of it for the right experience on the right platform.
Check out MVC, MVP or Presentation Model for different approaches, if you are not familiar.
Its a common problem, in the Java world we had the whole Java SE/EE/ME with JME being for mobile devices. Even the newest phones, some of which have, or soon will have, multiple cores are still much more limited devices than desktop/laptops. The overhead is just too great for the standard libraries, too much ram and cpu needed to load and run those libraries. So we have Flex Mobile, JME engines, and our Android favorite Dalvek.
Has anybody blogged about this comparison, or does anyone want to give it a shot here? Would be nice to see some reasoned thoughts on Adobe AIR on Android vs. the "native" Android SDK (in Java).
Edit: Despite few views and no answers, I'm leaving this question up here since it's a topic that needs to be covered at some point... but if it gets no attention I'll delete it in a few days.
I think it's ultimately very similar to the question of whether to use AIR or Java for a desktop application. Ultimately it comes down to three points:
Does AIR do everything you need? Obviously the android SDK gives you complete access to device capabilities, but AIR purposely doesn't, in order to stay portable. For example, AIR may not support intents, at least initially (I don't think Adobe has announced yet one way or the other). Also, AIR requires Android 2.2. If those limitations are troublesome, regular android SDK may be best.
Are you looking to make something that would be well-suited to doing in Flash? If you're planning a design-heavy app with animations, video, sound, or the like, then building it in Flash may be significantly easier than using Java. On the other hand, if your app will be pure code using only standard visual components, then it might not make a lick of difference which platform you use. Or on the gripping hand, if you'd have existing Flash animations or the like, then trying to shoehorn them into a Java app will be bothersome.
Are you targeting other platforms besides Android? If so, AIR may be a big win, as the same app content should run on windows, mac, linux, and later on, other devices that plan to support AIR, like Blackberry, some TVs, blu-ray disc players, etc. If you are only targeting Android, AIR may lose some of its appeal.
I hope that helps some. Realistically, unless you're effectively locked out of using AIR because you need something it doesn't give you, or effectively locked into using AIR because you're doing design-heavy work and you need the tooling, then I think the pros and cons of the two SDKs are largely questions of convenience. Either platform will work, so it's merely which will get you to the finish line the fastest and most reliably.
One issue to consider is compatibility with Android devices. Both fancy smart phones and cheap phones run in Android, but they don't have the same capabilities. Even if you application is simple or can be done beautifully in AIR, its relevant to mention that AIR is not compatible to all Android devices.
Some very popular devices currently sold (such as Samsung ACE and other "cheap" devices) use ArmV6 chips, and AIR or Flash are not compatible to this architectures, even when running on Android 2.2 or so.
AIR is interesting because same development works in different technologies, but consider that AIR doesn't run on "old" iPhones either, its only guarantied to work on new technology with big processors.
Check this Adobe link http://www.adobe.com/flashplatform/certified_devices/
AIR should be ruled out in your decision of technology if in your requirements you are targeting as much phones as possible, including those that are not so fancy or new.
I have experience with AIR mostly and little with Android SDK when I was building a native extension to AIR. My biggest hurdle with AIR is it's immaturity, it's bugs, and it's inconsistent behavior. Yes, you can go to the shiny page at adobe.com and see how cool is the AIR... All bright with tons of features which seems to cover all your needs. Yet, once you start building your app you'll find many ugly surprises:
Stage text in not working appropriately. link besides this bug StageText has few other bugs, like behavior in Scroller for instance.
Sound() object doesn't play the stream (it does on emulator only). link
Lack of features like AEC makes AIR useless to whole list of chat applications, as you'll will hear echo and screaming noise. link
Overloaded (and immature for mobile) Flex SDK (I hope folks at Apache will rewrite it from 0 and make it more manageable).
No H264 support on iOS devices: link (yes, I know it's Apple problem, that they want to control HD delivery on their platform, still it's Adobe problem too, as they couldn't fight right to bring their technology to forefront).
Sound object doesn't take variable bidrate (only 44.1KHz is possible). Flash "second generation" Speex codec samples at 16Khz. Now, try playing this back through Sound and you'll enjoy a funny circus. At the end you will need to write your own upsample algorithm.
I'm sure people will add more to this list. So, my answer would be native SDK is more preferable for anything serious. You won't work like a QA person with it - testing countless little examples trying to understand why an AIR feature not working, shuffling internet for answers and looking at AIR bug database... only to find that critical bugs are sitting there from release to release. That is my experience with AIR. Going native SDK makes your application not really "cross-platform", but AIR SDK can't claim this title anyway for anything more serious then couple of "Employee directory" examples. And if you will need to build for the other platform, you will just use native tools for it.
GL.
I would like to learn mobile development for fun and as well to enrich my resumé.
I'm currently developing in C/C++ at work on Windows (and sometimes with C# that I don't like too much). I have a nice Android phone and an iPod touch, so I wonder what is the best enviroment on which work.
Sure iPhone/iOS now has huge user base and a lot of attention, but it is used just i
on 3 devices from a single vendor (iPhone + iPod touch + iPad), Android instead is used by a lot of vendors, however is not gaining the attention it deserves.
I own a MacBook white so I can develop for iOS (I even have installed XCode but it seems a mess to me), but I prefer to work on Windows and I downloaded Android SDK + Eclipse and it seems much more easy given my Visual Studio background. I also know some Java and I'm already resigned to Linux.
So... which one should I learn, also given my background?
I don't think there is a real Answer to your question but since you already have the Android SDK and Eclipse set up why not try that first. Then if you don't like it try something else.
I found it very easy to deploy application on the Android Market and the registration fee is very small.
Android programming is a little bit difficult. Apple provide, in its development tool, a storyboard system that make very simple to control the flow of the app. Android is a bit more complicated.
On the other side, Apple programming is expensive: you need at least a Mac Book, an one between Iphone or Ipad. Last but not least, you need to sign to the apple developer program if you want to publish the app or to test it on a real device, which means 80 dollar/year. You can develop even without the program, and without a real device (iphone or ipad), but this means no possibility to test on a real device, which provides some characteristics that the simulator doesn't provide. And still you need a Mac, for Xcode (the apple developer tool) is only for Mac.
I believe though that is only your choice. Personally, i would begin with Apple in order to start with something that is simple at the beginning, but only if you have all the instruments listed above. For fun, Android is better: more complicated but free.