

Do iOS apps crash more than Android? - robkwok
http://www.forbes.com/sites/tomiogeron/2012/02/02/does-ios-crash-more-than-android-a-data-dive/

======
extension
It really irks me when crashes are made out to be the result of user actions,
or some inescapable act of god. Excepting the very rare hardware fault,
crashes are caused by a _programmer error_. PERIOD. That is all that really
matters from the user's perspective. There may be some way to work around the
bug by tinkering with things, but nothing the user does can ever _cause_ a
crash.

Also, it wouldn't surprise me if iOS apps crash more than Android apps,
because iOS doesn't have virtual memory. When an iOS app runs out of physical
memory, it gets killed. This was allegedly a design decision.

~~~
cloudwalking
I have been bitten twice by changes to the iOS SDK. An app that ran fine,
without error, on one version of iOS would crash on a later version.

It's always something caused by _a_ programmer, but not necessarily the app
programmer...

~~~
allenbrunson
That's not really proof that you were doing things correctly. You could well
have been relying on undocumented corner case behavior that just happened to
be true in one version of iOS, but not the next.

Awhile back, a bunch of apps got updated with what the authors called "fixes
for iOS5." I have an app on the store that works all the way back to iOS 3.0,
and it needed no updates at all for iOS5.

Occasionally Apple _does_ take away documented, working APIs, but it's rare.
In general, I'd say an app needs updates for a new version of iOS mostly
because the author assumed things that weren't true.

~~~
leviathan
I believe most of the "fixes for iOS 5" and "adding iOS 5 support" updates are
just marketing strategies. It makes users feel that the app is up to date.

I did this recently for an app that needed no update other than a small bug
fix, but I slapped on a "support for iOS 5" just for good measures.

------
kalleboo
My anecdotal evidence co-incides with this, I used to use Android and had
barely any crashes (the only ones were generally specifically reproducable
bugs), and now I use iOS and I see a lot more.

I always attributed it to memory management - manual memory management is
simply a lot easier to f' up than garbage collection. Meanwhile Android apps
are slower and probably consume more memory. It's all tradeoffs.

------
zmmmmm
I get loads of iOS app crashes. My wife routinely crashes the browser on her
iPad. It is interesting though that unlike Android she never thought the apps
were crashing, because they just silently exit and return her to the home
screen without any message. She always just assumed she accidently exited the
app herself. On Android on the other hand you get the ugly 'Force Close' and
other unfriendly messages. I always wonder if this contributes to commonly
held belief that iOS apps are of higher 'quality' (obviously other things like
smoothness and design do too...)

------
asynchronous13
Sorry, but this analysis does not seem useful.

In the subset of apps that 1) are tracked by crittercism, and 2) crashed, here
is some data. Great. I'm more interested in the number of apps that did not
crash - but those have already been filtered out of the data set. Also
important if you want to make a meaningful comparison, what percentage of apps
on each platform are tracked by crittercism?

Way too many unknowns to draw any meaningful conclusions from this data.

------
zedwill
I develops applications for a living on both android and iOS, and as a
developer, each one has its quirks.

Iphone apps tend to be more robust. The objc language has some interesting
features like being able to signal a nil (the objc null). You can chain
operations without having to care about fails in the middle, and check the
final result for nil. This is the equivalent, saving the distance, to the java
null pointer assignments, which is perhaps one of the most common errors.

The tricky issue about objetiveC and iphone is memory usage. Memory that is
not correctly managed, like free twice, it is going to fail crashing the app
(the EXC_BAD_ACCESS error). Getting this right takes a considerable amount of
time and effort. Tools to make this easier are the SDK memory monitor, static
code analyzers like clang, or the automatic reference counting (ARC) which
lets the compile handle _release_ and _retain_ operations for you.

------
fasteddie31003
I suspect that 75% of the crashes on iOS are from poor memory management due
to naïve app programmers. Android app developers don't need to worry about
memory management, because Java takes care of this automatically. I suspect
with iOS-5's new automatic reference counting, iOS crashes will decrease.

~~~
Aqua_Geek
I agree. ARC should help solve some of the memory management issues of "naïve"
developers, particularly with its zeroing weak references feature. Then at
least delegate callbacks from URL connections get passed to nil instead of the
view controller that just got popped off the stack, for example.

At the end of the day, though, there's only so much you can do to save a
developer from himself.

------
warmfuzzykitten
YMMV, I guess. I believe there's a general rule that the more crappy apps you
put on your device, the more often you will see crashes. I almost never see an
app crash, the worst offender over the years has been the New York Times app,
of all things. I periodically delete it and read the Times in Safari until
they ship a new version. My wife OTOH plays a ton of games and sees a fair
amount of crashes. I'm guessing games are not as well-tested, but also, more
apps will mean more crashes. Crash, BTW, means "freezes up". Easy to recover
by pushing the button and the phone and the rest of the apps are still fine.
The phone itself has only crashed a couple of times over the last three years,
requiring a power off and restart.

------
zrgiu_
I have almost never had an iOS app crash on me. I get crashes in Android apps
almost weekly. I honestly don't know where those guys are getting their data,
but I really don't believe it.

It's true, it's a lot easier for developers on Android to fix bugs and quickly
update their apps because of the lack of an approval process, but that also
lowers the bar a great deal on the quality of apps (a lot of which never get
updated).

Edit: I don't know how this goes on iOS, but for Android Market apps, you can
see all crash reports straight in the publisher console, without the need for
3rd party services.

~~~
wvenable
I get iOS app crashes all the time -- and not just third party applications.
The app store seems particularly buggy and in the 5 months since I've had my
iPhone; crashing on multiple occasions.

The worst problem I've ever had is some kind of corruption in the photos app.
I thought perhaps it was a corrupt file but I couldn't launch the Photos app
to delete it. I couldn't launch the camera app either. There's no way to
delete any of the camera roll photos from iTunes either! I went over a month
like this until I used a third party desktop application to delete every photo
on the phone -- and that didn't work. So I started deleting random cache file
in the file system before it finally started working again.

iOS apps crash pretty silently -- they just disappear. That might make the
appearance of crashes much smaller.

~~~
zrgiu_
wow, that's quite a bad experience. is your iPhone jailbroken ?

~~~
wvenable
It was not at the time. I've only been jailbroken since the untethered for iOS
5 came out.

I would have been better off it was jailbroken because I could have more
easily navigated the file system and deleted the corrupt image cache right on
the device.

------
andrewmlevy
I mention this in the article, but I want to re-emphasize how the approval
time is a huge factor. We've had Android developers submit fixes the same day
they've discovered a bug on our platform, while iOS devs wait in the queue.
You could argue this allows buggier apps to be submitted in the first place,
but this sample is taken from devs who use our service and obviously care
about producing high quality apps.

(To be fair the iOS approval process has sped up considerably, even with the
number of submissions growing)

------
pixie_
I've made apps for Android and iPhone. The iPhone crashes less. I've found in
a lot of cases that null pointer exceptions that usually would kill an Android
app and handled silently by iPhone because in Objective-C passing a message
(calling a function) on a null value is just ignored. I wonder how many other
iPhone apps have avoided crashing because of this behavior.

------
Terry_B
I suspect that the recent addition of automatic referencing counting will help
a LOT for iOS apps.

~~~
extension
I wouldn't hold my breath. For the most part, if a developer can't be bothered
to clean up their memory manually then they probably can't be bothered to use
ARC properly. It's not trivial: [http://longweekendmobile.com/2011/09/07/objc-
automatic-refer...](http://longweekendmobile.com/2011/09/07/objc-automatic-
reference-counting-in-xcode-explained/)

------
stephen_g
I get _an_ iOS app crashing all the time. The Facebook app closes unexpectedly
on me a fair bit, and I've had Safari close two or three times, but apart from
that everything I use seems to be very stable...

------
tszming
I think the iOS AppStore reviewers should be credited for rejecting a large
number of unqualified apps.

------
drivebyacct2
I've been repeatedly shocked about how many of my friends give me crap for
liking Android and then talk about their apps crashing frequently. I can't say
I've had a single app crash on my Galaxy Nexus and that includes running
nightly CM9s.

