Developers Can’t Make Movie Apps Anymore

A few days ago I brainstormed an app idea to help users find movies they want to watch on Redbox and Netflix. A small app, nothing grandiose or too ambitious, but a simple app that would do a job.

In order for me to create these apps, I need to be able to pull (public) information from these services. Redbox inventory differs from location to location, and Netflix’s inventory changes as their movie rights expire and new titles are added.

I’m astonished at the lack of developer support from Netflix and Redbox. As of about a month ago, Netflix shut down its API service to developers.

This change means that developers can’t create an app that helps people find Netflix movies to watch. Even if you want to grab publicly digestible information like the list of movies on Netflix Instant.

Redbox has an API, but you have to apply… and wait… for them to approve of your “application” – basically you have to tell them what you’re building, your business model, etc. Considering I could probably count with one hand the number of Redbox apps out there, I am guessing that Redbox doesn’t quite see eye-to-eye with most developers’ API applications.

Hulu doesn’t even offer an official API and developers have to resort to reverse engineered libraries.  Amazon Instant does have an API, but it is stupidly wrapped under the overly complex Amazon’s Product Advertising API umbrella.

This is sad.

There is a problem in movie discovery, many people struggle to find movies they want to watch, and developers have their hands tied behind their back trying to fix this problem.

“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.