Shell 스 크 립 트 를 사용 하여 아 카 이브 파일 을 만 들 고 서명 IPA 파일 을 내 보 내 는 방법 입 니 다.
1. build 스 크 립 트 설명
이 Shell 스 크 립 트 는 build, XCode 의 Workspace 소스 코드 프로젝트 에 사용 되 며, 다시 서명 할 수 있 는 IPA 파일 로 내 보 냅 니 다. 테스트 설치 파일 과 appstore 심 사 를 제출 할 파일 을 나 누 어 줍 니 다.보조 제품 개발, 테스트 의 배치 관리 업 무 를 실현 하 다.
이 스 크 립 트 를 사용 하려 면 다음 과 같은 환경 이 필요 합 니 다. - Mac OS 10.9 + - XCode 6.0 or later and command line tools - Workspace 프로젝트 에 사 용 됩 니 다. 예 를 들 어 Cocoapods 의존 라 이브 러 리 관리 프로젝트 - * 개발 인증서 와 ad ho 인증서 (for Debug) 와 (for Release) 를 설정 합 니 다.- 소스 프로젝트 에 Scheme 이름과 build 를 설정 합 니 다. - Debug 설정 과 Release 설정 에 인증서 이름 을 설정 합 니 다. - Xcode UI 인터페이스 에서 완전히 build 할 수 있 는 지 확인 하고 환경 을 통 해 Archive 와 IPA 를 생 성하 고 올 바 르 게 서명 합 니 다. -Workspace 폴 더 에 build 폴 더 만 들 기
2. WorkSpace 디 렉 터 리 로 스 크 립 트 파일 복사
3. 터미널 도 구 를 열 고 Workspace 디 렉 터 리 에 들 어가 기
4. 스 크 립 트 실행 권한 부여
chmod 777 ./build_one_target.sh
5. 스 크 립 트 인 자 를 수정 합 니 다. 소스 코드 에 주석 이 있 습 니 다.
수정 해 야 할 workspace name provisioningProfile scheme name buildconfig
부호 블록
코드 블록 문법 은 표준 markdown 코드 를 따른다.
#!/bin/bash
# init build configuration
# archive and ipa output path
build_path="./build"
# workspace name
build_workspace="workspacename.xcworkspace"
# project name and path
project_path=$(pwd)
project_name=$(ls | grep xcodeproj | awk -F.xcodeproj '{print $1}')
# provisiong profile name
provisioningProfile='"XC Ad Hoc: com.xxxxxx.yyyyyy"'
# timestamp for ouput file name
timeStamp="$(date +"%Y%m%d_%H%M%S")"
echo "$project_path/$build_workspace"
if [ ! -d "$project_path/$build_workspace" ]; then
echo "Error!Current path is not a xcode workspace.Please check, or do not use -w option."
exit 2
fi
# get the info.plist
app_infoplist_path=${project_path}/${project_name}/${project_name}-AppStore-Info.plist
echo ${app_infoplist_path}
# get the main version
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${app_infoplist_path}")
# get the build version
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${app_infoplist_path}")
# get the svn revision
svn_revision=$(svn info |grep Revision: |awk '{print $2}')
#`svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'`
#svn info |grep Revision: |awk '{print $2}'
#workspace_name='*.xcworkspace'
#ls $project_path/$build_workspace &>/dev/null
#rtnValue=$?
#if [ !$rtnValue = 0 ];then
# #build_workspace=$(echo $(basename $project_path/$workspace_name))
# echo "Error!Current path is not a xcode workspace.Please check, or do not use -w option."
# exit 2
#fi
# scheme name
build_scheme="schemename"
# buidl config. the default is Debug|Release
build_config="Release"
# clean build
clean_cmd='xcodebuild'
clean_cmd=${clean_cmd}' clean -workspace '${build_workspace}' -scheme '${build_scheme}' -configuration '${build_config}
$clean_cmd > $build_path/clean_qa.txt || exit
# build & archive, generate the archive file
archive_name="targetname_QA_${timeStamp}.xcarchive"
archive_path="./build/"$archive_name
build_cmd='xcodebuild'
build_cmd=${build_cmd}' -workspace '${build_workspace}' -scheme '${build_scheme}' -destination generic/platform=iOS archive -configuration '${build_config}' ONLY_ACTIVE_ARCH=NO -archivePath '${archive_path}
echo "** Archiving QA ** to the ${archive_path}"
echo ${build_cmd}
$build_cmd > ./build/build_archive_qa.log || exit
if [ ! -d "${archive_path}" ]; then
echo "** Error! ARCHIVE QA FAILED ** Please check ./build/build_archive_qa.log."
exit 2
else
echo "** ARCHIVE QA SUCCEEDED ** to the ${archive_path}"
fi
# export to ipa with QA server
ipa_name="targetname_QA_adhoc_v${bundleShortVersion}_b${bundleVersion}_rev${svn_revision}_t${timeStamp}.ipa"
ipa_path="./build/"$ipa_name
ipa_cmd='xcodebuild'
ipa_cmd=${ipa_cmd}' -exportArchive -exportFormat ipa -archivePath '${archive_path}' -exportPath '${ipa_path}' -exportProvisioningProfile '${provisioningProfile}
echo "** Exporting QA ** to the ${ipa_path}"
echo ${ipa_cmd}
eval ${ipa_cmd} > ./build/export_ipa_qa.log || exit
if [ ! -f "${ipa_path}" ]; then
echo "** Error! Export IPA QA FAILED ** Please check ./build/export_ipa_qa.log."
exit 2
else
echo "** Export IPA QA SUCCEEDED ** to the ${ipa_path}"
fi
6. 스 크 립 트 실행
./build_one_target.sh
큰 공 사 는 약 3 - 5 분 에 완 성 됩 니 다.완료 되면 워 크 스페이스 디 렉 터 리 에 있 는 build 디 렉 터 리 에 다음 과 같은 두 개의 주요 파일 이 있 습 니 다.targetname_QA_20150420_094731.xcarchive targetname_QA_adhoc_v2.1.1_b44_rev7849_t20150420_094731.ipa
xcarchive 파일 은 매우 중요 합 니 다. 서로 다른 인증서 에 서명 할 수 있 는 ipa 파일 ipa 파일 은 adhoc 인증서 내 보 내기 로 실제 테스트 배포 에 사 용 됩 니 다.원본 코드 에 인증서 이름 을 설정 합 니 다.서로 다른 제품 bundle id 에 따라 해당 하 는 수정 을 합 니 다. 여기 의 이름과 인증 서 는 프레젠테이션 만 참고 하고 상업 적 의 미 를 가지 지 않 습 니 다.
목차
[TOC]
로 디 렉 터 리 생 성:이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
✨〰️ ZI 〰️✨ Vim 구문❮ ZI ❯ 🧙♀️ Zsh를 위한 스위스 아미 나이프. 모든 것을 함께 붙일 수 있도록 설계되었습니다. zsh 유형의 파일에 있는 명령에 대한 Vim 구문 정의입니다. 📥 설치 Vim 플러그인으로 로드합니다. 예를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.