>  기사  >  웹 프론트엔드  >  반응 네이티브는 자동 패키징을 어떻게 구현합니까? React-native 자동 패키징 방법

반응 네이티브는 자동 패키징을 어떻게 구현합니까? React-native 자동 패키징 방법

不言
不言원래의
2018-08-07 14:36:333181검색

이 글의 내용은 리액트 네이티브에서 자동 패키징을 구현하는 방법에 관한 것입니다. 반응 네이티브 자동 패키징 방법에는 특정 참고 가치가 있습니다. 도움이 필요한 친구가 참고할 수 있기를 바랍니다.

코드를 작성한 후 xcode와 android studio를 열 필요 없이 쉘 스크립트를 실행하여 android와 ios를 모두 패키징하면 된다고 상상해 보셨나요? 그리고 자동으로 Dandelion과 App Store에 업로드되며, 테스트를 위해 제품이 자동으로 다운로드됩니다. 그리고 당신은~~직접 커피를 마시러 갔습니다.

참고: 이 글에서는 자동 스크립트 처리를 사용하는 방법만 설명하므로 독자가 정상적으로 수동으로 패키징할 수 있다고 가정합니다. 더 복잡한 세부 사항이 있는 경우 다른 장이 필요합니다.

재료 준비

macos 호스트 + 모니터(예: mac-mini)

자동 빌드 도구(예: gitlab-runner, travis-ci, jenkins)

Apple 개발자 인증

macos 호스트가 필요합니다. 도구의 빌드 노드로 사용되며 다음 소프트웨어 또는 작업을 설치해야 합니다: 节点,并且需要安装如下的软件或操作:

git

xcode 9.4+

xcode -> 设置 -> accounts -> 添加苹果公司认证或者个人认证所用的app_id

android studio

android sdk

java jdk 8

注意:如果你不想搞构建平台,只想简简单单地,那么你可以把下面的那么多代码整合成一个shell脚本,然后在自己的电脑里执行。

打包android

cd android
rm -rf build/ app/build/
./gradlew assembleRelease

最后的apk文件在:android/app/build/outputs/apk/app-release.apk

打包ios

先构建基础包app

cd ios
# 必须先创建目录
mkdir -p build
rm -rf build/archive.xcarchive build/ipa-*

# 获取目录名
project_list=`ls | grep .xcodeproj`
project_name=${project_list%%.*}

# 打包出app
# 这和你点击 xcode -> Product -> Archive 是一样的效果的。
xcodebuild clean
xcodebuild archive \
  -project ./${project_name}.xcodeproj \
  -scheme ${project_name} \
  -configuration Release \
  -archivePath ./build/archive.xcarchive

接着我们需要把app导出为ipa格式,这样才能上传到App Store或者测试平台比如:蒲公英 、 fir.im

传到App Store需要导出正式的ipa包,而传到蒲公英需要使用测试ipa包(ad-hoc),所以需要执行两遍

cd ios

# 正式ipa包
xcodebuild -exportArchive \
    -archivePath ./build/archive.xcarchive \
    -exportPath ./build/ipa-app-store \
    -exportOptionsPlist ./exportOptions/app-store.plist \
    -allowProvisioningUpdates
    
# 测试ipa包
xcodebuild -exportArchive \
    -archivePath ./build/archive.xcarchive \
    -exportPath ./build/ipa-ad-hoc \
    -exportOptionsPlist ./exportOptions/ad-hoc.plist \
    -allowProvisioningUpdates

上面编译肯定是不通过的,因为你缺少两个文件app-store.plistad-hoc.plist。这个你自己其实能找到,那就是在xcode里打包并Export出来的文件夹里,都会有一个ExportOptions.plist文件

반응 네이티브는 자동 패키징을 어떻게 구현합니까? React-native 자동 패키징 방법
根据你在Export时选择的是App Store 还是 Ad Hoc,分别复制进项目exportOptions/app-store.plistexportOptions/ad-hoc.plist

上传蒲公英

笔者用的蒲公英,fir的看官自己去找

PGY_API_KEY=你的api_key
PGY_HOST=https://www.pgyer.com/apiv2/app/upload

# ios
IPA=`ls ./ios/build/ipa-ad-hoc/*.ipa`
curl \ 
    --form "file=@$IPA" \
    --form "_api_key=$PGY_API_KEY" \
    $PGY_HOST
    
# android
curl \ 
    --form "file=@./android/app/build/outputs/apk/app-release.apk" \
    --form "_api_key=$PGY_API_KEY" \
    $PGY_HOST

上传AppStore

其实是先上传到 appstoreconnect.apple.com,和你在xcode里点击Upload To App Store

git

xcode 9.4+

xcode -> Apple 회사 인증 또는 개인 인증 app_id

android studio

android sdk

java jdk 8


참고:
플랫폼을 구축하지 않고 단순하게 만들고 싶다면 다음 코드를 통합할 수 있습니다. 쉘 스크립트에 넣은 다음 자신의 컴퓨터에서 실행하십시오.

Packaging android

APP_STORE_ACCOUNT=证书创建者账号
APP_STORE_PASSWORD=密码
IPA=`ls ./ios/build/ipa-app-store/*.ipa`

/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool \
    --validate-app \
    --file "$IPA" \
    --type ios \
    --username $APP_STORE_ACCOUNT \
    --password $APP_STORE_PASSWORD
최종 apk 파일은

android/app/build/outputs/apk/app-release.apk반응 네이티브는 자동 패키징을 어떻게 구현합니까? React-native 자동 패키징 방법Packaging ios
기본 패키지 앱을 먼저 빌드하세요

APP_STORE_ACCOUNT=证书创建者账号
APP_STORE_PASSWORD=密码
IPA=`ls ./ios/build/ipa-app-store/*.ipa`

# xcode临时生成的目录,不删除可能导致上传到appStore时失败
rm -rf ~/.itmstransporter/ ~/.old_itmstransporter/

# 开始上传
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool \
    --upload-app \
    --file "$IPA" \
    --type ios \
    --username $APP_STORE_ACCOUNT \
    --password $APP_STORE_PASSWORD
그런 다음 앱 내보내기 ipa 형식이므로 App Store 또는 Dandelion, fir.im

반응 네이티브는 자동 패키징을 어떻게 구현합니까? React-native 자동 패키징 방법과 같은 테스트 플랫폼에 업로드할 수 있습니다. App Store에 업로드하려면 공식 ipa 패키지를 내보내야 하며, Dandelion에 업로드하려면 테스트 ipa 패키지(ad-hoc)를 사용해야 하므로 두 번 실행해야 합니다

rrreee

위 컴파일은 app-store.plist파일 두 개가 누락되었기 때문에 확실히 실패합니다. > 및 ad-hoc.plist. 실제로 이를 직접 찾을 수 있습니다. 즉, xcode로 패키징되어 내보낸 폴더에 ExportOptions.plist 파일

반응 네이티브는 자동 패키징을 어떻게 구현합니까? React-native 자동 패키징 방법

내보낼 때 선택하는 항목에 따라

앱스토어 또는 Ad Hoc
, 프로젝트

exportOptions/app-store.plist🎜 및 🎜exportOptions/ad-hoc.plist🎜🎜🎜Upload Dandelion🎜🎜에 복사하세요. 저자가 사용한 민들레, fir의 리뷰어가 직접 찾을 수 있습니다. 🎜 rrreee🎜AppStore를 업로드하면🎜🎜실제로는 appstoreconnect.apple.com에 먼저 업로드되는데, 이는 xcode에서 App Store에 업로드를 클릭하는 것과 같습니다🎜🎜먼저 업로드 가능한지 확인하세요🎜rrreee🎜 확인에 성공하면 업로드할 수 있고 그렇지 않으면 업로드가 실패하므로 시간을 낭비할 필요가 없습니다🎜rrreee🎜Android 업로드🎜🎜저자의 연구에 따르면 Xiaomi 애플리케이션만 업로드 인터페이스를 제공하고 다른 애플리케이션 플랫폼은 수동으로 업로드해야 합니다. 🎜🎜참고: 🎜🎜🎜1. 각 노드 머신에서 인증서를 생성해야 합니다. 수동으로 생성하거나 xcode를 사용하여 자동으로 생성해야 합니다. 이 단계를 수행하지 않으면 ios를 패키징할 수 없습니다🎜2. 처음 패키징하는 동안 Mac에서는 비밀번호를 입력하라는 메시지를 시간 내에 입력해야 하며, 버튼을 반드시 클릭해야 합니다. 3. gitlab-runner를 사용하면 .gitlab-ci에서 yml에서 alias altool=xx를 사용하는 것이 유효하지 않습니다. 즉, altool을 인식할 수 없습니다. 🎜4. iOS 패키징을 위해 macos 시스템을 사용해야 합니다. Linux를 사용하려고 하면 이득을 얻을 가치가 없습니다. 안드로이드 패키징은 리눅스를 사용해도 되지만, 역시 번거롭기 때문에 ios에서는 해보는 건 어떨까요? 🎜5. macos가 자동으로 구축된 하위 노드로 사용되는 경우 시작 스크립트 start.sh를 만들고 해당 스크립트를 사용자 관리 시작 항목에 추가해야 합니다. 디스플레이 소개를 열려면 이 sh 파일을 마우스 오른쪽 버튼으로 클릭한 다음 열기 방법을 터미널🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜추천 관련 기사: 🎜🎜🎜메타 정보 메타 태그 분석 HTML (첨부) 코드의 속성)🎜🎜🎜🎜Amap WEB 버전의 기본 컨트롤 표시 정보🎜 🎜🎜

위 내용은 반응 네이티브는 자동 패키징을 어떻게 구현합니까? React-native 자동 패키징 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.