React Native ์ฑ์ ๊ตฌ๊ธ ํ๋ ์ด ์คํ ์ด์ ์ถ์ํ๋ ์ ์ฒด ๊ณผ์ ์ ์์ธํ ์ค๋ช
ํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
1. ์ฑ ์ค๋น ๋จ๊ณ
- Android ์ฑ ์๋ช
ํค ์์ฑ
```bash
keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
```
์ด ๊ณผ์ ์์ ํค์คํ ์ด ๋ฐ ํค ๋น๋ฐ๋ฒํธ, ๊ฐ๋ฐ์ ์ ๋ณด๋ฅผ ์
๋ ฅํ๊ฒ ๋ฉ๋๋ค. ์ด ํค๋ ์ฑ์ ๋ชจ๋ ์
๋ฐ์ดํธ์ ์ฌ์ฉ๋๋ฏ๋ก ์์ ํ๊ฒ ๋ณด๊ดํด์ผ ํฉ๋๋ค.
- gradle.properties ์ค์
```properties
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
```
- android/app/build.gradle ์ค์
```gradle
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
```
2. ์ฑ ๋น๋
- ์ฑ ๋ฒ์ ์ค์ (android/app/build.gradle)
```gradle
android {
defaultConfig {
versionCode 1 // ๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด ์
๋ฐ์ดํธ์ ์ฆ๊ฐ
versionName "1.0.0" // ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ๋ฒ์
}
}
```
- Release APK/AAB ์์ฑ
```bash
# APK ์์ฑ
cd android
./gradlew assembleRelease
# AAB(Android App Bundle) ์์ฑ - ๊ถ์ฅ
./gradlew bundleRelease
```
3. ๊ตฌ๊ธ ํ๋ ์ด ์ฝ์ ์ค๋น
- Google Play Console ๊ณ์ ์์ฑ (๊ฐ๋ฐ์ ๋ฑ๋ก๋น $25 ์ผํ์ฑ)
- https://play.google.com/console ์ ์
4. ์ฑ ๋ฑ๋ก ๊ณผ์
a) ์ฑ ๊ธฐ๋ณธ ์ ๋ณด ์
๋ ฅ
- ์ฑ ์ด๋ฆ
- ๊ธฐ๋ณธ ์ธ์ด
- ์ฑ/๊ฒ์ ์ ํ
- ๋ฌด๋ฃ/์ ๋ฃ ์ ํ
b) ์คํ ์ด ๋ฑ๋ก์ ๋ณด ์ค๋น
- ์ฑ ์ค๋ช
(์งง์ ์ค๋ช
80์, ์ ์ฒด ์ค๋ช
4000์)
- ์ฑ ์์ด์ฝ (512x512 PNG)
- ์คํฌ๋ฆฐ์ท (์ต์ 2์ฅ)
- ๊ทธ๋ํฝ ์ด๋ฏธ์ง (ํผ์ฒ๋ ๊ทธ๋ํฝ 1024x500)
- ๊ฐ์ธ์ ๋ณด์ฒ๋ฆฌ๋ฐฉ์นจ URL
c) ์ฝํ
์ธ ๋ฑ๊ธ ์ค์
- ์ฑ ์ฝํ
์ธ ๊ด๋ จ ์ค๋ฌธ ์๋ต
- ์๋์ผ๋ก ๋ฑ๊ธ ์ฐ์
d) ํ๊ฒ ์ฐ๋ น๋ ์ค์
- COPPA ๊ท์ ์ค์ ์ฌ๋ถ
- ํ๊ฒ ์ฐ๋ น๋ ์ ํ
e) ๊ฐ๊ฒฉ ๋ฐ ๋ฐฐํฌ ๊ตญ๊ฐ ์ค์
- ๋ฌด๋ฃ/์ ๋ฃ ์ ํ
- ๋ฐฐํฌ ๊ตญ๊ฐ ์ ํ
5. APK/AAB ์
๋ก๋
- ๊ตฌ๊ธ ํ๋ ์ด ์ฝ์์ 'ํ๋ก๋์
' ํธ๋ ์ ํ
- ์ ๋ฒ์ ๋ง๋ค๊ธฐ
- AAB/APK ํ์ผ ์
๋ก๋
- ๋ฆด๋ฆฌ์ค ๋
ธํธ ์์ฑ
6. ์ฌ์ฌ ๋ฐ ์ถ์
- ๋ชจ๋ ์ ๋ณด ์
๋ ฅ ์๋ฃ ํ ๊ฒํ ์์ฒญ
- ๊ตฌ๊ธ์ ์ฌ์ฌ ์งํ (๋ณดํต 2-3์ผ ์์)
- ์ฌ์ฌ ํต๊ณผ ์ ์๋ ์ถ์
์ฃผ์ ์ฒดํฌํฌ์ธํธ:
1. ์ฑ ๊ถํ ํ์ธ
```xml
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- ํ์ํ ๊ถํ๋ง ์ต์ํ์ผ๋ก ์์ฒญ -->
```
2. ์ฑ ์ฑ๋ฅ ์ต์ ํ
- ์ฑ ํฌ๊ธฐ ์ต์ ํ
- ์์ ์ฑ๋ฅ ์ต์ ํ
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๊ด๋ฆฌ
3. ํ
์คํธ
- ๋ค์ํ ๋๋ฐ์ด์ค์์ ํ
์คํธ
- ์คํ๋ผ์ธ ๋์ ํ
์คํธ
- ๋คํธ์ํฌ ์ํ ๋ณํ ๋์
4. ๋ณด์
- ProGuard ์ค์ ํ์ธ
```gradle
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
```
5. ๊ณตํต ์ด์ ๋์
- ์ฑ ํฌ๋์ ๋ฆฌํฌํ
๋๊ตฌ ์ค์ (์: Crashlytics)
- ์ฌ์ฉ์ ํผ๋๋ฐฑ ์์ง ์ฑ๋ ์ค๋น
- ๋ฒ์ ์
๋ฐ์ดํธ ์ ๋ต ์๋ฆฝ
์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์ณ ์ฑ์ด ์ฑ๊ณต์ ์ผ๋ก ์ถ์๋๋ฉด, ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง๊ณผ ์
๋ฐ์ดํธ๋ฅผ ํตํด ์ฑ์ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ๊ตฌ๊ธ ํ๋ ์ด ์ฝ์์์ ์ ๊ณตํ๋ ๋ค์ํ ํต๊ณ์ ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ํ์ฉํ์ฌ ์ฑ์ ๊ฐ์ ํด๋๊ฐ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
'1์ธ๊ฐ๋ฐ ์์ตํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Expo React Native ๋น๋ํ๋๋ฒ (1) | 2024.10.25 |
---|---|
Android ์๋๋ก์ด๋ ์ฑ ์๋ช ํค ์์ฑํ๊ธฐ (0) | 2024.10.23 |
ai ์ํ ๋ง๋ค๊ธฐ - ๊ธฐ์ด , ์ํ ์นด๋ฉ๋ผ ์ท ์ข ๋ฅ ์ ๊ธฐ๋ฒ ์์๋ณด๊ธฐ (0) | 2024.08.14 |
Hustle Culture ํ์ฌ์ปฌ์ณ์ ์๋๋ ๊ฐ๊ณ Quiet Quitting ์กฐ์ฉํ ์ฌ์ง์ด ์ดํ (0) | 2024.08.11 |
SEO ํค์๋ ์ฐพ๋๋ฒ google ads keyword ์ฌ์ฉ (0) | 2024.08.10 |