1์ธ๊ฐœ๋ฐœ ์ˆ˜์ตํ™”

Android ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์„œ๋ช… ํ‚ค ์ƒ์„ฑํ•˜๊ธฐ

์ฃผ์˜ ๐Ÿฑ 2024. 10. 23. 08:58
728x90
๋ฐ˜์‘ํ˜•

React Native ์•ฑ์„ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด์— ์ถœ์‹œํ•˜๋Š” ์ „์ฒด ๊ณผ์ • ์ค‘ ์ฒซ๋ฒˆ์งธ

Android ์•ฑ ์„œ๋ช… ํ‚ค๋ž€? (Keystore)

์•ฑ ์„œ๋ช… ํ‚ค๋Š” ์•ฑ์˜ ์‹ ์›์„ ์ฆ๋ช…ํ•˜๋Š” ๋””์ง€ํ„ธ ์ธ์ฆ์„œ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๋ชฉ์ :

  • ์•ฑ ๊ฐœ๋ฐœ์ž ์‹ ์› ํ™•์ธ
  • ์•ฑ์˜ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
  • ์•ˆ์ „ํ•œ ์—…๋ฐ์ดํŠธ ๋ณด์žฅ

ํŠนํžˆ ์ค‘์š”ํ•œ ์ :

  • ํ‚ค๋ฅผ ๋ถ„์‹คํ•˜๋ฉด ๊ฐ™์€ ํŒจํ‚ค์ง€๋ช…์œผ๋กœ ์•ฑ ์—…๋ฐ์ดํŠธ ๋ถˆ๊ฐ€๋Šฅ
  • ํ‚ค๋Š” ์˜๊ตฌ์ ์ด๋ฉฐ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
  • ๋ณด์•ˆ์ƒ ๋งค์šฐ ์ค‘์š”ํ•œ ์ •๋ณด
  1. ํ‚ค์Šคํ† ์–ด ์ƒ์„ฑ ๋ฐฉ๋ฒ•

ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•œ ์ƒ์„ฑ

keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…:

  • -genkeypair: ํ‚ค ํŽ˜์–ด ์ƒ์„ฑ
  • -v: ์ƒ์„ธ ์ถœ๋ ฅ
  • -storetype PKCS12: ํ‚ค์Šคํ† ์–ด ํ˜•์‹
  • -keystore: ์ƒ์„ฑ๋  ํ‚ค์Šคํ† ์–ด ํŒŒ์ผ๋ช…
  • -alias: ํ‚ค ๋ณ„์นญ
  • -keyalg RSA: ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • -keysize 2048: ํ‚ค ํฌ๊ธฐ
  • -validity 10000: ์œ ํšจ๊ธฐ๊ฐ„(์ผ)

B. Android Studio๋ฅผ ์ด์šฉํ•œ ์ƒ์„ฑ

  1. Build → Generate Signed Bundle/APK ์„ ํƒ
  2. 'Create new' ๋ฒ„ํŠผ ํด๋ฆญ
  3. ํ‚ค์Šคํ† ์–ด ์ •๋ณด ์ž…๋ ฅ:
Key store path: ํ‚ค์Šคํ† ์–ด ์ €์žฅ ์œ„์น˜ Password: ํ‚ค์Šคํ† ์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ Alias: ํ‚ค ๋ณ„์นญ Validity: ์œ ํšจ๊ธฐ๊ฐ„ Certificate: ์ธ์ฆ์„œ ์ •๋ณด (์ด๋ฆ„, ์กฐ์ง ๋“ฑ)
  1. ํ‚ค์Šคํ† ์–ด ์ •๋ณด ๊ด€๋ฆฌ

A. ํ”„๋กœ์ ํŠธ์— ํ‚ค์Šคํ† ์–ด ์„ค์ •

 
# android/gradle.properties
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

B. build.gradle ์„ค์ •

gandroid {
    ...
    signingConfigs {
        release {
            storeFile file(MYAPP_UPLOAD_STORE_FILE)
            storePassword MYAPP_UPLOAD_STORE_PASSWORD
            keyAlias MYAPP_UPLOAD_KEY_ALIAS
            keyPassword MYAPP_UPLOAD_KEY_PASSWORD
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}
 
  1. ํ‚ค์Šคํ† ์–ด ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜๊ธฐ

์ค‘์š”ํ•œ ๋ณด์•ˆ ์ˆ˜์น™๋“ค:

A. ํ‚ค์Šคํ† ์–ด ํŒŒ์ผ ๋ณดํ˜ธ

  • ์•ˆ์ „ํ•œ ์˜คํ”„๋ผ์ธ ์ €์žฅ์†Œ์— ๋ฐฑ์—…
  • ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ์ปค๋ฐ‹ํ•˜์ง€ ์•Š๊ธฐ
  • .gitignore์— ์ถ”๊ฐ€
*.keystore
*.jks
gradle.properties

B. ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณดํ˜ธ

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์‚ฌ์šฉ
  • ๋ณ„๋„์˜ ๋ณด์•ˆ ์ €์žฅ์†Œ ์‚ฌ์šฉ
# ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ์˜ˆ์‹œ
export MYAPP_UPLOAD_STORE_PASSWORD=*****
export MYAPP_UPLOAD_KEY_PASSWORD=*****
  1. ํ‚ค์Šคํ† ์–ด ์ •๋ณด ํ™•์ธ

๊ธฐ์กด ํ‚ค์Šคํ† ์–ด ์ •๋ณด ํ™•์ธ:

keytool -list -v -keystore my-upload-key.keystore

์ถœ๋ ฅ๋˜๋Š” ์ •๋ณด:

  • ๋ณ„์นญ
  • ์ƒ์„ฑ์ผ์ž
  • ์œ ํšจ๊ธฐ๊ฐ„
  • ์ธ์ฆ์„œ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ
  • ์†Œ์œ ์ž ์ •๋ณด
  1. ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์•ฑ ์„œ๋ช…

๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์•ฑ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜๋ฉด:

  • ๊ตฌ๊ธ€์ด ์•ฑ ์„œ๋ช… ํ‚ค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌ
  • ์—…๋กœ๋“œ ํ‚ค๋งŒ ๋กœ์ปฌ์—์„œ ๊ด€๋ฆฌ
  • ํ‚ค ๋ถ„์‹ค ์œ„ํ—˜ ๊ฐ์†Œ

์„ค์ • ๋ฐฉ๋ฒ•:

  1. ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์ฝ˜์†” ์ ‘์†
  2. ์•ฑ ์„ ํƒ → ์„ค์ • → ์•ฑ ๋ฌด๊ฒฐ์„ฑ
  3. ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์•ฑ ์„œ๋ช… ๋“ฑ๋ก
  4. ๋ฌธ์ œ ํ•ด๊ฒฐ

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋“ค:

  • ํ‚ค์Šคํ† ์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถ„์‹ค: ๋ณต๊ตฌ ๋ถˆ๊ฐ€๋Šฅ, ์ƒˆ ํŒจํ‚ค์ง€๋ช…์œผ๋กœ ์žฌ๋ฐฐํฌ ํ•„์š”
  • ์„œ๋ช… ๋ถˆ์ผ์น˜: ๋ฆด๋ฆฌ์ฆˆ ๋นŒ๋“œ์˜ ์„œ๋ช…์ด ์ด์ „๊ณผ ๋‹ค๋ฅธ ๊ฒฝ์šฐ
  • ๋นŒ๋“œ ์˜ค๋ฅ˜: ์„œ๋ช… ์„ค์ • ์˜ค๋ฅ˜

์ด๋Ÿฌํ•œ ์•ฑ ์„œ๋ช… ํ‚ค์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ๋Š” ์•ฑ ๋ฐฐํฌ์˜ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์ด๋ฏ€๋กœ, ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•