1. ๋Ÿฐ์ฒ˜ ์•„์ด์ฝ˜ ์ƒ์„ฑ

Android Asset Studio์—์„œ ๋Ÿฐ์ฒ˜ ์•„์ด์ฝ˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html

๋Œ€์ถฉ ์•„์ด์ฝ˜์„ ๋งŒ๋“  ๋‹ค์Œ ic_launcher.zip ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์ž.

์••์ถ•ํŒŒ์ผ์„ ํ’€๋ฉด res ํด๋”๊ฐ€ ์žˆ๋‹ค. res ํด๋” ๋‚ด๋ถ€์˜ ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ ๋ฐฐํฌํ•  ํ”„๋กœ์ ํŠธ์˜ android/app/src/main/res ํด๋”์— ๋ณต์‚ฌํ•˜์ž.

  • Flutter ํ”„๋กœ์ ํŠธ๋กœ ์ƒ์„ฑ๋œ ์•ฑ์€ ์ด๋ฏธ ํ•ด๋‹น ํด๋”์— ํ”Œ๋Ÿฌํ„ฐ ์•„์ด์ฝ˜๋“ค์ด ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค. ๋ฎ์–ด์”Œ์šฐ๊ธฐ ํ•ด์ฃผ์ž.

์ดํ›„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ์•„์ด์ฝ˜์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ์•ฑ ์„œ๋ช…

Google Play ์Šคํ† ์–ด์— ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์•ฑ์— ๋””์ง€ํ„ธ ์„œ๋ช…์„ ํ•ด์•ผํ•œ๋‹ค.

  1. KeyStore ๋งŒ๋“ค๊ธฐ
  2. ์•ฑ์œผ๋กœ๋ถ€ํ„ฐ KeyStore์ฐธ์กฐํ•˜๊ธฐ
  3. Gradle์—์„œ ์„œ๋ช…๊ตฌ์„ฑํ•˜๊ธฐ

๋ฐฐํฌํ•  ์•ฑ์˜ ๊ฐœ๋ฐœ์ž ์ •๋ณด๋ฅผ ์•ฑ์— ์ฃผ์ž…ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๋ฅผ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ์ธ์ฆ์„œ์ด๋‹ค.

windows

keytool -genkey -v -keystore c:/Users/[์œˆ๋„์šฐ์‚ฌ์šฉ์ž๋ช…]/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

mac

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

๋ฌผ์–ด๋ณด๋Š” ์งˆ๋ฌธ์— ๋ชจ๋‘ ๋Œ€๋‹ตํ•˜๊ณ  ๋งˆ์ง€๋ง‰์— y๋ฅผ ์ ์–ด์ฃผ๋ฉด, key.jks ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง„ ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ ค์ฃผ๊ณ  ๋๋‚œ๋‹ค.

3. ์•ฑ์œผ๋กœ๋ถ€ํ„ฐ keystore ์ฐธ์กฐ (key.jks ์—†๋Š”๊ฒฝ์šฐ ๋งŒ๋“ค๊ธฐ)

์ƒ์„ฑํ•œ key ํŒŒ์ผ์„ android/app/ ํด๋”์— ๋†”์ฃผ์ž.

๋ฐฐํฌ์šฉ ์•ฑ์„ ๋นŒ๋“œํ•  ๋•Œ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ android/app/ ํด๋”์— key.properties ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.

storePassword=<ํ‚ค์ƒ์„ฑ์‹œ ์ž…๋ ฅํ•œ ์•”ํ˜ธ>
keyPassword=<ํ‚ค์ƒ์„ฑ์‹œ ์ž…๋ ฅํ•œ ์•”ํ˜ธ>
keyAlias=key
storeFile=./key.jks

WFDT1dl.png|451

๊ณต์‹๋ฌธ์„œ์—๋Š” key.properties ํŒŒ์ผ์„ ๊ฐœ์ธ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜๊ณ  ๊ณต๊ฐœ๋œ ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•˜์ง€ ์•Š๋„๋ก ์ ํ˜€์žˆ์œผ๋ฏ€๋กœ,

ํ•ด๋‹น ํŒŒ์ผ์„ android > .gitignore์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

https://blog.kakaocdn.net/dn/vh3Vi/btshhHR6fMV/bWR2sB9zvB3e2CKl6C1k7k/img.png

android/.gitignore

3. Gradle์—์„œ ์„œ๋ช… ๊ตฌ์„ฑํ•˜๊ธฐ

์•ฑ์˜ ์„œ๋ช…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•˜์—ฌ android > app > build.gradle์„ ์ˆ˜์ •ํ•ด์ค„ ์ฐจ๋ก€์ด๋‹ค.

์ฒซ๋ฒˆ์งธ, android { ... } ์œ„์— ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ keystore ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

   def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('app/key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

   android { ...

๋‘๋ฒˆ์งธ, buildTypes ๋ธ”๋Ÿญ์„ ์•„๋ž˜ ์ฝ”๋“œ๋กœ ๋Œ€์ฒดํ•ด์ค€๋‹ค. (debug -> release)

   signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile file(keystoreProperties['storeFile'])
           storePassword keystoreProperties['storePassword']
       }
   }

   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

https://blog.kakaocdn.net/dn/mTZ6n/btr8vsuIFuN/Mv7IkxENpP6evBTAffCys0/img.png

์ด๋ ‡๊ฒŒํ•˜๋ฉด ์•ฑ์˜ release ๋นŒ๋“œ์—์„œ ์ž๋™์œผ๋กœ ์„œ๋ช…์ด ๋œ๋‹ค!

์ด๋ ‡๊ฒŒํ•˜๋ฉด ์•ฑ์˜ release ๋นŒ๋“œ์—์„œ ์ž๋™์œผ๋กœ ์„œ๋ช…์ด ๋œ๋‹ค!

4. ๋นŒ๋“œ ๊ตฌ์„ฑ ๊ฒ€ํ† ํ•˜๊ธฐ

๊ณต์‹ ๋ฌธ์„œ์—์„œ ๊ฒ€ํ† ํ•˜๋ผ๊ณ  ํ•œ ๊ฒƒ๋“ค์„ ๊ฒ€ํ† ํ•ด์ค€๋‹ค.

https://blog.kakaocdn.net/dn/MoNpQ/btr8A40qeRy/4m0h8a5nhdbyCYe0rL5hNk/img.png

5. release ์•ฑ ๋ฒˆ๋“ค ๋นŒ๋“œํ•˜๊ธฐ

์•ฑ์„ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋‹จ๊ณ„์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค.

 

๋ฒ„์ „์€ pubspec.yaml ์—์„œ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.



tpmFfiC.png|535


๋ฒ„์ „์„ ๋ฐ”๊ฟจ์œผ๋ฉด


ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  android ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ appbundle์„ ๋นŒ๋“œํ•ด์ค€๋‹ค.
(cd android ๊ผญ!!!!) ์•ˆํ•˜๋ฉด , ์—๋Ÿฌํ‘œ์‹œ๊ฐ™์€ ์ฝ”๋“œ๋“ค์ด ๋œจ๊ฒŒ๋œ๋‹ค,,,

flutter build appbundle

์•ฑ์˜ ๋ฆด๋ฆฌ์ฆˆ ๋ฒˆ๋“ค์€ (app-release.abb)

ํ”Œ๋Ÿฌํ„ฐ ํ”„๋กœ์ ํŠธ/build/app/outputs/bundle/release path์— ์ƒ์„ฑ๋œ๋‹ค.

 

6. ์•ฑ์„ Play Console์— ์—…๋กœ๋“œ

๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์ฝ˜์†”์— ์—…๋กœ๋“œ ํ•˜๋ฉด๋œ๋‹ค.

์•„๋ž˜ ๋ฒ„์ „์€ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๋•์…˜ ๋ฒ„์ „์ด๋‹ค.

์œ„์—์„œ ๋งŒ๋“  app-release.abb ์ด ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธํ•ด์„œ ์ง‘์–ด๋„ฃ๋Š”๋‹ค.

3I9Sh2k.png|503

์˜ค๋ฅ˜, ๊ฒฝ๊ณ  ๋ฐ ๋ฉ”์„ธ์ง€์˜ ๊ฒฝ์šฐ์—” ์„ ์–ธ์„ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค.

vqtR2Ex.png|392|

๋ฒ„์ „์ด ๊ฒ€ํ† ์ค‘ -> ์ถœ์‹œ๋Œ€๊ธฐ๋กœ ๋ฐ”๋€Œ๋Š”๋ฐ

์ถœ์‹œ๋Œ€๊ธฐ์ผ๋•Œ ์ถœ์‹œ๋ฅผ ๋ˆ„๋ฅด๋ฉด 1์‹œ๊ฐ„๋‚ด๋กœ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด์Šคํ† ์–ด์— ํ•ด๋‹น ์•ฑ์ด ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.