React Native 앱의 자동 버전 관리
7675 단어 fastlanereactreactnativeversion
문제
앱 버전을 1.0.0으로 업데이트해야 합니다.
1.
android/app/build.gradle
를 열어 버전을 업데이트하고 빌드 번호를 올립니다.2. 빌드 구성 파일을 직접 편집하면 오류가 발생하기 쉽기 때문에 Xcode를 사용하여 iOS에 대해 동일한 작업을 수행합니다.
3. 모든 일관성을 유지해야 하므로 JS 측에서 사용자에게 표시되는 버전에 대한 참조가 올바르도록
package.json
을 열고 버전을 업데이트합니다.import { version } from "./package.json"
console.log(version)
// 1.0.0
나는 매우 생산적이고 행복합니다!
그런 일을 겪은 후 개발자가 없다고 말했습니다.
해결책
이상적인 환경은 단일 버전 번호만 업데이트하는 것입니다. 우리가 할 일은 다음과 같습니다.
1.
npm version [patch|minor|major]
를 사용하여 JS 패키지 버전을 처리합니다(semantic versioning 참조).JS 버전은 우리의 진실의 원천입니다. 따라서 Android 및 iOS 버전은
package.json
버전이 설정된 것과 일치해야 합니다.2. fastlane을 사용하여 Android 및 iOS 쪽을 처리합니다.
fastlane is an amazing open source tool focused at automating Android and iOS tasks. It has a wide library of community developed plugins that can help us handle things like, versioning.
3. 위의 2단계를 단일 npm 스크립트로 결합합니다.
단계
새로운 React Native 프로젝트를 시작점으로 사용합니다.
npx react-native init MyApp
fastlane이 아직 없는 경우 설치하십시오.
# Install the latest Xcode command line tools
xcode-select --install
# Install fastlane using RubyGems
sudo gem install fastlane -NV
# Alternatively using Homebrew
brew install fastlane
fastlane 디렉터리를 설정하고 빈 fastfile을 만듭니다.
cd MyApp
mkdir fastlane && cd fastlane
touch Fastfile
React Native 프로젝트의 루트에서
fastlane
명령을 실행할 수 있기를 원합니다. 따라서 루트 디렉토리에서 버전 관리 플러그인을 설치합니다.cd ..
# Install plugins
fastlane add_plugin increment_version_name increment_version_code load_json
gemfile 생성 여부를 묻는 메시지가 나타나면 '예'라고 말하세요.
처음 두 개의 플러그인은 Android의 버전, 버전 코드를 처리하기 위한 것이고 세 번째 플러그인은 JSON 파일(당사
package.json
)을 읽기 위한 것입니다.다음으로 fastlane 스크립트를 추가하겠습니다.
fastlane/Fastfile
의 fastfile에 다음을 복사합니다. desc 'Android: Increment versionCode and set versionName to package.json version.'
package = load_json(json_path: "./package.json")
private_lane :inc_ver_and do
increment_version_code(
gradle_file_path: "./android/app/build.gradle",
)
increment_version_name(
gradle_file_path: "./android/app/build.gradle",
version_name: package['version']
)
end
desc 'iOS: Increment build number and set the version to package.json version.'
private_lane :inc_ver_ios do
package = load_json(json_path: "./package.json")
increment_build_number(
xcodeproj: './ios/' + package['name'] + '.xcodeproj'
)
increment_version_number(
xcodeproj: './ios/' + package['name'] + '.xcodeproj',
version_number: package['version']
)
end
desc 'Bump build numbers, and set the version to match the pacakage.json version.'
lane :bump do
inc_ver_ios
inc_ver_and
end
다음으로 자동 패치, 마이너 및 메이저 버전 범프를 위해 다음 스크립트를 package.json에 추가할 것입니다.
{
"name": "MyApp",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint .",
"bump-patch": "npm version patch --no-git-tag-version && bundle exec fastlane bump",
"bump-minor": "npm version minor --no-git-tag-version && bundle exec fastlane bump",
"bump-major": "npm version major --no-git-tag-version && bundle exec fastlane bump",
},
명령의 첫 번째 부분은 git repo에 커밋하지 않고 JS 패키지 버전을 업데이트합니다. 두 번째 부분은 fastlane bump 명령을 실행하여 Android 및 iOS 빌드 번호를 자동으로 범프하고 JS 측과 일치하도록 버전을 업데이트합니다.
# npm
npm run bump-patch
# yarn
yarn bump-patch
추신: 기사에 있는 것과 같은 React Nativetemplate with a lot of goodies를 유지하고 있습니다.
Reference
이 문제에 관하여(React Native 앱의 자동 버전 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/osamaqarem/automatic-versioning-for-react-native-apps-2bf3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)