View
오늘 알아 볼 것
앱을 배포할 때 apk에서 aab로 바꾸는 것을 볼 수 있을 것이다.
왜 그럴까?
오늘 알아 볼 것은 바로 apk에서 aab로 바꾸는 이유에 대해서 간단히 알아 볼 것이다.
구글에서 정책을 바꾸다?
우리가 사용하는 앱에도 특정 확장자가 붙는다. 바로 .akp이다.
IOS앱에서는 .ipa가 안드로이드에서는 .apk가 붙는다. 그런데 구글이 2021년 8월 부터 구글 플레이에 새로 올라오는 모든 앱은 AAB 형식이어야 한다는 정책을 바꾸었다.
그렇다면 왜 바꾼 것일까?
그리고 AAB는 무엇일까?
AAB?
우리가 사용하는 앱의 확장자인 APK(Android Package)는 이미 완성된 안드로이드 앱 파일을 말한다. 그렇다면 AAB(Android App Bundle)은 무엇일까?
AAB는 바로 APK를 완성해주는 요소를 담은 패키지이다.
APK를 완성해주는 요소를 담은 패키지?
왜 이러게 필요할까? 우리는 그냥 APK를 사용하는데 구지 해당 APK를 완성해주는 패키지가 필요한 것일까?
사실 여기에는 이유가 있다.
우리가 그냥 개발자가 완성한 앱을 다운 받게 되면 의외로 불필요한 여러 코드등을 많이 받게 된다.
예를 들어 화면 너비가 2000픽셀이 넘는 기기에서만 쓰이는 레이아웃 파일은 갤럭시 S21에서 필요가 없다. 또한 한국어 기반의 갤럭시 S21과 독일어 기반의 S10이 있을 때 S10에는 S21의 최신 기능은 필요없고 한국어 기반의 갤럭시 S21에는 독일어 파일은 필요없다.
위에 내용처럼 만약 APK로 자체로 받게 되면 의외로 많은 불필요한 파일을 많이 받게 된다. 그렇게 되면 APK 파일의 크기도 커지고 쓸모 없는 비용이 들게 된다. 이런 것을 막기 위해서 구글에서는 기존의 모든 기기에서 대응할 수 있는 하나의 APK를 전달하는 것이 아니라 개발자가 AAB 패키지를 올려 놓으면, 스토어에서 사용자의 기기에 맞게 알아서 APK파일을 만들어 배포해준는 것이다.
즉 AAB는 구글에서 각각의 기종에 맞게 APK를 생성할 수 있게 해주는 패키지인 것이다.
장단점?
AAB는 어떤 장점이 있을까?
위에서도 알 수 있듯이 앱의 크기가 줄어든다.
만약에 우리 개발자가 AAB을 만들지 않고 APK를 만들어 배포한다면 앱 사용자는 불필요한 파일을 많이 받게 된다. 그렇다고 개발자가 각각의 사용자들 기종에 맞게 여러 APK파일을 여러게 만들어야 된다면 개발자는 하루 종일 기기 호환 APK파일만 만들다가 끝날 것이다.(사실...하루가 아니라..따로 계획에 넣어도 안 끝날지도..)
우리가 사용하는 기기의 종류는 너무도 많고 언어 또한 너무 많기 때문이다.
그렇다면 단점은?
가장 큰 단점은 보안에 대한 우려가 있다.
모든 안드로이드 앱에는 개발자의 서명 파일이 들어간다. 서명 파일은 이 앱을 만든 사람이 나(개발자 자기 자신)이라는 증거를 남기는 것이다.
원래 APK 파일의 경우 개발자가 직접 해당 APK파일에 서명 파일을 남겼었다. 그렇기 때문에 누군가 앱을 멋대로 변형해 배포하려고 해도 원래 개발자의 서명이 없기 때문에 공식 앱이 아닌 것을 확인할 수 있었다.
하지만 AAB의 경우는 완성된 APK를 배포하는 것이 아니고 일종의 APK 요소를 주는 것이므로 실제 서명을 개발자가 하는 것이 아닌 구글 플레이가 대신하게 되는 것이다. 부동산 집 계약을 할 때 대리인이 서명하는 것과 같다.
물론 구글이 대리인 이게 때문에 엄청 철저하고 믿을 수 있는 최고의 보안을 약속하지만 만약에 만약에 구글이 엉성하게 APK를 조립하거나 없던 코드를 넣게 되면 바로....해당 앱은 나락가는 것이다.
당연히 구글이기 때문에 그럴일은 없지만...^^;
오늘은 간단히 AAB가 무엇인지 알아 보았다.
나도 무텃대로 AAB파일로 배포하고 있었는데 이렇게 이유와 해당 AAB가 무엇인지 찾아보니 조금 여러 생각이 든다.ㅋㅋㅋ
대리인 집 계약이라닛 ㅋㅋㅋㅋ 물론 구글이지만 조금 무섭넹^^
아무튼 배포에 대해서 조금 더 알아 볼 수 있었다.
'TIL > 스터디' 카테고리의 다른 글
Splash 화면 (0) | 2024.05.22 |
---|---|
.gitignore (0) | 2024.04.19 |
함수 참조 (RecyclerView) 사용 (0) | 2024.04.11 |
코틀린 함수 참조 (0) | 2024.03.29 |
TabLayout 스크롤 감지 (Viewpager안썻을 때) (0) | 2024.03.28 |