zipalign은 무엇을 의미하며 Android 기기를 사용하는 방식에 어떻게 맞습니까?


19

"zipalign"은 무엇을 의미하며 그 의미는 무엇입니까?

ROM이 "zipaligned"라고 주장 할 때 그 의미는 무엇이며 "zipaligned"가 아닌 ROM과의 차이점은 무엇입니까?

답변:


21

이 메커니즘은 Android 개발자 사이트 에서 다음과 같이 설명 됩니다.

zipalign은 Android 애플리케이션 (.apk) 파일에 중요한 최적화를 제공하는 아카이브 정렬 도구입니다. 압축되지 않은 모든 데이터가 파일의 시작과 관련하여 특정 정렬로 시작하도록하는 것이 목적입니다. 특히, 이미지 또는 원시 파일과 같이 .apk 내의 모든 압축되지 않은 데이터가 4 바이트 경계에 정렬됩니다. 따라서 정렬 제한이있는 이진 데이터가 포함 된 경우에도 mmap ()을 사용하여 모든 부분에 직접 액세스 할 수 있습니다. 응용 프로그램을 실행할 때 소비되는 RAM의 양이 줄어든다는 이점이 있습니다.

.apk, 압축 파일 내부의 데이터 순서로 인해 컨텐츠를보다 쉽고 빠르며 최적으로 액세스 할 수 있습니다.

자세한 정보는 AddictiveTips : Android에서 Zipalign이 무엇인지 , Apps를 Zipaligned로 만드는 방법에 대한 "완전한 안내서" 를 참조하십시오.

이해할 수 있듯이 상황은 정렬되지 않은 응용 프로그램 패키지로 예약됩니다. 리소스 읽기 속도가 느리고 메모리 사용량이 스펙트럼의 최상위에 있습니다. 정렬되지 않은 응용 프로그램의 수에 따라 다릅니다. 예를 들어 정렬되지 않은 홈 응용 프로그램을 사용하는 응용 프로그램 수가 적 으면 응용 프로그램 시작 시간이 느려집니다. 이것이 가장 좋은 시나리오입니다. 최악의 경우 정렬되지 않은 여러 응용 프로그램을 사용하면 시스템이 반복적으로 프로세스를 시작 및 종료하고 지연 및 배터리 소모로 어려움을 겪을 수 있습니다.


프로그래머의 struct x { uint16_t id; uint32_t data[100]; };경우 C의 구조체 정렬과 다소 비슷합니다. 32 비트로 정렬하려는 경우 수행하지 마십시오 . 사용struct x { uint16_t id; uint16_t padding; uint32_t data[100]; };
매튜 읽기

모든 앱이 우편 번호를 정렬하지 않는 이유는 없습니다. 또한 이것은 최종 사용자에게도 문제가됩니까, 아니면 개발자에게만 해당됩니까?
Matt

1
내가 말한 개발자에게는 추가 단계입니다. 물론 성능은 최종 사용자의 관심사입니다.)
Izzy

1

zipalign이 정확히 어떻게 작동하는지 위에 추가하려면-

Android 운영 환경에서 각 애플리케이션 패키지에 저장된 데이터 파일은 여러 프로세스에 의해 액세스됩니다. 예를 들어, 설치 프로그램은 데이터 권한을 읽고 연관된 권한을 판별합니다. 시스템 서버는 알림 표시와 같은 여러 가지 이유로 이러한 리소스를 읽을 수 있습니다. 예를 들어, 홈 응용 프로그램은 응용 프로그램의 이름과 아이콘을 얻기 위해 리소스를 읽습니다. Android는 진정한 멀티 태스킹 운영 인프라를 기반으로하므로 이러한 파일에 지속적으로 반복 액세스합니다. 마지막으로 응용 프로그램 자체가 매니페스트 데이터를 읽습니다.

Android는 Linux 기반이므로 프로세스를 효율적으로 처리하는 데 메모리 매핑이 중요한 역할을합니다. 기본적으로 Android OS의 리소스 처리 코드에 대한 최적의 정렬은 4 바이트 경계입니다. 이는 APK가 4 바이트 단위로 메모리 매핑되고 그에 따라 정렬되는 경우 OS가 원하는 데이터 매니페스트를 얻기 위해 전체 응용 프로그램 패키지를 '읽을'필요가 없다는 것입니다. 모든 시스템 프로세스는 원하는 리소스를 찾을 수있는 위치를 미리 알고 있으므로 훨씬 매끄럽고 빠르게 실행됩니다.

요약하자면, APK를 압축하면 패키지 내의 압축되지 않은 모든 데이터가 4 바이트 경계로 정렬되어 메모리 맵을 통해 모든 부분에 직접 액세스 할 수 있습니다. 쿼리 코드가 전체 응용 프로그램 패키지를 읽을 필요가 없기 때문에 실행 중 RAM 소비가 줄어 듭니다.

출처


왜 전체 응용 프로그램 패키지를 읽지 못합니까? 매니페스트가 특정 오프셋에 있다고 보장됩니까?
Kenneth Worden
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.