[Android] apk 만들기

fanthasium·2022년 9월 23일
0

뭐든 방법을 알기전, 근본적 탐구가 중요하다고 생각한다..! 그래~ 서

Apk란 안드로이드 앱의 확장자로서 Android Package의 준말이다.

나아가 보자면 " 안드로이드의 소프트웨어미들웨어 배포에 사용되는 패키지 파일이며, '.apk'확장자를 가진다" 까지 볼수 있다.

미들웨어?

응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어를 의미하는데
서비스란 메시징, 인증 및 API 관리등이 있다
왜 사용하는 지는 Aws공식문서를 보면 더 쉽게 이해 할 수 있다.

apk생성 과정

.class 파일을 안드로이드 가상 머신인 달빅(Dalvik)이 인식할 수 있도록 .dex 파일로 변환하는 것! dex로 변환하는 이유는 앱 내의 컴파일단계에서 자바 컴파일러를 통해 .class파일이 만들어진 것을 실행 파일로 바꿔야 하기 위함.

(위 과정은 매우 복잡하고 다양한 요소가 많기에 더 공부가 필요하다!)

탐구가 끝낫으니 우린 지원하는 것을 써보면 된다!!..
방법은 여러가지가 있는데 내가 소개할 방법은 2가지다

  1. Android Build -> generateSignedBundle에서 지원하는 기능

으로
APK를 만들 수 있다 아! 참고로 apk는 배포용과 개인 저장용으로 나뉠 수도 있으며 배포용은 보안을 위해 비밀번호 설정이 필요하고 Local Disk c: 파일에 넣어 사용한다

(why?)

c드라이브는 보통 윈도우 구동 전용을 위해 사용되기에 플래쉬 메모리를 사용하는 ssd에 저장하여 보다 안정적으로 파일 저장이 가능해서 인것 같다. (이건 컴퓨터 과학 분야로 공부를 해보자!)

  1. Google Bundel Tool 사용법

장점:
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 
- 버전 체크는 항상 하기 -
  1. 이제 apk를 추출할건데 좀 어렵다..aab의 경로만 잘 알고 있다면 ok
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 이분의 블로그를 참조하는게 더 좋을 듯 하다..ㅎㅎ

오류사항은 언제나 따끔하게 피드해주세요!

profile
디그다 디그다 (끙챠끙챠)

0개의 댓글