로메오의 블로그

[React Native] URL 배포하기 [Android/iOS] 본문

App & OS/Hybrid

[React Native] URL 배포하기 [Android/iOS]

romeoh 2019. 7. 23. 03:29
반응형

Firebase 목록

 

앱을 개발해서 스토어에 올리지 않고 URL로 배포하는 방법입니다.

 

프로젝트 생성

$ cd /my/project/path
$ react-native init deployTest --version 0.59.8
$ code ./deployTest

이 포스트는 최종적으로 firebase push notification을 적용하는 과정을 알아봅니다.

포스트를 작성하는 지금 현재 react native는 0.69.4까지 출시 되었는데,

해당 버전으로 프로젝트를 만들 경우 다른 라이브러리들과 호환에 문제가 많았습니다.

그래서 제가 사용해봤던 검증된 버전으로 포스트를 진행하도록 하겠습니다.

최신 버전에 대해서는 직접 적용해보시기 바랍니다.

 

Android 배포준비

Android Studio에서 프로젝트를 열어서 Application ID를 원하는 이름으로 변경합니다.

[React Native] 패키지명, 번들명 변경하기 Package, Bundle [Android, iOS]
위 포스트를 참조하세요.

 

키스토어 생성하기

$ keytool -genkey -v -keystore deploy-test-key.keystore -alias deploy-test-alias -keyalg RSA -keysize 2048 -validity 10000

keytool -genkey -v 

-keystore deploy-test-key.keystore : 키스토어 이름: deploy-test-key.keystore

-alias deploy-test-alias  : 알리아스: deploy-test-alias

-keyalg RSA -keysize 2048 

-validity 10000 : 유효기간: 10,000일

 

위 명령어로 키스토어를 생성합니다.

질문에 답을 하시면 됩니다.

중요한건 키 저장소 비밀번호와 인증서 비밀번호입니다.

deploy-test-key.keystore가 생성되었습니다.

$ mv deploy-test-key.keystore android/app/

생성된 키스토어를 android/app 폴더로 이동합니다.

 

gradle.properties

MYAPP_RELEASE_STORE_FILE=deploy-test-key.keystore
MYAPP_RELEASE_KEY_ALIAS=deploy-test-alias
MYAPP_RELEASE_STORE_PASSWORD=abc123
MYAPP_RELEASE_KEY_PASSWORD=abc123

키스토어 파일명과 alias, 비밀번호를 추가합니다.

app/build.gradle

android {
    defaultConfig {
        ....
    }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                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
        }
    }
}

app/build.gradle에 위 코드를 추가합니다.

 

bundle 생성

$ mkdir android/app/src/main/assets
$ react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

bundle을 만들면서 개발자 모드를 false 합니다.

release apk 생성

$ cd android
$ ./gradlew assembleRelease

android/app/build/outputs/apk/release/app-release.apk가 생성되었습니다.

app-release.apk를 서버에 올려서 배포하면 됩니다.

 

 

iOS 배포준비

$ cd ios
$ pod init

ios/Podfile을 열어서 아래와 같이 deployTest와 deployTestTests 타겟만 남기고 나머지는 제거합니다.

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'deployTest' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for deployTest

  target 'deployTestTests' do
    inherit! :search_paths
    # Pods for testing
  end

end
$ pod install
$ open deployTest.xcworkspace

react native 0.60 이상 버전은 podfile이 자동으로 생성되어 있으니 위 과정은 생략하셔도 됩니다.

 

Bundle Identifier를 변경합니다.

 

 

iOS 인증서와 프로비저닝 만들기

[XCode] iOS 인증서 / 프로비즈닝 프로파일 등록하기
위 포스트를 참조해서 인증서를 만듭니다.

참고로 iOS를 URL로 배포할려면 회사 차원의 Enterprise 계정이 필요합니다.

XCdoe > Proferences > Accounts에서 로그인 하시고 Download Manual Profiles를 누릅니다.

Target > deployTest > General > Signing에서 Automatically manage signing을 체크하고

Team에서 인증서 등록한 Team명을 선택합니다.

Target > deployTestTests > General > Signing에서 Automatically manage signing을 체크하고

Team에서 인증서 등록한 Team명을 선택합니다.

 

Archive 생성

아이폰을 연결하고 scheme을 기기로 선택합니다.

Product > Archive를 누릅니다.

 

Distribute Ap을 누릅니다.

Enterprise를 선택하고 Next

Next

 

짜짠~

안됩니다.ㅋㅋ

회사에서 Enterprise 계정을 사용하는데, 저는 개인개발자 계정이라서 더이상 진행이 안됩니다.

회사에서 Enterprise 계정을 구매하셨으면 여기서 Next만 누르면 바로 Export 버튼이 나오고 plist와 ipa 파일을 생성할 수 있습니다.

 

 

Firebase 목록

반응형
Comments