zipalign

zipalign은 ZIP 보관 파일 정렬 도구입니다. 이 도구는 보관 파일 중 압축되지 않은 모든 파일이 파일 시작 부분을 기준으로 정렬되도록 합니다. 이렇게 하면 mmap(2)를 통해 이러한 파일에 직접 액세스할 수 있으므로 RAM에 데이터를 복사할 필요가 없고 앱 메모리 사용량을 줄일 수 있습니다.

zipalign은 APK 파일을 최종 사용자에게 배포하기 전에 최적화하는 데 사용해야 합니다. Android 스튜디오로 빌드하면 이 작업이 자동으로 실행됩니다. 이 문서는 맞춤 빌드 시스템의 유지관리자를 위해 작성되었습니다.

주의: 사용하는 앱 서명 도구에 따라 앱 빌드 프로세스의 두 특정 지점 중 하나에서 zipalign을 사용해야 합니다.

  • apksigner를 사용하는 경우 APK 파일에 서명하기 에만 zipalign을 실행해야 합니다. apksigner를 사용하여 APK에 서명하고 APK를 추가로 변경하면 서명이 무효화됩니다.
  • jarsigner를 사용하는 경우 APK 파일에 서명한 에만 zipalign을 실행해야 합니다.

정렬은 ZIP 로컬 파일 헤더 섹션에 있는 'extra' 필드의 크기를 변경하여 이루어집니다. 이 과정으로 인해 'extra' 필드의 기존 데이터가 변경될 수도 있습니다.

애플리케이션을 빌드할 때 zipalign을 사용하는 방법에 관한 자세한 내용은 애플리케이션 서명을 참고하세요.

사용법

APK에 공유 라이브러리(.so 파일)가 포함되어 있다면 -p를 사용하여 공유 라이브러리가 mmap(2)에 적합한 4KiB 페이지 경계에 맞게 정렬되어 있는지 확인해야 합니다. 다른 파일의 경우(즉, 정렬이 필수 정렬 인수에 의해 zipalign으로 지정된 파일) Android 스튜디오는 32비트와 64비트 시스템 모두 4바이트로 정렬합니다.

infile.apk를 정렬하고 outfile.apk로 저장하는 방법은 다음과 같습니다.

zipalign -p -f -v 4 infile.apk outfile.apk

existing.apk의 정렬을 확인하는 방법은 다음과 같습니다.

zipalign -c -v 4 existing.apk

zipalign -h를 사용하여 지원되는 전체 플래그를 확인할 수 있습니다.