8

enter image description here

I try to upload my app to gplay but fail because my apk doesn't zipaligned. i try to zipalign but i got verification failed. really don't have idea, someone please tell me what to do. thanks in advance.

maghfirzakir
  • 808
  • 2
  • 12
  • 19

7 Answers7

31

I found an easier way - just align from commandline.. TWICE! After aligning two times I was able to upload my apk.

Delete the OLD file and Rename the Second One and Align it Again..

  • 3
    It works. It's a bit depressing that those kind of workarounds are needed. – Diego Jan 05 '17 at 15:19
  • 1
    what ? really... After 2.3.x plugin release, they've removed option to disable zipalign so you no longer can do it manually from scratch. This created a problem with debug builds - calling zipalign fails with output above. Strangely, release builds are not affected. You saved my day - I was thinking about this issue for years and finally how a workaround. – Oleksandr Oct 22 '17 at 22:00
  • 1
    This is just a great catch. You saved me a lot of time. Thanx! – Mig82 Nov 20 '17 at 15:47
  • After hours of searching, this is the only thing that I worked for me. – Vadim Dec 17 '20 at 17:51
10

In case someone else has the same problem with gradle plugin '3.6.0' and later and because I spent several hours trying to track this down.

Gradle Plugin 3.6.0 is page aligning and packaging your native libraries uncompressed https://developer.android.com/studio/releases/gradle-plugin?hl=el#3-6-0

The fix is to disable the uncompressed packaging of your native libraries by adding

android:extractNativeLibs="true"

to your AndroidManifest.xml as an attribute on the application tag.

Klitos G.
  • 806
  • 5
  • 14
8

No need to manually, do this:

buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                zipAlignEnabled true 
               //uncomment for automatically zip aligned by studio
            }
        }

build.gradle

 set classpath 'com.android.tools.build:gradle:2.2.0-alpha3'

to

classpath 'com.android.tools.build:gradle:2.1.2'

see my answer here

Community
  • 1
  • 1
Vrajesh
  • 1,312
  • 19
  • 25
4

Try below suggestion

buildTypes {
        release {
        }
        debug{
            debuggable false
        }
    }

Or set Attribute in Manifest android:debuggable="false" Generate build and run zipalign tool Verification Success.

Nilesh Senta
  • 5,236
  • 2
  • 19
  • 27
2

This issue will come when you are trying to zipalign and sign a debug apk.

That is not a good idea.

Instead use the command

./gradlew assembleRelease

to generate release unsigned apk. Then zipalign the output apk.

Or use the answer given by @Nilesh Senta

Katta Naresh
  • 81
  • 2
  • 7
1

A little late to the party, but recently had the same issue when aligning the unsigned apk from command line. The zipalign command failed as I had the following code in the gradle file -

buildTypes {
    debug {
        debuggable true
    }
    release {
        debuggable true
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        zipAlignEnabled true
    }
}

Zipalign was failing, but wasn't pointing to the fact that a release version cannot be marked as debuggable. Android Studio Build > Generate Signed Bundle / APK had no issues when the release version was marked as debuggable, so it must be overwriting some of the gradle configurations during the generation of the signed APK.

Hope this helps someone.

SimplyJaymin
  • 444
  • 8
  • 17
-2

I had read that you needed to align the APK before signing; that if you sign first, then align, it would break the signature. That was false information. Sign first, then zipalign, then upload.

jcomeau_ictx
  • 37,688
  • 6
  • 92
  • 107
  • 1
    You absolutely can break your signature if you align after you sign it. Just because it works in your one instance doesn't mean it can't break the signature. The situation that causes it to break is a bit of an edge case, but if you ever get a random signature mismatch when installing the app it very likely would be because you are signing before aligning. – Nicholas Hall Jun 02 '20 at 16:35