네이티브 프로젝트
광고, 구매, 그리고 앱을 맡아 관리하는 개발자를 위한 전체 휴대폰 프로젝트예요.
Native는 앱 전체를 휴대폰 프로젝트로 내려 줘요. ZIP 파일 하나로 받거나 GitHub 저장소로 푸시할 수 있어요. 먼저 앱 이름과 com.yourcompany.yourapp 같은 앱 ID를 입력하세요. 이 ID는 스토어가 내 앱을 알아보는 방법이고, 한번 게시하면 바꿀 수 없어요.
그러면 창에 앱을 빌드하는 정확한 명령어가 Android용과 iPhone용으로 나와요.
npm install && npm run build
npx cap add android
npm run icons
npx cap sync && npx cap open androidiPhone에서는 ios가 android를 대신하고, 마지막 명령은 Xcode를 열어요.
여기서부터는 스토어마다 정해진 길이에요. Android Studio나 Xcode에서 앱에 서명하고, 업로드하고, 테스트하고, 스토어 페이지를 채운 뒤 출시하세요. Android 서명 키와 그 비밀번호는 안전하게 보관하세요. 모든 업데이트는 같은 키로 서명해야 해요. Android Studio나 Mac이 없어도 GitHub가 대신 빌드할 수 있어요: 클라우드에서 빌드.
프로젝트 받기: 다운로드 또는 GitHub
1단계의 Download the project에는 App name과 App ID, 두 개의 입력란이 있어요. ID는 처음에 com.setherion.과 앱 이름으로 채워져 있고, 역도메인 형식으로 써야 해요. Download project (.zip) 버튼을 누르면 앱 이름을 딴 ZIP 파일이 만들어져요. 이 파일에는 웹 프로젝트, 휴대폰 파일, 앱에 테이블이 있을 때의 schema.sql, 게임 아트가 있다면 게임 아트, 그리고 아이콘과 실행 화면 이미지가 들어 있어요. 유료 요금제가 필요해요.
대신 or push to GitHub를 쓸 수도 있어요. Connect with GitHub로 연결하거나 토큰을 붙여넣고, Repo name을 정한 다음 Export to GitHub를 누르세요. 저장소는 비공개로 만들어지고, Open repo를 누르면 그곳으로 이동해요. 이것도 유료 요금제가 필요해요.
Android에서 Native 사용하기: 단계별 안내
- Download the project: 위에서 설명한 방법과 같아요.
- Build it: Node 22와 Android Studio가 필요해요. 창에 나오는 명령어를 실행하세요. 앱이 광고나 구매를 쓴다면
npm run native:setup이npx cap add android뒤에 추가돼요. - Sign it: Android Studio에서 Build를 선택한 다음 Generate Signed App Bundle을 고르세요. 키를 만들고 키와 그 비밀번호를 잘 보관하세요. 모든 업데이트에 같은 키가 필요해요.
- Upload it and test it: Play Console에서 앱을 만들고, .aab 파일을 Internal testing에 업로드한 다음 스토어 페이지, 콘텐츠 등급, Data safety를 채우세요. 광고를 쓴다면 광고 ID도 선언해야 해요.
- Release: 심사는 몇 시간에서 이틀까지 걸려요. 2023년 11월 이후에 만든 개인 Google Play 계정은 먼저 비공개 테스트가 필요해요.
iPhone에서 Native 사용하기: 단계별 안내
- Download the project: Android와 같은 ZIP 파일이에요.
- Build it: Xcode가 설치된 Mac과 연회비가 $99인 Apple 개발자 계정이 필요해요.
ios를android대신 넣어서 같은 명령어를 실행하세요. - Sign it and upload it: Xcode에서 Signing & Capabilities를 열고 팀을 고르세요. 광고나 구매를 쓴다면 In-App Purchase를 추가하세요. 그다음 Product, Archive, Distribute 순서로 진행해서 App Store Connect로 보내세요.
- Try it on your iPhone: TestFlight로 써 보세요.
- Fill the store page and send it for review: 광고를 쓰면 Apple은 광고를 추적으로 봐요.
클라우드에서 빌드
Android Studio도 Mac도 필요 없어요. GitHub가 자체 컴퓨터에서 앱을 빌드할 수 있어요. 1단계에서 프로젝트를 GitHub에 올리면 저장소에 Android용과 iPhone용, 두 개의 빌드 워크플로가 들어가요. 그러면 Build it 단계에 Build it in the cloud가 나타나고, GitHub의 워크플로 페이지로 가는 버튼이 있어요.
GitHub에서 Actions를 열고 Android build 또는 iPhone build를 고른 뒤 Run workflow를 누르고 무엇을 빌드할지 선택하세요:
| 워크플로 | 선택 | 받는 것 |
|---|---|---|
| Android build | Test APK | 내 휴대폰에 설치할 앱이에요. 실행의 Artifacts에 있어요. 준비할 것이 없어요. |
| Android build | Make a new key | 서명 키예요. Google Play에 처음 올리기 전에 한 번 만들어요. 비공개 저장소에서만 돼요. |
| Android build | Google Play bundle (.aab) | Play Console용 서명된 파일이에요. 실행할 때마다 버전 번호가 올라가요. |
| iPhone build | Check that it builds | 앱이 iPhone용으로 컴파일된다는 확인이에요. Apple 계정이 필요 없어요. |
| iPhone build | TestFlight | 서명되어 App Store Connect로 보내진 앱이에요. TestFlight로 설치해요. |
비공개 저장소는 GitHub 컴퓨터를 한 달에 2,000분까지 무료로 써요. Android 빌드는 몇 분이면 되고, GitHub는 Mac 1분을 10분으로 계산해요. 각 단계는 저장소의 README에 있어요.
첫 Google Play bundle 전에
- Make a new key를 실행하고 그 실행에서 upload-key를 내려받으세요.
upload.jks와 비밀번호를 저장소 밖의 안전한 곳에 보관하세요. 모든 업데이트는 같은 키로 서명해야 해요.- 저장소에서 Settings, Secrets and variables, Actions를 열고, 각 파일의 내용으로 세 가지 시크릿을 추가하세요:
ANDROID_KEYSTORE_BASE64,ANDROID_KEYSTORE_PASSWORD,ANDROID_KEY_ALIAS. - Google Play bundle (.aab) 항목을 실행하고 파일을 Play Console의 Internal testing에 올리세요.
첫 TestFlight 빌드 전에
- App Store Connect에서 1단계와 같은 앱 ID로 앱을 만드세요.
- Users and Access, Integrations, App Store Connect API에서 Admin 역할의 키를 생성하고 .p8 파일을 내려받으세요. Apple은 한 번만 내려받게 해요.
- 저장소에 네 가지 시크릿을 추가하세요:
APPLE_TEAM_ID(developer.apple.com의 Membership details),ASC_KEY_ID,ASC_ISSUER_ID, 그리고 .p8 파일의 내용인ASC_KEY_P8. - TestFlight를 실행하세요. 몇 분 뒤 빌드가 App Store Connect의 TestFlight에 나타나요. 워크플로가 앱이 표준 암호화만 쓴다고 Apple에 알려 주므로 TestFlight가 묻지 않아요.
클라우드 빌드 이전에 만든 GitHub 연결은 워크플로를 추가할 수 없어요. 단계에서 알려 주고, 1단계의 Reconnect로 해결돼요.
휴대폰 앱의 계정
휴대폰 앱에서는 이메일과 비밀번호로 로그인해요. Google 버튼과 이메일로 받는 로그인 링크는 거기서 저절로 숨겨져요. 그래서 Delete account button 점검이 중요해요. Apple은 회원가입을 할 수 있는데 계정 삭제 버튼이 없는 앱을 거부해요.
광고와 구매
광고를 보여 주거나 무언가를 판매하는 게임이 실제로 작동하는 곳은 Native 프로젝트뿐이에요. 광고는 Google AdMob이, 구매는 RevenueCat을 통해 각 스토어가 제공해요. 에디터의 미리보기에서는 둘 다 가짜로 동작해서(“Test ad”, “Test purchase”, 돈은 빠져나가지 않아요) 써 볼 수 있고, 게시된 웹사이트에서는 숨겨져요. Easy way에서는 게임이 이것들 없이 실행돼요.
프로젝트는 Google의 테스트 광고로 시작하는데, 테스트 광고는 수익이 나지 않아요. 내 광고 ID와 스토어 키를 src/monetize.keys.json에 넣고 npm run native:setup을 실행하세요. 각각 어디서 받는지는 프로젝트의 README에 나와 있어요.
키 파일에 들어가는 것
이 파일에는 AdMob 앱 ID, Android와 iPhone용 보상형 광고와 전면 광고의 광고 단위 ID, 그리고 각 스토어의 RevenueCat 키가 들어가요(Android는 goog_, iPhone은 appl_로 시작해요). RevenueCat 키가 없거나 상품이 없으면 아무것도 판매되지 않아요.
진짜 광고를 내보내려면 AdMob 계정, 앱, 광고 단위를 만들고, ID를 파일에 넣고, 새로 만든 네이티브 폴더에서 npm run native:setup을 실행하고, 웹사이트에 app-ads.txt 파일을 게시하세요. 구매를 쓰려면 Play Console과 App Store Connect에서 src/monetize.json과 같은 ID로 상품을 만들고, 두 스토어를 모두 RevenueCat 프로젝트에 연결하세요. iPhone에서는 In-App Purchase capability를 추가하세요.
두 스토어 모두 개인정보 처리방침 링크를 요구하고, Restore purchases 버튼은 필수예요. 프로젝트에 이 버튼이 들어 있어요. 광고 사이에는 처음 30초 동안, 직전 광고에서 60초 안에, 그리고 광고 제거 상품을 구매한 플레이어에게는 앱이 전면 광고를 건너뛰어요.
이 페이지가 도움이 됐나요?
