Standing Up For Android
shiftyjelly.wordpress.com
shiftyjelly.wordpress.com
I don't know when ShiftyJelly released their podcast app initially but this might be another reason that their podcast app doesn't sell as well on iOS.
Podcasts are a niche activity anyway and I believe that majority of users on both platforms are highly knowledgeable and quite willing to search for alternate clients. Podcasting clients have also been featured by both Google and Apple in their respective app stores. I personally suspect that the reason for PocketCasts recent revenue surge on Android is because it's currently one of the highlighted apps in Google's Android Market.
The 51/49% split there is interesting.
Every time you unlock your phone you see the weather.
#1 The Google ecosystem. I'm already committed to gmail, google voice and google calendar via multiple google apps accounts (my own personal gmail, plus a google apps work account). Being able to log into my google apps accounts once on the phone and have everything (contacts, events, voicemail system, market apps, etc) just magically sync up on all my devices is huge. No plugging the device in to a computer to sync everything up via "gTunes" or whatever... It Just Works.
#2 Google Nav turn by turn directions. I wouldn't even consider buying a phone without a built-in turn by turn system as good as Google Nav these days.
Other than those two things, all I ask for is a good web browser, which all of the platforms have these days. Everything else (market app selection) is totally optional (for me, YMMV of course).
I'm not sure Nokia would be right for him, though- I have a (Samsung) Windows Phone and the e-mail is great, but it's not a Gmail client.
Device testing on Android is way, way easier than on iOS.
Once you've got over the pain of setting up a provisioning profile and developer certificate, what in particular is easier on Android?
Or is that your only concern? Debugging on iOS is a one click thing once that's set up.
Part that its a split, android has a shell which can massively aid debugging, Xcodes integration with gdb seems better / easier than the android debugger, for me that still swings it 70/30 towards android
1) enable USB debugging on your Android device
2) connect it to your computer with the USB cable
3) deploy your app from Eclipse
Took me one minute and I could test the app instantly on the device.Of course, the best option is to connect your Android device and test/debug on the device itself.
I'm another Android developer who only ever tests on a device. I wonder if running Android x86 in something like VMWare might be better?
FWIW, the Google TV (Android 3.1) SDK can run in KVM on Linux (current Google TV hardware is Atom-based); some of the work is already there.
2) Plug it in.
3) Use adb as normal.
I'm sorry, but if you hate the Android emulator (I find it slow but tolerable in a pinch), then it's easy to use a real device to do development on.
I don't think anyone denies that there are Android phones with amazing hardware specs (great screens, slim designs, fast CPUs, etc.). I just have trouble believing that people (other than the exceptions I mentioned earlier, which I highly doubt are a significant percentage of Android users) who have used both Android and iOS truly prefer the Android OS.
* They wanted a smartphone, but they live on the east coast (NYC). For sometime, iPhone was only on AT&T, and AT&T had a reputation for bad reception there. I believe this has improved in the recent years, though, and well, Verizon and Sprint are also in the game now.
* They made an arbitrary choice based on a current promotion, TV ads, look of the phone, screen size, etc., without any deep knowledge of the app ecosystem or hackability. There were also a couple who have never owned an Apple product, but felt that Apple was too trendy, and wanted to get something "different."
IMO, Android and iOS are two very different beasts that look the same if you were to just compare the specs. Both have phones with touch screens. Both have apps. Both have cameras, etc, etc. This is how users compare. We know that these are not the useful criteria for comparison. But how would you reasonably explain this to a non-tech user?
Things like live wallpaper make a great, great first impression. Many people have seen an iPhone, then the see the Samsung "beach" live wallpaper and say "wow".
That's probably true to some extent, and Android should still get credit in those cases because it was specifically designed to support a wide variety of hardware. Contrast with iOS which was designed to produce the best possible experience on a few specific hardware platforms, which means that iPhones are stuck on 3.5" screens and resolutions that are exact multiples of the original.
When I'm lost in some interface I can usually find my way to what I wanted or find my way out using those buttons. With my iPod Touch, I end up mashing the home button and starting over, which sometimes just doesn't even do what I wanted.
You might say that I am just used to Android, and that's probably true, but I have had the two devices for almost the same amount of time, and use them both daily. I just prefer Android. Yes, iOS is way smoother, the UI is prettier, and the hardware is even nicer in some cases. But when I get lost or struggle with the interface, somehow it really sticks out on iOS. (I should mention that I get frustrated with Android plenty too)
It's the kind of attitude in your last sentence, suggesting that you cannot fathom why anyone would choose the objectively inferior Android OS, that people get annoyed at in these horrible discussions. It boils down to taste, and to suggest that some people's preferences are not true is unfair. (I'm probably doing you a disservice, I'm sure you're not a raving Apple fan. But you know what I mean, I hope)
(I also wrote a long description of an example of getting lost on iOS but it was really long winded so I trashed it. I can explain it if anyone is actually interested though.)
Android is more open, and its apps have a lot more power over the phone. iPhone is smoother and its apps tend to perform, look, and behave more consistently. There are probably also "killer apps/features" that could make or break one platform for certain users. If you need Flash, you need Android. There are probably many examples of apps that only exist on one platform.
I'm really not much of an Apple fanboy, but to me, smooth performance is an absolute necessity. Simply put, the abysmal performance of basic native widgets on Android is an absolute deal-breaker for me. It so happens that I also generally prefer the design of iOS and the Apple app ecosystem, but obviously those preferences are completely a subjective matter of taste. My first smartphone was a Palm Treo 650 that was extremely snappy, and maybe that's what initiated my mindset, but I won't ever carry a smartphone that isn't. If, at some point in the future, there weren't any smartphones that were snappy, I simply wouldn't have a smartphone (actually, I don't even have one now, but I'm considering getting an iPhone 4S).
I'll also add that preferring Android hardware isn't one thing it can be one or many of all sorts of features:
- Larger screen (or smaller, though this is less common)
- Hardware keyboard (slider or Blackberry/Treo form factor)
- LTE (and faster HSPA+) support
- Removable / upgradeable battery
- Expandable / removable storage
- More flexible ports (e.g. HDMI, USB host support [control your digital camera!], etc.)
- Other niche options (e.g. NFC, gaming controls, stylus support, etc.)
Not to mention the dimensions that the iPhone only caught up on with the 4S like:
- Faster CPUs / more cores
- Higher-resolution camera
And on and on.
Having my upcoming calendar on screen at the same time as the phone/sms/mail/web buttons just works well for me. I imagine others would get similar value out of a music and facebook widget combo.
For the OS, I prefer Android because it is more flexible and smarter. Apps that are doing stuff in the background behave like expected, actually doing stuff in the background. The back button is standardized, apps on Android collaborate more because of the well designed intents system, I like my interactive backgrounds or screen widgets, I like my task manager, I like my Wifi tethering without paying a freaking tax for it, I love that you can install apps from outside the marketplace without a jailbreak, I love the way my contacts are fully synchronized with Google's Contacts, I love how Facebook adds new phone numbers and updates the pictures of my contacts list, I love how upload buttons in the browser are NOT disabled, I like the turn-by-turn directions of GMaps, I like the awesome/native integration with GMail, I like that I am allowed to have Flash on it (I rarely use it, keep it disabled, but it is useful when I need it) and I could go on and on.
As for the marketplace, I like how unrestricted it is. I have an app that blocks calls, SMS messages and deletes all logs of blacklisted phone numbers. This was the first app I installed on my Galaxy S since it is so useful to me. And when I tried it on the iPhone, apparently apps like iBlacklist need a jailbreak - I mean, WTF? That's not a smartphone.
The iPhone 3GS I bought because people like you claim it is so much better. I bought it without a contract so it was a lot more expensive than my legally unlocked Galaxy S purchased with a plan. I regret buying it.
Unfortunately there's a really loud minority of iPhone users that are recommending iPhones, getting really heated over Android. So here's what I suspect - I suspect that this is a side effect of buyer's remorse, trying to justify an investment that you know in your heart is a losing bet (pretty sure this syndrome has a name, but I don't know it).
I wish he'd elaborate on these data points. Not doing so, I'd still believe that Marco just hates Android.
Now, looking for all of this bits is a hassle. I you are really interested, looking for his podcasts on 5by5 could be a alternative way.
I wonder why someone from Google's Android team does not officially and publicly extend an offer (as a rebuttal) to help develop Instapaper for Android.
Don't get me wrong, I love Instapaper and I would like to keep using it, but Marco's blatant dismissal of a large population of users forces me to consider alternatives.
That's his plan.
It's a substantial change in opinion after six months.
I have both an iPhone 3GS and a Galaxy S. Surely, the 3GS is a little old now, however it is upgraded and I like its design more than iPhone 4. I sometimes have days when I switch between them depending on my mood. In general I prefer my Galaxy S over my iPhone.
The iPhone does have better 3D games. Maybe that's because Android upgrades are so slow to reach customers, so the sane thing to do for developers is to target older versions of the OS and be mindful about lower-end devices.
I can understand why supporting 2-3 major versions,
dealing with dramatically different screen sizes, etc
just seems like too much trouble
Meh, you have to do that already for iOS. The 3GS is still on sale and lacks the retina display, so it has a lower resolution. Then there's the iPad, which is completely different. Also you should expect a future iPhone model with a bigger screen.Making your interface scale from smaller to larger is a given nowadays. Maybe more problematic on Android, however when developing for Android you save time in other areas as IMHO, Android's APIs and the environment on the whole is higher level and more flexible.
1) Use the compatibility library for lazy-loading and easy reloading of data via CursorLoaders and SimpleCursorAdapter. This means mostly abandoning ArrayAdapter (it can easily cause eternal garbage collection if your dataset is slightly too object-heavy), assuming your data is mostly expressed in rows in the SQLite database.
2) Use Content Providers, as this is the only simple way to make the CursorLoaders work. Lots of boilerplate and semantics to accidentally get wrong, and URI overhead that you really don't give a damn about.
3) Either use a service or something resembling one that's initialized in Application#onCreate() to make API calls that store into the database (having them run inside an activity can cause nasty bugs if you're not careful as AsyncTasks are unceremoniously killed when rotation causes the activity to be killed and recreated)
I'd have to say as a developer of both iOS and Android, iOS is way, way more flexible, and gives you better APIs, and frees your mind to work on interesting problems. Android has too many development dead-ends that are easy to waste time on, and an irritatingly slow build process, if you want to ensure your build doesn't have any bad information from dirty caches that failed to clean. I can't say how many times I switched git branches only to find images and color resources still stuck on old values, even when I was exporting to deploy the apk.
tl;dr: Even if Android is worth developing for, it's still a time suck because a lot of little things cause problems. Nowhere is it made more clear that simplicity requires complexity than in the comparison between iOS and Android, because Android shoves all of that complexity in your face with not a whole lot in terms of guidance to guide the way. Meanwhile, Apple's documentation is world-class.
EDIT: not to mention different devices appearing differently because of stupid default themes, the lack of a stable image loader service that doesn't cause memory and application response issues at volume, crashing inexplicably because some bitmap refused to decode, random devices with non-compliant h.264 decoders failing on perfectly valid videos - randomly during successful playback, too! - vocal commenters/raters using extremely old devices complaining about the lack of support, occasionally nondeterministic state preservation when paging out views/activities, and a fuckton of other shit that's annoying as hell.
iTunes is the mothership of all podcasts, while on iOS podcast lacks serious features still it works and that's most people need.
Fortunately, there are a couple of excellent $2 apps to plug the hole.
As an iOS developer I totally empathize with marco and even I have decided that I will never touch android.Here is why?
(Note : Like most personal reasons these are more emotional than logical.Trying to logically argue with me on this is a waste of time.)
1)The most important reason is that it is simply not a toy I want to play with.If developer X made a million dollars making app xyz then good for him.I dont really care.If I really wanted to make money I would be doing sales pitches instead of coding anyways!I played with an android device for a few weeks and I had to throw it against the wall in frustration a cpl times.
2) Eclipse-Maven makes me want to throw up.
3) Java makes me want to throw up.
4) Android Source code makes me want to throw up.(Especially those Setter and Getter methods ewwwwwwww!).It just looks so much like enterprise software and lacks any love.The guy who wrote ListActivity couldnt make the table bounce?
5) Doing layouts through XML and the fact that I have to literally remember all those xml fields makes my skin crawl!
6) Debugging errors on eclipse (especially those nasty ones in layout.xml or strings.xml) makes me want to become a manager.
7) When you get stuck on hard problems and try to google your way out,it mostly gives you nothing except for official android documentation which I am not really a big fan of.
8) CoreGraphics,CoreAnimation,Cocos 2D...nuff said!
9) Lastly most of my favorite hackers hate it too...I learn fastest by reading code written by expert hackers and in case of android there is really nothing much out there to be inspired from!
Saying that you are arrogant is an understatement.
As an example, it is Google's fault but try dealing with an application that uses Fragments that also wants to utilize the non-Fragment Map View.
The best resource for real Android is CommonsWare.
As such, I found reading your comment was a complete waste of time as well.
What can be said for certain is that there is definitely no value to be gained from your comment...:)..peace!