2013년 4월 2일 화요일

android - apk size

안드로이드 apk 파일의 용량은 50Mbytes로 제한되어 있었습니다.
이는 큰 용량의 apk파일은 다운로드나 초기 실행을 느리게 하기때문입니다.

그러나 3D 게임처럼 많은 리소스를 필요로 하는 어플들이 생겨나면서 어플의 용량 제한을 4Gbytes까지 확장하였습니다.
apk 파일은 예전과 동일하게 50Mbytes로 제한되며 최대 2Gbytes 파일을 2개까지 첨부할 수 있는 기능을 제공하는 형태입니다.

사용자들에게는마켓에서 전체 어플의 용량으로 보여지며 설치나 구매전에 전체 용량을 다운로드한 후 설치하게됩니다. (오래된 버전에서는 첨부된 파일이 설치 후 실행될때 다운로드될 수 있습니다.)


안드로이드 확장 파일

1. 특징

 확장된 2개의 파일은 각각 다른 용도로 사용됩니다.
  • 첫번째 메인 확장 파일은 어플의 추가적인 리소스로 사용됩니다.
  • 두번째 패치 확장 파일은 소규모 업데이트를 위한 부가적인 파일입니다.
확장된 파일은 apk 파일과 다르게 다른 어플에서 엑세스 할 수 있는 공용 리소스에 해당됩니다.


2. 파일 포멧
 사용자가 원하는 어떤 형태의 파일도 가능합니다. 또한 압축이나 암호화를 사용하기 위해 JOBB 툴을 이용하여 obb(Opaque Binary Blob) 포멧을 사용할 수도 있습니다.
Google Play는 이들의 파일 타입에 상관없이 다음과 같은 형식의 obb 파일로 처리합니다.

 [main|patch].<expansion-version>.<package-name>.obb
  • main or patch : 메인 또는 확장 파일 여부
  • expansion-version : apk의 versionCode에 매칭되는 integer 값
  • package-name : 어플의 패키지 이름


3. 저장소
 저장되는 경로는 다음과 같습니다.

 <shared-storage>/Android/obb/<package-name>/
  • shared-storage : 공유 저장소로 외장 저장공간입니다.
  • package-name : 어플의 패키지 이름입니다.

 만일 다운로드된 파일을 암축을 해제하는 작업을 해야 한다면 obb파일을 삭제해선 안되며, 압축해제된 파일을 같은 경로에 저장하지 말아야 합니다.
 다운로드된 파일을 바로 압축해제 하여 사용하려면 APK Expansion Zip Library를 이용하세요.


4. 다운로드 절차
  대부분의 Google Play는 확장된 파일을 함께 다운로드하며 그러지 못할 경우 메인 액티비티 실행시 다운로드 됩니다.
  • Google Play에서 어플 선택 후 설치 버튼을 누릅니다.
  • 확장된 파일을 다운로드 할 수 있다면 다운로드하며 그렇지 못하면 apk 파일만 다운로드 하여 설치 합니다.
  • 사용자가 어플을 실행시키면 메인 액티비티에서 확장파일 다운로드 여부를 체크하여 다운로드 되지 않았다면 Google Play's Application Licensing service에 확장파일에 대한 이름, 용량, URL 정보를 통보하여 다운로드하게 하여야 합니다.


5. 개발 체크 리스트
  • 다양한 단말들을 지원하기 위한 리소스들을 사용함으로 인해 50Mbytes를 초과하는 경우라면 Multiple APK를 사용하는 것이 낳은 방법일 것입니다.
  • 어플리케이션의 리소스를 분리하기 위해 메인 확장파일을 사용할지를 잘 판단해야 합니다. 통상 패치 확장파일을 주로 사용합니다.
  • 확장파일은 공유영역에 저장되며 해당 파일을 지우가나 변형을 가해선 안됩니다. 특정 포멧을 필요로 하지 않는다면 APK Expansion Zip Library를 이용하여 zip 파일을 사용하길 권장합니다.
  • 어플 실행 초기에 확장 파일이 디바이스에 존재하는지를 판단하여 Google Play's Application Licensing service를 이용하여 다운로드 후 저장하는 로직을 추가하세요. 다운로드하는 기능을 구현하고자 한다면 직접 구현보다는 Google Play APK Expansion Library를 사용하길 권장합니다.


6. 규칙 및 제약
  • 확장 파일은 각각 2Gbytes를 초과할 수 없습니다.
  • Google Play에 확장 파일 다운로드를 요청하려면 Google Play에서 다운로드 받아 설치한 어플이어야 합니다.
  • 어플을 다운로드하기 위해 제공되는 URL은 매 다운로드시 마다 유니크합니다.
  • 만일 새 버전의 APK 파일이나 Multiple APK 파일을 업로드한다면 기존에 올려진 확장파일을 선택하여 사용할 수 있다.(확장 파일의 버전정보가 들어간 파일명을 변경할 필요 없음)
  • Multiple APK 별로 다른 확장 파일을 제공하려면 다른 versionCode나 filter를 사용하여 업로드 합니다.
  • 확장파일만 따로 업데이트 할 수 없으며 확장파일 업데이트시 versionCode가 업데이트된 apk 파일을 함께 업로드 합니다.
  • obb 디렉토리에 압축을 풀거나 다른 파일을 저장하지 마세요.
  • obb 파일을 지우거나 이름을 바꾸지 마세요. Google Play가 반복적으로 다운로드 할 수 있습니다.
  • 수동으로 obb파일을 업데이트 할 경우 이전 obb파일을 삭제하세요.




참고 URL)

http://android-developers.blogspot.kr/2012/03/android-apps-break-50mb-barrier.html

http://developer.android.com/google/play/expansion-files.html