8 ms·
>I have occasionally downloaded apps through one of the APK downloader services mentioned in the article comments -- I've had mixed luck. One of the biggest is
by jlujan 12y ago
>I have occasionally downloaded apps through one of the APK downloader services mentioned in the article comments -- I've had mixed luck.
One of the biggest issue of running Apps (open source or not) is the inclusion of the Play Store API in the app itself. These apps when not logged into the play store usually crash with NullPointerExceptions. Please... if you are an Android developer... expect your third-party services/APIs to be missing or to crash and handle that case... If you include the Map API or several other Google Services APIs in your app and the Play Store is missing or the user does not have a registered account... calls to those services will most likely result in NullPointerExceptions. Tell me to deal with it, don't crash.
- voltagex_ 12y agoI wonder if it's possible to build an emulator image based on CyanogenMod with no Play Services. That'd help with testing the apps, but it's another "device" to target. Developers would be able to see from the crash reports how many NPEs from missing Play Services they're getting and prioritise accordingly.
- vetinari 12y agoNot only it's possible, it is supported out of the box. When you are configuring the emulator, you are choosing the OS version (API level). You have to choose, whether you want "Android" or "Google API".
- nly 12y agoPresumably if developers only distribute their app via the Play Store, they aren't too worried about whether their app users are using the Play Store.
- jlujan 12y agopresumably, as a programmer, you check return values. Especially if they could be a null reference
- mike_hearn 12y agoAny reference in Java can be null, as is the case in most languages. So developers only check the ones they know "could" be null, in normal operation. If you only distribute your app via the Play Store, attempting to access it will never fail, thus there's no more point in checking for null pointers than there is in checking the result of String.split: it will never fail, short of something wacky and unexpected like a broken JVM.
- jacquesm 12y ago> So developers only check the ones they know "could" be null, in normal operation. Not the good ones. Normal operation isn't when you're dealing with a mobile device, there could be any number of reasons why your app can't reach a certain service delivered by some API so better to be prepared for that eventuality.
- 67726e 12y agoYes, a good programmer writes a robust application, but ignoring the specifics of this case is being entirely disingenuous. If I write an app to use the Play API and only distribute it via the Play Store then there is no good reason for me to spend my time writing `if (foo != null)` all over the place to placate someone trying to circumvent the official way of downloading my application. You have to balance the tradeoffs of bloated code and pointless error checking with adding features and improving the program. The more error checking code one writes the more one must maintain and the higher the potential for bugs.
- DominikR 12y agoI agree that an app shouldn't crash, but piracy is a problem. Google In-App purchases are safe, so if that's how you monetize, I don't see why the app should be allowed to work anywhere else but in Google's environment. It's different if the app is open source or you don't need to monetize (sadly, not everyone can afford that luxury), but even there it depends on how important those Play Store API features are to the functionality of the app.
- king_jester 12y agoApps that are provided with for free on Google Play, IAP or no IAP, don't have any fear of piracy from being installed from another source. If Google Play is not available when your app runs, if the user could use that app for some purpose, it is a really good idea to make sure it doesn't crash. Indeed, most free apps with IAPs don't require you to buy the IAP immediately at launch, you can use the app to some degree.
- personZ 12y agodon't have any fear of piracy from being installed from another source Even if they're currently fully unmonetized, many such apps exist on the Play store because they can be updated at any time to include in app purchases, etc.
- DominikR 12y agoIt just depends on how much extra cost is invoked by having more users who never pay. (for example support, server costs) I just don't think that you can follow some rule dogmatically, because for some it might be worth the exposure, for some the extra costs might outweigh the benefits. This is something that I would decide on a case by case basis.
- npsimons 12y agoI just don't think that you can follow some rule dogmatically Sure you can, if the rule is "don't write shitty software that crashes". In which scenario do you think users are more likely to buy: when an app crashes with no indication of what caused it, or if an app pops up a message along the lines of "we couldn't connect to Google Play; is it disabled for some reason?"