Запуск zipalign с повторным сжатием zopfli после сборки APK из командной строки, чтобы уменьшить его размер

Как упоминалось в статье разработчиков Google , теперь можно повторно сжимать файлы APK с помощью zopfli, запустив zipalign -z. В моем случае для APK-файла размером 5,1 МБ наблюдается уменьшение на 200 КБ.

Обычно я создаю APK, используя собственный сценарий оболочки, запустив gradle assembleRelease.

Я хочу запустить zipalign -z <the final apk> после указанной выше команды. Однако zipalign находится в каталоге build-tools/<build tools version>, который я не могу найти, кроме как путем извлечения <build tools version> из файла build.gradle и создания пути вручную.

Можно ли запустить zipalign с помощью команды gradle, которая автоматически запускает zipalign в правильном каталоге build-tools без необходимости восстанавливать путь?

Например, такая команда, как gradle runBuildTools zipalign -z $FINAL_APK $FINAL_APK.out


person Randy Sugianto 'Yuku'    schedule 23.02.2016    source источник
comment
ПРИМЕЧАНИЕ. Google больше не рекомендует сжатие Zopfli для APK.: Обновление: ранее в этой статье был раздел о повторном сжатии файлов в APK с использованием более сильного алгоритма сжатия под названием Zopfli. Эта функция теперь удаляется из наших инструментов сборки, начиная с Android Studio 2.2, и больше не рекомендуется, так как это может помешать дальнейшим планам по уменьшению дополнительных обновлений Play Store.   -  person Patrick Favre    schedule 23.10.2018


Ответы (1)


статья, на которую вы указали ссылку to был обновлен с помощью задачи gradle, чтобы добавить сжатие zopfli в конец задачи AssemblyRelease.

//add zopfli to variants with release build type
android.applicationVariants.all { variant ->
  if (variant.buildType.name == 'release') {
    variant.outputs.each { output ->
        output.assemble.doLast {
            println "Zopflifying... it might take a while"
            exec {
                commandLine output.zipAlign.zipAlignExe,'-f','-z', '4', output.outputFile.absolutePath , output.outputFile.absolutePath.replaceAll('\\.apk$', '-zopfli.apk')
            }
        }
    }
  }
}
person Joe Rider    schedule 29.02.2016
comment
Спасибо!! Это именно то, что мне было нужно. - person Randy Sugianto 'Yuku'; 29.02.2016
comment
Будущим читателям больше не рекомендуется использовать сжатие Zopfli. Пожалуйста, проверьте статью, на которую есть ссылка в ответе, для получения дополнительной информации. - person Dion Segijn; 20.06.2016