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.
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.
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...)
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.
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.
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.
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.
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.
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.
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.
The last two or three iOS updates caused quite a few crashes until some updates rolled in, and beyond that I still get some every day. Most of the on my iPad, mostly due to the fact that I use it a bit more and with apps that deal with more data (e.g. GoodReader) or network traffic (browsers, Flipboard, Alien Blue).
But that's anecdotal evidence anyway, and with my usage pattern you'd just need a few "black sheep" to really bring down the average.
My Android usage isn't that heavy, so not really comparable. Not that many crashes this far, but especially in the early days quite a few freezes.
You only see crash reports in the publisher console if the user reports the crash. In practice, users will send a report only a small fraction of the time, so that's where software that automatically does it all the time becomes very useful.
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)
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.
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...
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...
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.
[+] [-] extension|14 years ago|reply
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|14 years ago|reply
It's always something caused by a programmer, but not necessarily the app programmer...
[+] [-] unknown|14 years ago|reply
[deleted]
[+] [-] zrgiu_|14 years ago|reply
[+] [-] kalleboo|14 years ago|reply
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|14 years ago|reply
[+] [-] asynchronous13|14 years ago|reply
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|14 years ago|reply
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|14 years ago|reply
[+] [-] Aqua_Geek|14 years ago|reply
At the end of the day, though, there's only so much you can do to save a developer from himself.
[+] [-] warmfuzzykitten|14 years ago|reply
[+] [-] zrgiu_|14 years ago|reply
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|14 years ago|reply
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.
[+] [-] jsankey|14 years ago|reply
Personally I see crashes on iOS a couple of times a week, and I hardly use third-party apps. Most of my crashes are Safari!
[+] [-] msbarnett|14 years ago|reply
I guess "Among apps that use the Crittercism service, iOS client applications crash more often" was a bit too wordy.
[+] [-] mhd|14 years ago|reply
But that's anecdotal evidence anyway, and with my usage pattern you'd just need a few "black sheep" to really bring down the average.
My Android usage isn't that heavy, so not really comparable. Not that many crashes this far, but especially in the early days quite a few freezes.
[+] [-] sskates|14 years ago|reply
[+] [-] andrewmlevy|14 years ago|reply
(To be fair the iOS approval process has sped up considerably, even with the number of submissions growing)
[+] [-] pixie_|14 years ago|reply
[+] [-] Terry_B|14 years ago|reply
[+] [-] extension|14 years ago|reply
[+] [-] stephen_g|14 years ago|reply
[+] [-] tszming|14 years ago|reply
[+] [-] drivebyacct2|14 years ago|reply