[TECH] Google Play 64bit 지원 정책과 준비
최근 구글 플레이의 정책으로 인해 2019년 8월 1일부터 새롭게 등록된 앱과 앱 업데이트에는 64bit 버전이 함께 제공되어야 하고 있습니다.
이와 관련한 정보는 아래와 같습니다.
[ Get your apps ready for the 64-bit requirement by google ]2019년 8월 1일부터 :
- 네이티브 코드를 포함하는 모든 새 앱과 앱 업데이트는 Google Play에 게시할 때 32bit 버전 외에 64bit 버전도 함께 제공.
- 기간 연장 대상: Google Play는 2021년 8월까지 Unity 5.6 또는 이전 버전을 사용하는 기존 게임에 대한 32bit 전용 업데이트를 계속 허용할 예정.
2021년 8월 1일부터 :
- Google Play는 64bit 지원 기기에서 64bit 버전이 없는 앱에 대한 서비스를 중단할 예정, 이에 따라 해당 기기에서는 Play Store에서 사용 불가. ( Unity 5.6 또는 이전 버전으로 만든 게임 포함 )
- 아래에 해당되는 서비스에 대해서는 해당 요구 사항이 적용되지 않음.
현재 64bit 코드를 지원하지 않는 폼 팩터인 Wear OS 또는 Android TV를 명시적 대상으로 하는 APK 또는 앱 번들
Android 9 Pie 이상을 실행하는 기기에 배포되지 않는 APK 또는 앱 번들
기존 64bit Android 시스템에서는 64bit용 native dynamic library( .so ) 가 존재 하지 않더라도 32bit 호환 시스템을 통해 32bit 모드로 동작 시키고 있었습니다.
이로 인해 64bit의 고성능의 기기에서도 32bit 메모리 체계로 실행됨에 따라 효율적인 운영을 하지 못하였음에 내린 정책으로 판단됩니다.
위 사항은 2019년 8월 1일 부터 기존 등록된 Unity 5.6 이하의 엔진을 사용하는 서비스를 제외한 모든 앱들에게 적용되는 사항임을 알 수 있습니다.
이러한 정책으로 인해서 2019년 8월 1일 부터 플레이 스토어에 앱을 업데이트 하거나 앱을 새롭게 등록할 시에는 아래의 항목을 충족하여야 합니다.
- 앱 패키지 내 native dynamic library를 사용하는 앱은 반드시 64버전을 포함
내가 서비스 하는 앱이 native dynamic library를 사용하고 있는지 알고 싶다면 아래와 같은 방법으로 확인할 수 있습니다.
1. APK or AAB 파일을 zip open
2. 'lib' 디렉토리가 있는지 확인 ( AAB의 경우 base/lib 디렉토리 확인 )
위 작업을 통해 lib 하위에 'armeabi-v7a' , 'armeabi' 등의 디렉토리가 존재하고 내부에는 .so파일이 존재 한다면, native dynamic library를 사용하는 앱으로 판단할 수 있습니다.
만약 lib 디렉토리 하위에 'arm64-v8a'가 존재하고 'armeabi-v7a' , 'armeabi' 등의 디렉토리 하위에 존재하는 파일들이 모두 'arm64-v8a'에 존재 한다면, 현재 해당 앱은 64bit를 지원하고 있는 앱일 수 있습니다.
또한 위 작업 시 'lib'폴더가 존재 하지 않는다면 여러분의 앱은 native dynamic library를 사용하지 않고 있음으로 이번 정책은 신경 쓰지 않으셔도 될 것입니다.
여러분의 앱 패키지 내에 'arm64-v8a' 폴더가 존재 한다면 아래의 단계를 통해 실제 내 앱이 64bit 디바이스에서 64bit mode로 실행하고 있는지 확인할 수 있습니다.
1. 연결되어 있는 device가 64bit 디바이스인지 확인.
- adb shell getprop ro.product.cpu.abi를 실행한 결과 값이 'arm64-v8a'이라면 64bit device
2. 앱에 소스 코드에 Build.CPU_ABI( api level 21 이하 ), Build.SUPPORTED_ABIS( api level 21이상 )를 추가하여 앱 실행 시 해당 필드의 결과값이 'arm64-v8a' 인지 확인
위 작업 통해 앱 실행 시 'arm64-v8a'라면 현재 해당 앱은 64bit 를 지원하고 있음으로 이번 정책의 요구사항에 이미 충족을 하고 있습니다.
하지만 위 작업을 통한 확인 시 여러분의 앱이 64bit를 지원하고 있지 않다면 64bit용으로 compile된 native dynamic library를 추가 하셔야 합니다.
이번 정책으로 인해 많은 앱 서비스들이 64bit mode를 준비하였고 새롭게 64bit용 native dynamic library를 추가함에 따라 앱 패키지의 용량이 커지는 현상이 일어 나고 있으며, 이로 인해 많은 앱 서비스들이 AAB(Android App Bundle)로의 전환을 통해 해당 문제를 해소하려 하고 있습니다.
google play 64bit timeline
libil2cpp.so 파일은 native dynamic library이기 때문에 이번 정책에 포함됨으로 해당 파일은 32bit 64bit 모두 존재 하여야 함으로 앱 Build 시 앱 패키지의 용량이 커짐을 볼 수 있습니다.
이를 해소하기 위해 Android App Bundle( AAB )를 이용하는 경우 플레이 스토어에서 다운로드 받는 기기에 맞는 native library및 리소스만을 설치할 수 있음으로 빠른 앱 다운로드 속도와 사이즈의 절감으로 유용하게 사용되고 있습니다.
AAB에 관한 기술적인 내용은 별도의 포스팅에서 다뤄 보도록 하겠습니다.
LIAPP은 64bit system에서 안정적인 보안 기능을 제공합니다.
LIAPP, 최상의 서비스만을 제공하겠습니다.
#android_application_security #ios_application_security #ios_application_security #source_code_hardening #android_app_bundle #AAB #APK #모바일_앱_보안 #앱_보안_서비스 #게임_보안_서비스 #소스코드_보호 #소스코드_보안 #앱_위변조_방지 #메모리_덤프_방지 #악성코드_탐지 #해킹툴_탐지 #리패키징_방지 #메모리_보안