Category Archives: IPhone

iOS is the Worst Platform for Development

Releasing an application on the App Store is ridiculously inconvenient.

Reason 1: Review Time

The Apple Review period is the greatest and dumbest obstruction facing App Store development. There is no reason for it. The system of human review is inherently inconsistent and unfair. There exists some dry bullshit about “app quality” – a fundamentally flawed approach from the perspective of App discovery. Users don’t discover bad quality apps. If they do, they don’t keep them. It’s a simple system and it works. Google Play works like this.

Why does Apple really have a review board? My theory is a theory for (partly) why Steve Jobs didn’t want Flash on iOS – also a similar reason of why Apple became so loved and Microsoft so hated: Public ignorance.

Early versions of Windows involved very little security measures for executable applications in comparison to today. Who did people blame when their application crashed? Would they say, “Oh no! Sim City just froze! I wish the developers of Sim City would fix these bugs!”

No, people never used to say that. They would say, “Oh no! Sim City just froze! Windows sucks!”

My theory is that Steve Jobs looked at Flash the same way. If someone ended up visiting a buggy Flash website, they would blame the IPhone. The public a decade ago mostly didn’t distinguish between software and operating systems. Today the public is much more aware and educated about this difference. If an App is slow, people are less likely to complain about  their smartphone or mobile OS and more likely to complain to the App developer.

Only a theory, but I think it extends to the App Store review process. Steve Jobs and Apple were afraid that if there were buggy/poor apps in the App Store, people would associate bugs and poor quality with Apple – something very counter to their brand and message.

But with changing times, Apple hasn’t adapted. Guess how long it took me to get my Android app published and available on the Google Play Market? I simply upload the IPA and hit publish. I absolutely love developing for Android because it’s almost as easy as it possibly can be.

Apple’s review process is bloated with inefficiencies. The smallest changes often times involve a brand new week long review process.

Fairness? LOL. How is it fair that one person (reviewer) has complete power over your app publishing. Frustration is a nice word for the feeling one gets seeing their app rejected for a reason that was apparently ignored for another app.

According to Apple’s Responding to an App Rejection pop-up window, “Note that while other currently available apps may appear to be non-compliant, citing these will not be considered a valid reason for overturning a rejection.”

That’s swell of you Apple; looks like so many people reported these inconsistencies that you had to put a response.

Here’s the real problem with this pretentious system. Apple is saying their individual reviewer knows better than the public about which apps are “quality” and which apps aren’t.

The ironic truth of the App Store review process is that it actually creates an ecosystem of bad quality apps. Find a critical bug in your app? You can’t just replace the app – you have to go through the entire review process again! What if you have a bug that deletes all users data? What if your server that your app connects to becomes compromised? You still have to wait a week to get that update to your users! Absurd! In a week you can lose your users due to a critical bug.

How does Google approach this problem? There isn’t a problem. On Google Play you can simply replace the app with a new version from their developer console and within hours your users get the new update.

Reason 2: Application Loader

There are multiple tools out there for developers to export IPAs (Phone Gap, Unity, Adobe Air, etc). However, it is impossible to submit your App to the Apple Store unless you use the Application Loader tool that is in XCode. Have Windows? Use Linux? Looks like you’re going to have to open your wallet some more to buy a Mac computer or virtual machine to run Mac OS so you can download XCode and install this stupid Application Loader.

Here’s an obvious question… Why doesn’t Apple allow users to simply use a website upload form to upload their IPA? Is it to sell more OSX licenses?

Can you imagine if Google required users to buy a Chromebook in order to upload Apps using some “application loader” only available on Chrome OS?

Let me also point out the ineptitude of the Application Loader software itself. The Application Loader fails to checks for many issues (missing screenshots etc). For example, I recently uploaded an IPA and received a “green check mark” from the Application Loader indicating the IPA was submitted for review successfully. An hour later I happened to check my email only to see that the IPA was “automatically rejected” because it was missing a screenshot for IPhone 5 size devices… Why didn’t the Application Loader detect this issue? Even more importantly, why didn’t ITunes Connect allow me to get to a “Ready for Upload” state in the first place if I didn’t upload that screenshot?

“So what’s the big deal? Just reupload and resubmit”

Well considering that just building a “signed” IPA can take 20 minutes and submitting an IPA through the Application Loader can take 20 minutes, it is quite annoying to have to go through all of that multiple times throughout the day.

The thing I hate most in iOS development is the time wasted on bullshit. Spending an entire freaking day just trying to get my app submitted then a week to get it on the app store is ridiculous.

“You uploaded an APK with Invalid or Missing Signing Information for Some of Its files” Google Play, Adobe Air Error

Getting

“You uploaded an APK with invalid or missing signing information for some of its files. You need to create a valid signed APK”

while trying to publish your Adobe Air Android app to Google Play?

It’s due to a bug in Air 3.6 (and 3.7 for me). For future reference, you can find out what the error in the signing of an app are by using a tool called jarsigner. This exists in your JDK.

On windows it’s in your JDK path/bin folder. Just open up command prompt/terminal and run:

jarsigner -verify "[PATH TO YOUR APK]"

Here is the error I was getting

jarsigner: java.lang.SecurityException: SHA1 digest error for res/drawable-xhdpi
/icon.png

Here’s how I fixed it. I opened up the APK in 7zip (remember, APK is collection of files zipped together. You can actually open it up) and navigated to that res/rawable-xhdpi folder. What do you know… looks like there are TWO icon.pngs. It’s a bug in Adobe’s latest Air which packages the APK incorrectly by creating duplicated icon.png files. Probably will be fixed in later versions.

If you want to avoid upgrading your Air SDK, all you need to do is delete one of those two icon.png files from the zip file.

Command line way to do it (will delete both):
zip -d [YOUR APK.APK] res/drawable-xhdpi/icon.png

Now, if you tried uploading this APK you might get an error about the APK not being zipaligned. Due to us deleting files the APK is no longer zip aligned. Which means we have to re align the file.

Navigate to your Android Developer Tools (ADT) folder. Under the SDK’s /tools you’ll see that zipalign. You’ll need to do

zipalign -f -v -c 4 “Your APK” “Your APK 2”

Reupload the new APK (remember if you don’t put an absolute path it’ll be in the same directory as where zipalign is) and it should be accepted.

Oh the joys of Adobe Air for mobile development.

Boomshine Flash Game ported to IPhone

Boomshine, my most popular Flash game, has just been released on the Apple ITunes store. You can now download it now on the IPhone or IPod touch.

Jacob Thurman , whose blog current theme is coincidently the same as mine (makes things a bit confusing), is a developer in Chicago who contacted me recently with a prototype. I worked with him to get the game to match the web version as close as possible, and I think he’s done a great job.

As a game designer, I can’t express in words the feeling I get that people will be playing Boomshine on the subway or on the street. It’s funny that the harder I work for opportunities the more they come to me.

Anyway, click here for the download link (will auto-open in ITunes, or if you’re viewing this on your IPhone it’ll launch directly on your IPhone’s store). New features are planned for future versions (global highscores, game modes, etc).

Boomshine will hopefully be the first of many of my game designs to be ported to IPhone.