미소닭갈비 가게를 소개하는 앱을
플러터로 개발했다.
이제 개발한 앱을 구글 플레이스토어에 등록하기 위해
배포용 APK를 만들어야 한다.
패키지(Package) 이름 변경
우선 패키지 이름부터 변경해보자
VS Code에서 Shift+Ctrl+F를 누르면
프로젝트 전체에서 검색할 수 있다.
이때 기본 패키지 이름 형식인 'com.example'로
검색하면 다음과 같이 나온다.
여기서 찾아들어가서
com.example.miso_chicken_rib으로 되어 있는 걸 변경하는데
보통은 본인 회사 이름으로 변경한다.
예) com.회사이름.앱이름
주의 : 패키지 이름은 한번 플레이 스토어에 올리면
수정할 수 없기 때문에 신중하게 작성할 것
앱 버전 확인
pubspec.yaml에서 버전을 변경하면 된다.
나는 첫 번째 버전이기 때문에 디폴트 값인
1.0.0+1로 처리하겠다.
1.0.0은 버전 이름을 나타내고
+1은 버전 코드로 업데이트 시 각각 + 처리하면 된다.
예를 들어 1.0.0+1 출시 후
다음 버전은 1.0.0+2 또는 1.0.1+2 이런 식으로
원하는 부분을 + 처리하면 된다.
앱 권한 체크
아래 경로와 같이 AndroidManifest.xml 파일을 열어서
앱에서 사용할 권한을 필요한 경우 추가한다.
플러터 프로젝트 생성 시 기본으로
INTERNET 권한이 포함되어 있으며
미소 닭갈비 앱을 개발하면서
사용하는 권한은 웹뷰 호출 정도 수준이라서
특별히 추가하지는 않겠다.
앱 이름 설정 및 아이콘 변경은
이전 포스팅에서 처리했으니
필요한 경우 아래 URL 참고하면 된다.
참고로 앱 이름은 '닭갈비'에서 '미소닭갈비'로 변경했다.
확인해보니 시뮬레이터에서만 앱 이름 5글자 표현이 안되었기 때문이다.
플러터 앱 아이콘 쉽게 추가하기 - 앱 이름 설정
이번에는 플러터 앱 아이콘을 아주 쉽게 추가해보겠다.패키지를 이용해서 안드로이드와 iOS를 한방에 ...
blog.naver.com
앱 서명하기
구글 플레이스토어에 업로드하기 위해
본인의 디지털 키를 앱에 서명해야 한다.
개발자를 인증하기 위한 인증서라고 이해하면 되며
VSCODE 터미널에서 다음과 같이 입력하여
keytool을 이용해 키 스토어 서명서를 생성한다.
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
key.jks는 키 파일로 암호화 알고리즘은 RSA를 사용하며
암호화 키 사이즈는 2048, 서명서 유효기간은 10000일로 설정한다는 의미이다
여기서 ~/key.jks라고 되어 있는데
본인 PC에 인증서를 저장할 경로를 넣어주면 된다.
예) D:\flutter_source\depoly_key\miso_chicken_rib/key.jks
명령어를 입력하면 아래와 같이
키 저장소 비밀번호를 입력하라고 나오며
비밀번호를 입력하면 된다.
이후 이름과 성, 조직 단위 이름, 조직 이름, 시/도 이름,
조직의 두 자리 국가 코드 등을 입력하라고 나오는데
차례로 입력 후 맞는지 물어볼 때 'Y'를 입력해서 끝내면 된다
이후 비밀번호를 다시 입력하고
아래와 같이 지정한 경로에 JSK 키가 생성된다.
본인은 이 key.jks 파일을
android/app 폴더에 넣어줬다.
앱 키 스토어 참조
이제 배포용 앱 빌드 시 참조하기 위해
android/app 폴더에 key.properties 파일 생성 후
아래 내용을 포함한다.
storePassword=<키생성시 입력한 암호>
keyPassword=<키생성시 입력한 암호>
keyAlias=key
storeFile=./key.jks
Gradle 서명 구성
이후 Gradle 빌드 시 key.properties 파일 참조를 위해
Gradle에서 android 블록 상단에 아래 내용을 추가한다.
코드는 아래와 같다.
def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('app/key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) }
이후 Gradle에서 buildType 블록 상단에
singnigConfigs 블록을 추가한다.
signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } }
또한 앱을 릴리즈(배포용)으로 빌드 하기 위해
buildTypes의 release를
signingConfig signingConfigs.release로 변경한다.
signingConfig signingConfigs.release
프로가드 활성화
앱의 난독화를 위해 프로가드를 활성화해야 한다.
APK 파일 크기를 줄이고 코드를 디컴파일 시
소스 코드를 알 수 없도록 난독화한다.
프로가드 룰 구성을 위해 /android/app/proguard-rules.pro
파일을 생성하고 다음 규칙을 추가한다.
## Flutter wrapper -keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; } -dontwarn io.flutter.embedding.**
Gradle 빌드 시 프로가드 파일 참조가 가능하도록
build.gradle 파일에서 buildTypes 블록 내에
다음 내용을 추가하여 프로가드를 사용한다고 선언한다.
minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
앱 번들 또는 APK 만들기
플레이 스토어 게시할 때 2가지 릴리즈 방식을 사용할 수 있으며
앱 번들 생성 방식과 APK 생성 방식이 있는데
구글 가이드에 의하면 앱 번들 생성을 추천하고 있다.
앱 번들의 장점은 번들 도구와
구글 플레이를 통해 테스트가 가능한 점이며
단점은 arm, x86 코드가 모두 컴파일되어 APK 파일이 무거워진다.
- 앱 번들 생성 명령어
flutter build appbundle
아니 앱에 뭐 아무것도 없는데 37.7MB라니
용량이 너무 큰 것 같다;;
이미지 파일 같은 걸 최적화를 안 해서 그런가?
이건 나중에 고민해 보겠다.
- APK 생성 명령어
flutter build apk --split-per-abi
확실히 APK는 번들 대비 용량이 줄어들었다.
그래도 26.7MB 면 큰 것 같긴 하다.
핸드폰에서 APK 설치 및 테스트
flutter install 명령어를 입력하면
연결된 디바이스(핸드폰)로 APK가 배포되며
테스트를 해볼 수 있다.
연결된 핸드폰에서 정상적으로 동작함을 확인할 수 있다.
이제는 다음 포스팅에서 구글 플레이스토어에 내가 만든 앱을 등록해보겠다.
'플러터' 카테고리의 다른 글
플러터로 개발한 미소닭갈비 앱 구글 플레이스토어 출시 (0) | 2021.03.31 |
---|---|
플러터 개발 앱 구글 플레이스토어에 앱 등록, 배포하기 (미소닭갈비 Flutter App) (0) | 2021.03.30 |
안드로이드 스튜디오 AVD(Android Virtual Device) 에뮬레이터 갤럭시S21+ 추가 방법 (1) | 2021.03.29 |
VSCode 플러터 개발 환경 세팅 (한국어 설정, 마켓 플레이스 패키지 다운로드) (0) | 2021.03.09 |
안드로이드 스튜디오 - 플러터 앱 개발 환경 세팅하기 (1) | 2021.03.08 |