어떻게 발표 경로가 있는 가게에 엑스포 응용을 발표합니까
발표 경로의 신비한 베일을 벗겨봅시다!
2017년에 제가 Expo를 사용하여 앱을 개발하기 시작했을 때 저는 앱 상점 & Play Store에 앱을 하나 가지고 싶었습니다.
저는 그때 가장 빠른 방법이 Git push master라고 생각했어요.😮, 지점도 없고, 요청도 없고, 임시 저장 환경도 없다...프로그램이 준비되면 Expo CLI를 사용하여 Apple & Android를 구축해야 합니다.마지막으로 저
.apk
와.ipa
가 있으면 앱스토어와 플레이스토어에 대한 길고 긴장된 심사를 통해 발표할 수 있습니다.그것은 성공했다...며칠 후에 버그를 복구해야 하거나 기능을 추가하고 싶다고 가정해 보세요.내가 어떻게 했지?나는 어쩔 수 없이 다시 같은 과정을 반복했다...그래서 저는 이러한 변화를 통해 마스터를 추진하고 독립된 응용 프로그램을 구축하여 상점에 제출함으로써 사용자가 며칠 후에 새로운 버전을 볼 수 있도록 합니다. (전제는 응용 프로그램 상점의 심사를 받는 것입니다.)오, 그들은 휴대전화에서 나의 앱을 업데이트한 후에야 이러한 변화를 볼 수 있다!
근데 잠깐만...사실은 그렇지 않다.사용자는 즉시 새 버전에 액세스할 수 있습니다.그게 말이 돼?
구글에서 검색해 보니 OTA의 업데이트를 발견했다.그게 뭐야?
다음은 무엇입니까Expo says about it:
OTA updates allow you to publish a new version of your app JavaScript and assets without building a new version of your standalone app and re-submitting to app stores
와, 그래, 그건 나한테 신선한 일이야!그래서 엑스포는 내 응용 프로그램에서 변경하려면 명령을 작성하면 사람들이 바로 그것을 볼 수 있다고 나에게 알려주었다.당신이 통상적으로 며칠을 기다려야 비준을 받을 수 있을 때, 이것은 마치 꿈과 같다.
OTA는 어떻게 작동합니까?간단히 말하면, 자바스크립트 프로그램에서 명령을 작성하기만 하면 됩니다.그리고 응용 프로그램은 축소되고 코드의 두 버전 (iOS와 안드로이드) 은 엑스포 CDN에 업로드됩니다.
네, 그런데 이것은 제 사용자 핸드폰의 응용 프로그램과 무슨 관계가 있습니까?좋은 질문!엑스포는 문서에 다음과 같이 적혀 있다.
By default, Expo will check for updates automatically when your app is launched and will try to fetch the latest published version. If a new bundle is available, Expo will attempt to download it before launching the experience.
그렇습니다!사용자가 응용 프로그램을 열 때마다 Expo는 명령
expo publish
more details here을 사용하여 업로드한 최신 버전의 코드를 확인하고 가져옵니다!따라서 응용 프로그램의 새로운 독립 버전을 업로드하고 모든 상점의 심사 과정을 다시 통과할 필요가 없습니다!( however, there are a few exceptions that you can find here )이 발견은 나에게 있어서 사람을 진작시킨다!금방 쓸게요!뭔가를 복구하고 내 사용자 핸드폰에서 직접 볼 수 있어서 기쁘다!
그래, 줄리엔, 그럼 채널 발표는?!
우리 그들 곁으로 돌아가자!저는 어떻게 발표 채널을 찾았습니까? 왜 온라인 여행사의 업데이트가 저에게 부족합니까?1년 전에 나는 한 고객을 위해 프리랜서 프로젝트를 했다.이것은 이미 상점에서 출시된 응용 프로그램으로 일부 기능/디자인과 오류 복구를 추가하여 개선해야 한다.그들은 내가 개발하고 있는 버전, 예를 들어 무대에 오르는 환경을 볼 수 있는 방식이 필요하다.
나는 그들에게 WIP를 보여줄 수 없다. 왜냐하면 이것은 사용자에게 영향을 미치기 때문이다.이것이 바로 내가 발표 채널을 만났을 때다!너는 그것들을 서로 다른 서버로 상상할 수 있다. 거기에서 너는 너의 응용 프로그램을 업로드할 수 있다. 모든 응용 프로그램에는 특정한 이름이 있다.예를 들어
expo publish
를 작성할 때 로고 expo publish
(예: expo publish
를 추가할 수 있습니다. 그러면 응용 프로그램이 이 특정 채널에 발표됩니다.여러 채널을 추가할 수 있습니다.이 간단한 작업 흐름을 상상해 보세요.
--release-channel <your-channel>
expo publish --release-channel staging
에서 사용 가능한 스테이지 버전응용 프로그램을 만들어서 상점에 업로드하고 싶다면,
--release-channel production
또는 --release-channel staging
할 수 있습니까?기본적으로 엑스포는 자동으로 채널, 즉 expo build:android
을 추가합니다.OTA 업데이트 기억나세요?따라서 새로 생성된 바이너리 파일은
expo build:ios
채널을 통해서만 업데이트됩니다.이렇게 하면 default
(채널을 지정하지 않음) 으로 프로그램을 발표할 때마다, expo는 default
채널에서 발표되며, 사용자는 새 버전에 접근할 수 있습니다.우리는 또한 다른 채널을 추가하여 이 작업 흐름을 개선할 수 있습니다!이제부터는 채널을 지정하지 않고 응용 프로그램의
expo publish
버전을 발표하기 위해 명령 default
을 사용할 수 있습니다.이 새 버전은 production
채널을 구독하고 새로운 업데이트를 들을 것이다.너는 처음으로 상점에 올리기만 하면 된다.
현재, 당신은 새로운 버전의 응용 프로그램을 개발하여 일부 테스트 사용자에게 보여주고 싶지만, 실시간
expo publish --release-channel production
버전에 영향을 주지 않을 것이라고 상상해 보세요.다른 채널을 만들면 됩니다. 예를 들어
production
이 특정한 production
채널을 구독하기 위해 새로운 바이너리 파일을 만들 수 있습니다. (예를 들어 Testflight 채널에 이 구축을 올릴 수 있습니다.) 이 채널에 새로운 변경 사항을 발표할 때마다 Testflight 사용자는 현재 진행 중인 작업을 볼 수 있습니다!Android의 경우 이 바이너리 파일을 test release 에 업로드할 수 있습니다.무대에 오르는 프로그램에 만족할 때, 새로운 내장 프로그램을 만들 필요가 없다.발표 버전을 새로운 채널로 업그레이드하면 생산 응용 프로그램에 변경 사항을 배치할 수 있습니다.
뭐 공부 해요?애플리케이션을 게시할 때마다 두 가지 작업이 생성됩니다.
a release, identified by a
publicationId
for Android and iOS platforms. A release refers to your bundled source code and assets at the time of publication.a link to the release in the
staging
channel, identified by achannelId
. This is like a commit on a git branch.
당신이 발표한 모든 내용을 보기 위해서는
expo publish --release-channel staging
만 실행하세요.당신은 이런 상황을 보게 될 것이다.판촉으로 돌아가자!
staging
응용 프로그램을 expo publish:history
응용 프로그램으로 업그레이드하고 싶다면, 업그레이드하고 싶은 staging
을 확인하고 실행하기만 하면 됩니다.그렇습니다. 변경 사항은 현재
production
에 있습니다!채널이 변경되었는지 확인하려면 publicationId
을 다시 실행할 수 있습니다!만약 당신의 사용자에게 큰 컴백을 추가했다면?
걱정하지 마십시오. 회전
expo publish:set --publish-id <publicationId> --release-channel production
채널production
만 있으면 됩니다(조심하십시오. 회전하는 채널은 expo publish:history
이 아니라 promotion
입니다.😉)!이렇게 간단하게 발표는
expo publish:rollback --channel-id <channelId>
채널로 돌아갑니다:)당신은 당신이 필요로 하는 모든 업무 흐름을 상상할 수 있습니다. 예를 들어 여러 개의
channelId
채널을 가진 업무 흐름이 응용 프로그램의 다른 버전에 대응하고 각각의 버전을 유지할 수 있습니다!그리고 하나 더!
발표 채널에 대한 모든 내용을 알았으니 코드에서 직접 채널을 방문하는 것이 어떻습니까?
예를 들어 이것은 채널에 따라 환경 변수를 설정하는 데 사용할 수 있다.manifest object의 ReleaseConnel 필드에서 이 정보를 액세스할 수 있습니다.
다음은 엑스포의 예입니다.
You can create a function that looks for the specific release and sets the correct variable.
function getApiUrl(releaseChannel) {
if (releaseChannel === undefined) return App.apiUrl.dev // since releaseChannels are undefined in dev, return your default.
if (releaseChannel.indexOf('prod') !== -1) return App.apiUrl.prod // this would pick up prod-v1, prod-v2, prod-v3
if (releaseChannel.indexOf('staging') !== -1) return App.apiUrl.staging // return staging environment variables
}
발표 채널에 대한 더 많은 정보를 원하신다면, 엑스포 문서를 보십시오. Release channels & Advanced release channels.겸사겸사 한마디 하자면, 만약 당신에게 어떤 문제가 있거나 내가 무엇을 놓쳤다면, 주저하지 마세요. 아래에 있는 평론을 알게 해 주세요!
만약 네가 나의 다음 문장에 흥미가 있다면 나를 따라오는 것을 잊지 마라here;)
Reference
이 문제에 관하여(어떻게 발표 경로가 있는 가게에 엑스포 응용을 발표합니까), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jcoulaud/how-to-publish-an-expo-app-to-the-stores-with-release-channels-1e3n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)