전에 작성했던 글에서 해설하지 않은 부분을 보충합니다.
우선 플러터 작업시 프로젝트 페인에서 android → app → build.gradle 에 아래 라인을 추가합니다. (안드로이드 스튜디오의 경우)
build.gradle의 android { } 블락안에
splits {
abi {
reset()
include("x86", "x86_64", "armeabi")
}
}
이 라인을 추가합니다. 제가 참고한 네이버 개발자의 말에 의하면 위 구문을 추가시 앱이 크래시 잘된다고 하는데 아마도 구형 기기라서 그런 것 같네요. 크래시 잘 안되는게 일반 같아서 위 라인을 추가해도 되는 것 같습니다. 위 라인 추가후 Run 메뉴에서 Flutter run ‘main.dart’ in Release Mode 로 빌드하면 각각의 아키텍처에 맞는 APK 파일이 생성됩니다. 타깃이 되는 장비에 맞추어 생성이 되는데 이 경우 위 구문의 효력과, 릴리즈 모드 빌드의 효력이 겹쳐서 앱 파일 크기 조정이 더 잘 됩니다.
또한 APK Analyzer를 쓰면 APK 구성 요소 중에서 APK 파일 크기를 차지하는 파일들과 디렉토리 등을 볼 수 있습니다.
https://developer.android.com/studio/build/apk-analyzer?hl=ko
이 도구를 쓰면 크기를 차지하는 구성 요소들을 잘 선별해낼 수 있어서 최적화에 도움됩니다. 사진을 더 압축한다든지 해서 용량 줄이는데 정보를 주기도 하고, 여러 기능이 지윈되니 써볼만합니다. 실행방법은 위 페이지 링크로 가면 나옵니다.
이 글 1편에서 해설한 것과 이 글에서 설명한 것을 다 적용하니 앱이 150MB에서 15.8MB로 줄었네요 ^^ 안드로이드의 경우 그렇습니다.
참고: 위 본문에 언급한 abi “구문의 효력과, 릴리즈 모드 빌드의 효력이 겹쳐서”라는 말의 의미는 각각 효력이 있어서 동시에 적용하면 결국 파일이 더 작아진다는 것을 말하려고 한 언급입니다. 두 방법이 겹치는 특별한 원리가 있는지는 미상인데 일단 각각 효력이 있는 것이 사실이고 둘다 적용하면 APK 파일 크기가 더 작아집니다. 두 방법 중에 하나를 안적용해도 다른 하나는 잘 작동합니다. 둘다 적용하면 더 좋구요. 위에 언급한 표현으로는 두가지 방법이 긴밀한 연관성이 있게 적용된다는 의미가 되는데, 이게 확인은 안되었습니다. 그냥 두가지 방법을 둘다 적용하면 전에 쓴 글에서 소개한 것만 적용한 것에 비해 APK 파일 크기가 더 줄어든다는 의미입니다. 그냥 설명을 하다보니 표현이 애매해져서 참고 사항으로 보충합니다.