develop

iOS 앱 adhoc으로 배포하기 본문

ETC

iOS 앱 adhoc으로 배포하기

pikachu987 2021. 4. 5. 09:50
반응형

이전글에서 git clone이나 cocoapods을 하였다.

 

2021.04.04 - [ETC] - iOS shell파일로 앱스토어(appstoreconnect) 에 업로드

 

iOS shell파일로 앱스토어(appstoreconnect) 에 업로드

개인앱을 하나씩 앱스토어에 업로드를 하다가 앱이 5 + α 개 이상으로 늘어나니까 개인 앱이라 공통 라이브러리 or 공통 코드를 수정하면 전체 앱을 한번씩 배포를 해주다 보니 한번에 업로드 하

pikachu987.tistory.com

 

이제 AWS S3에 OTA(Over-the-air) 배포를 하겠다.

infoPlistPath=""
bundleVersion="$(/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' $infoPlistPath)"
bundleBuildVersion="$(/usr/libexec/PlistBuddy -c 'Print CFBundleVersion' $infoPlistPath)"

infoPlistPath에 Info.plist path를 넣어주면

version이랑 build를 가져올수 있다.

이 version, build는 다운로드 경로를 domin/version/build/app 이렇게 생각해서 만들었다.

 

/usr/local/bin/pod cache clean --all --allow-root --silent
/usr/local/bin/pod install --repo-update --allow-root --silent

/usr/bin/xcodebuild clean -workspace $rootPath/$projectName/$projectName.xcworkspace -scheme $projectName -quiet
/usr/bin/xcodebuild build -workspace $rootPath/$projectName/$projectName.xcworkspace -scheme $projectName -quiet
/usr/bin/xcodebuild archive -workspace $rootPath/$projectName/$projectName.xcworkspace -scheme $projectName -archivePath $rootPath/$projectName/archive.xcarchive -configuration Release -quiet

이전글과 비슷하게 pod cache, pod install

xcodebuild clean, build, archive를 해준다.

 

그리고

ExportOptions.plist파일의 내용을

touch $projectFolder/ExportOptions.plist
cat > $projectFolder/ExportOptions.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>method</key>
	<string>ad-hoc</string>
	<key>manifest</key>
	<dict>
		<key>appURL</key>
		<string>https://www.domain.com/$bundleVersion/$bundleBuildVersion/$scheme.ipa</string>
		<key>displayImageURL</key>
		<string>https://www.domain.com/display_image.png</string>
		<key>fullSizeImageURL</key>
		<string>https://www.domain.com/full_size_image.png</string>
	</dict>
	<key>compileBitcode</key>
	<false/>
	<key>destination</key>
	<string>export</string>
	<key>signingStyle</key>
	<string>automatic</string>
	<key>iCloudContainerEnvironment</key>
	<string>Development</string>
	<key>stripSwiftSymbols</key>
	<true/>
	<key>teamID</key>
	<string></string>
	<key>thinning</key>
	<string>&lt;none&gt;</string>
</dict>
</plist>
EOF

 

이렇게 만들어준다.

.plist파일을 cat으로 수정하는 이유는 appURL을 version, build에 따라 동적으로 변경되게 하려고 shell파일에서 수정해준다.

appURL, displayImageURL, fullSizeImageURL, teamID를 변경하고 앱에 맞게 수정을 한다.

 

그리고

/usr/bin/xcodebuild -exportArchive -allowProvisioningUpdates -allowProvisioningDeviceRegistration -archivePath $rootPath/$projectName/archive.xcarchive -exportPath $rootPath/$projectName/ -exportOptionsPlist $rootPath/$projectName/ExportOptions.plist

exportPath를 저정하고, exportOptionsPlist를 지정해준다.

그럼 scheme과 같은 이름의 .ipa 파일등이 생성된다.

 

/usr/local/bin/aws s3 cp $rootPath/$projectName/$scheme.ipa s3://exampleBucket/$bundleVersion/$bundleBuildVersion/
/usr/local/bin/aws s3 cp $rootPath/$projectName/manifest.plist s3://exampleBucket/$bundleVersion/$bundleBuildVersion/

그리고 aws cli를 이용에 s3에 .ipa파일과 manifest.plist파일을 업로드한다.

 

aws.amazon.com/ko/cli/

 

AWS 명령줄 인터페이스

aws-shell은 명령줄 셸 프로그램으로서, AWS 명령줄 인터페이스를 사용하는 새로운 사용자와 고급 사용자 모두에게 도움이 되는 편의 기능 및 생산성 기능을 제공합니다. 주요 기능은 다음과 같습

aws.amazon.com

 

반응형
Comments