1

하나의 명령으로 서명 된 APK 및 IPA를 여러 구성 (예 : hockeyapp 용 베타 및 상점 용 프로덕션)으로 생성하는 방법에 대해 알고 싶습니다.여러 배포를위한 하나의 명령

나는 모든 가능성을 탐색하고 있으며,이를 수행 할 수있는 방법이 많습니다.

또한 ENVIRONMENT와 같은 변수를 전달하여 API url과 같은 자바 스크립트 상수를 설정하거나 디버그를 켜고 끌 수 있습니다. 다음은 현재 생각하고있는 내용입니다.

이전 문제를 해결하기 위해 https://www.npmjs.com/package/react-native-config을 사용하십시오. 안드로이드에

:

내가 Gradle을에 buildTypes의 유형을 추가하는 방법에 대해 생각하고 있어요. 지금까지, 나는 그것을 작동시키지 못했습니다, 나는 원주민 환경 설정에 익숙하지 않았습니다.

그런 다음 bash 스크립트를 사용하여 선택한 env (준비/dev/prod)로 오프라인 번들을 만들고 gradle의 assembleRelease/assembleBeta를 사용합니다. 그게 가능하다고 생각하니?

iOS에서

, 그것은 조금 더 복잡 보인다 : 그것은 만들 때 CLI에서 프로젝트의 구성을 변경하기 어렵다처럼

것 같습니다. 그래서 저는 각 환경마다 프로젝트를 복제해야한다고 생각했습니다 : project-dev.xcodeproj, project-prod.xcodeproj ... 요점이 있습니다.

다시 한 번, 나는 번들을 만든 다음 주어진 프로젝트 안에 cp로 만들 것이다. 좋은 터치는 CLI에서도 xcode 컴파일을 트리거하는 것입니다. 설정하기가 어렵습니까?

이 점에 대해 어떻게 생각하십니까? 어쩌면 당신 중 일부는 이미 사용자 정의 스크립트를 사용하고 있습니다.

케이크 장식은 HockeyApp의 '퍽'도구를 사용하여 업로드하는 것이지만 앱이 iOS와 Android 용으로 모두 빌드되면 설정하기가 쉽습니다.

+0

HockeyApp에 대한 이해가 없지만 출시 용 .IPA 파일을 작성한 스크립트를 사용하여 내부 테스트 용으로 사임하여 고객 또는 앱 스토어에 제출할 내용을 정확히 테스트 할 수 있습니다. 약간 긴 과정이지만, 관련된 단계를보고 싶다면 알려주십시오. – Putz1103

+0

물론, 나는 정말로 알고 싶다. :) –

답변

0

이것은 명령 행에서 매개 변수를 사용하여 빌드하는 프로세스입니다. 내 시스템은 릴리스 버전 .ips 파일을 만든 다음 개발 용 장치에 넣을 수있는 개발 프로비저닝 프로파일로 해당 파일을 복사 및 사임하여 고객 또는 앱 스토어로 전송되는 내용을 정확히 테스트합니다. 이것 모두가 당신에게 유용하지는 않지만, 바라건대 어떤 의지가 도움이 될 것입니다.

Scheme="(The scheme I am going to build inside my project)" 
WindowsSavePath="(path to my source archive directory on a shared computer)" 
InstallSavePath="(path to my .ipa archive directory on a shared computer" 
Customer="(relative path inside archive directories)" 
Fleet="(Continued relative path)" 
PathToProject="(path to the folder on my Mac with the xcode project file)" 
ProjectName="(project name).xcodeproj" 
PlistPath="$Scheme-Info.plist" 
appScheme="$Scheme" 
AppName="(The name that I want to give my .ipa file)" 
Version="(The version number for this build)" 
AppendedFileName="-QA" //I use this for QA and Production distinction 
exportPath="$InstallSavePath/$Fleet/$Customer/$Version$AppendedFileName/" 
CompanyAppIdentifierPrefix="(my generic provisioning profile identifier)" 
ArchiveLocation="$WindowsSavePath/$Fleet/$Customer/$Version$AppendedFileName" 
SourceCodeDestination="(my compiled absolute path to the archive directories)" 

이것은 모든 SetVariables.sh 파일에 포함되어 있습니다 :

첫째, 내가 빌드에 사용할거야 글로벌 매개 변수를 설정하는 변수 파일이 있습니다. 이제 프로젝트를 빌드하기 시작합니다.

#Update the version number in the plist file for the project 
/usr/libexec/PListBuddy -c "Set :CFBundleShortVersionString $Version" "$PathToProject/$PlistPath" 
/usr/libexec/PListBuddy -c "Set :CFBundleVersion $BuildVersion" "$PathToProject/$PlistPath" 

#Now build and archive the project, the create the .ipa file for either submittal or giving to customers 
mkdir -p "$exportPath" 
mkdir -p "${ArchiveLocation}/dSYM" 
xcodebuild -project "$PathToProject/$ProjectName" -scheme "$Scheme" DSTROOT="$exportPath" DEBUG_INFORMATION_FORMAT="dwarf-with-dsym" DWARF_DSYM_FOLDER_PATH="${ArchiveLocation}/dSYM" archive -archivePath "$exportPath${appScheme} $Version$AppendedFileName.xcarchive" 
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${exportPath}Applications/${AppName}.app" -o "${exportPath}${appScheme} $Version$AppendedFileName.ipa" 

#Now resign and create an internal dev version to test on development ipads 
rm -r Payload SwiftSupport 
unzip -q "${exportPath}${appScheme} $Version$AppendedFileName.ipa" 

BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "Payload/${AppName}.app/Info.plist") 
. ./CreateInternalEntitlements.sh "$CompanyAppIdentifierPrefix.$BUNDLE_ID" 
. ./resign.sh "${exportPath}${appScheme} $Version$AppendedFileName.ipa" "${exportPath}${appScheme} ${Version}${AppendedFileName} Internal" internalDev.mobileprovision "(My developer account tied to the internal provisioning profile" Entitlements.plist 
rm -r Payload SwiftSupport 

#Now delete the intermediate files from the installs directory 
rm -rf "$exportPath${appScheme} $Version$AppendedFileName.xcarchive" 
rm -rf "${exportPath}Applications" 

내가 (resign.sh, createentitlements.sh) 거기에 몇 가지를 떠났다, 그러나 그 과정은 I에 유래에서 발견 : 다른의 .sh 파일에서 처음 그때 내가 컴파일이 시작하면 SetVariables 파일을 호출 , 그래서 당신이 찾기가 너무 어려워서는 안됩니다.

필자는 결코 해본 적이 없지만, 수행하려고하는 것처럼 릴리스 또는 디버그를 빌드하기 위해 xcodebuild의 명령 줄 인수를 변경할 수 있다는 점을 확실히 알고 있습니다.xcodebuild을 두 번, 한 번 디버깅을 위해, 한 번 릴리스를 실행하고 다른 위치에 빌드를 저장할 수 있습니다.

귀하의 목표에 최소한의 도움이되기를 바랍니다. 이것은 1 주일이나 2 주일 정도 걸려서 모든 것을 정리하고 내 필요를 위해 일하게했습니다. 행운을 빕니다.

+0

고마워, 나는 Plistbuddy를 몰랐다. 나는 너의 모범을 살펴볼 것이다. –

관련 문제