답변:
안드로이드 APK는 일반적으로 이러한 것들을 포함합니다.
assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex
설치시 APK 파일은에 복사되고 /data/app
, 파일 classes.dex
을 실행 dex2oat
하여 추출되고 "최적화"됩니다 (Android 5 이상 lib/
에서도 추출 됨). 최적화 결과가 저장 /data/dalvik-cache/
되므로 설치 또는 업데이트 당 한 번만 앱을 최적화해야합니다 . 다른 모든 것은 APK 안에 유지됩니다. 첫 번째 대답은 매우 분명하다 그래서 : 같은 것들 assets
과 res
그이 앱을 제공해야합니다에 필요한 것, 그들은 APK 내부에 있습니다. APK 파일은 지원 목적으로 보관됩니다. 당신은 APK를 삭제하면 응용 프로그램은 확실히 전혀 시작되지 않습니다. (앱 : 자산은 어디에 있습니까?)
둘째, Google Play 는 아주 오래 전에 "델타 업데이트"에 대한 지원을 추가했습니다 . 델타 업데이트 절차에서는 이전 패키지와 새 패키지의 차이가 계산됩니다. 그런 다음 GP는 "델타"를 다운로드하고 원본 APK에 변경 사항을 적용하여 업데이트 된 APK를 생성하여 다운로드 크기를 줄입니다.
APK는 항상 서명됩니다. 이로 인해 패키지가 악의적으로 수정되는 것을 막을 수 있습니다. 변경된 사항이나 바이러스의 주입 여부를 모르고 수정 된 앱을 설치하고 싶지는 않습니다. META-INF/
내부의 APK는이 목적을 위해 사용할 수 있습니다. 비공식 변경으로 서명이 일치하지 않으며 Android 시스템은 수정 된 앱 설치를 거부합니다.
또한 Android OS를 업데이트하면 모든 dex 파일이 다시 "최적화"되므로 하나씩 다시 설치할 필요가 없습니다. 위에서 말했듯이 최적화에는 classes.dex
원본 패키지의 파일이 필요 합니다.
lib/
APK에서 추출되지 않았고 iOS는 IPA에서 모든 것을 추출하지 않았습니다. 기본 무결성 검사를위한 것입니다.