Обновление Android Studio 2.2: выровненный APK (zipAlign) не создается с использованием нового плагина Gradle 2.2.0

После обновления Android Studio до версии 2.2 я также получил обновление для плагина Gradle (это было 2.1.3):

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

Я вижу невыровненный вариант APK-файла, но другие варианты больше не генерируются. Я попытался включить выравнивание zip:

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

но ничего не меняется. Любые идеи?

Я «решил» вернуться к

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

на уровне проекта build.gradle.

ИЗМЕНИТЬ (20160922):

Спасибо Файдеру Флоресу за ответ. Это правильно, среда сборки теперь создает только один apk (https://code.google.com/p/android/issues/detail?id=212591).

Но используя код (который переименовывает имя выходного файла, используя VERSION CODE и VERSION NAME):

android.applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def padVersionCode = variant.versionCode.toString();
        padVersionCode = padVersionCode.padLeft(5, '0')
        def newApkName = "${output.baseName}_${padVersionCode}-${variant.versionName}"

        if (!output.zipAlign)
            newApkName = newApkName + "_unaligned"

        newApkName = newApkName + ".apk"
        output.outputFile = new File(output.outputFile.parent, newApkName)
    }
}

Я получаю «_unaligned», добавленное к имени выходного файла, поэтому я предполагаю, что output.zipAlign равно false.

Так действительно ли выходной файл выровнен?

ИЗМЕНИТЬ (20161013)

Спасибо ending0421 и предлагаю проверить apk с помощью инструмента сборки:

zipalign -c -v 4 путь/имя файла

Теперь я понял, что APK сгенерирован правильно и команда zipalign говорит:

Проверка прошла успешно


person Seraphim's    schedule 20.09.2016    source источник
comment
Я проверил, что output.zipalign всегда имеет значение null, и, следовательно, условие if выполняется, а созданное имя apk содержит суффикс _unaligned.apk (согласно коду в OP). Однако результирующий файл zipaligned.   -  person drulabs    schedule 30.03.2017


Ответы (2)


Согласно этому форуму: https://code.google.com/p/android/issues/detail?id=212591

«Привет, мы больше не генерируем невыровненные apk. В рамках улучшения скорости мы генерируем уже выровненный apk. Таким образом, вместо двух вы просто получаете последний.

@yair.kikielka Спасибо."

person Fayder Florez    schedule 21.09.2016

Ответ РЕДАКТИРОВАТЬ (20160922):

Так действительно ли выходной файл выровнен?

Да ! Вы можете проверить с помощью

zipalign -c -v 4 путь/имя файла

Когда вы запускаете эту команду для apk-файлов, сгенерированных версией gradle >=2.2, вы получите «Успешная проверка». Это означает, что уже выровнены.

person ending0421    schedule 12.10.2016