뭐든 방법을 알기전, 근본적 탐구가 중요하다고 생각한다..! 그래~ 서
Apk란 안드로이드 앱의 확장자로서 Android Package의 준말이다.
나아가 보자면 " 안드로이드의 소프트웨어와 미들웨어 배포에 사용되는 패키지 파일이며, '.apk'확장자를 가진다" 까지 볼수 있다.
응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어를 의미하는데
서비스란 메시징, 인증 및 API 관리등이 있다
왜 사용하는 지는 Aws공식문서를 보면 더 쉽게 이해 할 수 있다.
.class 파일을 안드로이드 가상 머신인 달빅(Dalvik)이 인식할 수 있도록 .dex 파일로 변환하는 것! dex로 변환하는 이유는 앱 내의 컴파일단계에서 자바 컴파일러를 통해 .class파일이 만들어진 것을 실행 파일로 바꿔야 하기 위함.
(위 과정은 매우 복잡하고 다양한 요소가 많기에 더 공부가 필요하다!)
탐구가 끝낫으니 우린 지원하는 것을 써보면 된다!!..
방법은 여러가지가 있는데 내가 소개할 방법은 2가지다
- Android Build -> generateSignedBundle에서 지원하는 기능
으로
APK를 만들 수 있다 아! 참고로 apk는 배포용과 개인 저장용으로 나뉠 수도 있으며 배포용은 보안을 위해 비밀번호 설정이 필요하고 Local Disk c: 파일에 넣어 사용한다
c드라이브는 보통 윈도우 구동 전용을 위해 사용되기에 플래쉬 메모리를 사용하는 ssd에 저장하여 보다 안정적으로 파일 저장이 가능해서 인것 같다. (이건 컴퓨터 과학 분야로 공부를 해보자!)
장점:
1. 다운로드 크기와 디스크 할당 크기가 작아진다.
2. 사용자의 기기 대신 APK에 저장되는 압축되지 않은 기본 라이브러리를 사용하여(Android 6.0 이상) 다운로드 크기, 디스크 할당 크기, 설치 시간을 줄일 수 있다.
3. 사용자에게 필요한 기능 및 설정을 설치 중이 아닌 사용자가 요청할 때 제공할 수 있다.
4. 여러 개의 APK를 빌드하고 게시할 필요가 없어 빌드 및 출시 관리가 간단해진다.
# chapter1
https://github.com/google/bundletool/releases 해당 링크로 들어가 JAR 다운을 받아야한다
JAR 은 java파일들의 리소스,메타데이터를 한곳으로 모아 패키징해준다.
# chapter2
1. android 작업창 Build -> Generate Signed Bunlde(s)/ APK(s) 에서
apk,bundle을 만들어 준다
2. App Bundle로 만들어주고 next
여기서 만들고싶은 모듈 선택후 key storePath를 지정해줘야 한다
<keystore은 암호화키를 컨테이너에 저장해 외부노출을 차단시키는 것 >
없다면 CreatNew... 버튼을 눌러 key를 만들어주면 된다
※key의 alias 와 비밀번호는 꼭 외워 두도록 하자!
오른쪽 하단에
Am 00:00 Build APK(s)
APK(s) generated successfully for 1 module:
Module 'test.app': locate or analyze the APK.
여기서 locate를 눌러 해당 위치로 들어가야한다!
chapter3에서 apk가 있는 파일의 위치가 쓰이기 때문
# chapter3
1. window 명령프롬프트를 키고 java -version 체크 없진 않겠지만 체크!
2.(1번에서 받은) jar 파일이 설치 되어 있는 위치로 가서 (-cd 명령어로 이동가능)
java -jar ./bundletool-all-1.11.2.jar version
- 버전 체크는 항상 하기 -
java -jar "bundletool-all-a.b.c.jar build-apks" --bundle={aab파일경로\app-release.aab} --output={원하는 경로\filename}.apks --ks=키파일경로\{key}.jks --ks-key-alias={key_alias} --mode=universal
{}안에 알맞게 넣기만 하면 끝.
사실 나보단 https://www.ihee.com/726 이분의 블로그를 참조하는게 더 좋을 듯 하다..ㅎㅎ