Error while running zipalign

2019-02-05 13:12发布

问题:

I got this error when trying to export a signed apk in Eclipse

Error while running zipalign: Unable to open as zip archive

I have run the Help->Check for Updates to make sure the latest update is installed and SDK tools also up to date.

回答1:

I was getting the same error message. Drove me crazy until i found that my destination path was invalid.

Zipalign will give you that error even if the apk is perfectly valid, but

  • the path to the apk is invalid
  • the destination is invalid or does not exists
  • the permissions are invalid (apk is locked by other program)


回答2:

I had this same problem and yes, it was because the tool could not recognize the path. I was using the wrong slash because I got bad advice from a developer blog.

Sample line command if the file "origin.apk" is in a folder called “storage” in the C directory:

zipalign -f -v 4 “c:\storage\origin.apk” “c:\storage\done.apk”

Make sure you use the slash above the enter key...a lot of the "examples" I have seen use the one by the shift key and that will not work. This will take the apk called “origin.apk” and zipalign it and then save it to the same directory as the file “done.apk”.

Maybe this is just on Vista, I dont know. I am using Windows Vista 32-bit.



回答3:

In my case, I ran the command from the directory where the unsigned apk was and it ran perfectly.

cd /platforms/android/build/outputs/apk
zipalign -v 4 android-release-unsigned.apk signed.apk 

This way, I didn't need to worry about specifying the directory.

ps: I did this on ubuntu.



回答4:

I removed the apk file in the Deploy directory and the export worked fine then.



回答5:

I had to provide the full path for the unsigned APK file: platforms/android/build/outputs/apk/android-release-output.apk



回答6:

If your pre-align APK is larger than 2GB, it will also cause this issue. Tested with build-tools 23.0.1 on Windows 10 machine.



回答7:

I got this error because I had no write access to the target directory. Changing the permission accordingly resolved the problem.



回答8:

Sometimes a simple \ instead of a / in the destination file path can lead to this. Double check your multiplatform ant files!



回答9:

I had the same problem with my zipalign command. Output path was correct but the folders did not exist which was provided in the output path and so i created the folders manually and then it all worked fine.



回答10:

If the destination file already exists and it is opened by another process, then you will see this error.

Solving method: Rename the destination file, or close the application that already opens the file.



回答11:

Check the space available on the destination disk. I got the same error because my disk was full :-)



回答12:

In my case the problem was utf-8 named folder. I changed it into English and worked. I am using Windows 8 x64 Enterprise edition.



回答13:

This issue occurred for me when I had my project's bin folder open in Windows Explorer.

I then tried to delete my old apk file (which the Export tool was unsuccessfully trying to overwrite), but I couldn't do that as I didn't have the necessary permission or because some other process had a lock on the file.

The solution was to restart my computer which released the lock on the apk file. Eclipse's Export tool then worked fine.

Update Could not delete the old apk file in Windows Explorer or in Command window (even when I opened it with Admin rights), but I could delete the apk when viewing it in my FileZilla FTP client application. Obviously, this is much more convenient than restarting the computer.



回答14:

zipalign tool can't access to the source file, so you should verify path, file name, extension, permissions ...



回答15:

Adding on my solution:

My problem was that my assets folder was too large, and must have been messing with the zipping somehow. I had to remove files in the asset folder (or add them to _pre_production).



回答16:

In my case, on Linux (Mint), I had to set the execution permission of zipalign manually and then it worked like a charm.



回答17:

For mac

Because the result of encoding does not match you must do this:

  1. open eclipse.ini
  2. add -Dfile.encoding=utf-8