-
[Flutter] Flutter 앱 출시 하기Flutter 2021. 4. 18. 21:24반응형
#Flutter 앱 출시 하기
플러터 앱을 만들고 구글 스토어에 등록하기
1. 아이콘 생성
[Flutter] 플러터 앱 아이콘(icon) 변경하기
해당 글을 참고 하도록 하자
2. 앱 서명하기
개발자의 정보를 앱에 주입하기 위해 앱 서명을 하며 이는 개발자를 인증하기 위한 일종의 인증서라고 이해하자
Java에서 제공하는 keytool을 이용해서 keystore(앱 서명서)를 생성하며 keystore 를 생성하여 앱을 인증하며
다음 명령을 통해 keystore를 생성 할 수 있다 해당 명령은 window 기준이며 linux 계열일 명령이 다르다
keytool -genkey -v -keystore c:/Users/[사용자 이름]/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
내용을 살펴보면 앱 서명서(키파일: key.jks)를 해당경로(c:/Users/[사용자 이름])에 저장하고 서명서를 암호화
암호화 알고리즘은 RSA를 사용하며 키 사이즈는 2048 크기로 하고 서명서의 유효기간은 10000일로 한다
내용은 잘모른다 하여도 key.jks 파일이 저장되는 위치(c:/Users/[사용자 이름])는 잘기억하자
3. 앱으로부터 keysotre 참조하기
위에서 생성된 key.jks 파일을 플러터 프로젝트 android/app 아래에 넣어준후 key.properties 파일 생성
key.properties 파일 생성 위치는 android 폴더 아래에 만들어주면 되고, 파일 내용은 다음 과 같이 작성
storePassword=<키생성시 입력한 암호> keyPassword=<키생성시 입력한 암호> keyAlias=key storeFile=./key.jks
4. Proguard 사용
Proguard는 배포할 앱의 소스코드를 난독화하는 설정이며, APK 파일의 크기를 줄이고 소스코드를 난독화
Proguard Rule을 구성하기 위해 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.**
파일 생성 위치가 헷갈릴 수 있으니 사진을 참고
5. Gradle에서 서명 구성
해당 Gradle 파일은 android/app/build.gradle 파일이며,
Gradle 빌드시 key.properties 파일을 참조하도록 android 블럭 바로 위 상단에 아래의 내용을 추가한다
// Gradle 서명 구성 def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android { ... }
6. release 속성 변경
배포(release)용 으로 빌드하기 위해 android 블럭 내부의 buildType 을 release 속성으로 변경하고
buildType 상단에 singnigConfigs 블럭을 추가한다, 또한 buildType 블럭안에 proguard-rules.pro 파일을
참조하여 코드 난독화와 사이즈를 축소할 수 있도록 buildType 블럭 내용을 아래와 같이 수정한다
android { compileSdkVersion 30 sourceSets { ... } defaultConfig { ... } signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } } buildTypes { release { // release 속성으로 변경 signingConfig signingConfigs.release // start of 코드난독화 및 사이즈 축소 minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // end of 코드난독화 및 사이즈 축소 } } }
7. AndroidManifest.xml 검토
android/app/src/main/AndroidManifest.xml 파일을 열어 앱의 최종 이름과 퍼미션 설정 아이콘 설정 등을 확인
8. appbundle
프로젝트 루트 경로에서 다음 명령을 통해 빌드 실행
flutter build appbundle
빌드를 정상적으로 실행 후 종료되면 해당경로에 appbundel 이 생성된다.
9. 플레이스토어 등록
구글 플레이스토어에 앱을 등록 하려 하면 아래와 같은 화면을 볼수있는데
위에서 만들었던 app-release.aab 파일을 업로드 해서 앱을 출시 하면된다
반응형'Flutter' 카테고리의 다른 글
[Flutter] 플러터 파이어베이스 연결 | 안드로이드 (0) 2021.04.25 [Flutter] 플러터 앱 아이콘(icon) 변경하기 (1) 2021.04.18 [Flutter] 로또 추천번호 생성 앱 & 애드몹 (AdMob) 광고 붙이기 [3] 편 (플러터 앱 코드) (1) 2021.04.18 [Flutter] 로또 추천번호 생성 앱 & 애드몹 (AdMob) 광고 붙이기 [2] 편 (백엔드서버) (0) 2021.04.18 [Flutter] 로또 추천번호 생성 앱 & 애드몹 (AdMob) 광고 붙이기 [1] 편 (앱 설명 & 앱 구조) (1) 2021.04.17