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.
Thanks for this solution – you managed to prevent me from pulling out the remainder of my hair.
Thanks for the solution! This is yet another frustrating error on Adobe’s part when it comes to AIR.
BTW, I had to run “zipalign -f -v 4 <> <>” to get it to recompile. After that, I was able to upload to Google Play without error.
refer to
—————————————————————————
Zip alignment utility
Copyright (C) 2009 The Android Open Source Project
Usage: zipalign [-f] [-v] infile.zip outfile.zip
zipalign -c [-v] infile.zip
: alignment in bytes, e.g. ‘4’ provides 32-bit alignment
-c: check alignment only (does not modify file)
-f: overwrite existing outfile.zip
-v: verbose output
—————————————————————————
so -c will do nothing
—————————————————————————
zipalign -f 4 foo.zip bar.zip
—————————————————————————
working for me, Thanks!
Thank you very much! You have just saved me a ton of time!