현재 xcodebuild를 사용하고 xcrun을 사용하여 hudson으로 모든 응용 프로그램을 문제없이 빌드합니다.
다른 사람들로부터 회사 계정 대신 (앱 스토어 또는 임시 배포 용) 엔터프라이즈 계정으로 다시 서명하고 싶은 IPA 파일 몇 개를 받았습니다.
내 문제는 앱을 사임하려고 할 때 내 장치에 설치되지 않으며 엔터프라이즈 빌드이므로 설치해야한다는 것입니다. 오류 메시지는 iTunes가 아닌 장치에 있으며 단순히 앱을 설치할 수 없음을 나타냅니다. 더 이상 정보가 제공되지 않습니다.
일부 정보를 찾았습니다 ( http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for- 업로드 / )
그리고 이것은 가능할 것입니다. 내가 직면하고있는 문제는 일반적인 빌드 (xcrun 사용)에서와 같이 모바일 프로비저닝 프로파일을 포함하지 않는 것이 공동 디자인 도구로 제어 할 수 있거나 xcrun으로 다시 서명 할 수 있다는 것입니다 ?
내 사임 스크립트를 사용하여 현재
- app.ipa의 압축을 풉니 다
- appname = $ (ls 페이로드)
- xcrun -sdk iphoneos PackageApplication -s “$ provisioning_profile” “$ project_dir / Payload / $ appname”-o “$ project_dir / app-resigned.ipa”–sign “$ provisioning_profile”–embed “$ mobileprovision”
결과 ipa 파일을 살펴본 결과 원래 앱과 매우 유사한 것으로 보입니다. 여기서 어떤 파일을 변경해야합니까? 처음에는 _CodeSignature / CodeResources가 변경 될 것이라고 생각했지만 내용은 거의 동일하게 보입니다.
포인터는 매우 높이 평가됩니다.
답변
마침내이 일을했습니다!
프로비저닝 프로파일에 장치가 추가되지 않은 앱 스토어 제출을 위해 cert1로 서명 된 IPA로 테스트되었습니다. 사내 구축을 위해 엔터프라이즈 계정 및 모바일 프로비저닝 프로파일로 서명 된 새 IPA가 생성됩니다 (모바일 프로비저닝 프로파일이 IPA에 임베드 됨).
해결책:
IPA 압축 해제
unzip Application.ipa
오래된 CodeSignature 제거
rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true
임베디드 모바일 프로비저닝 프로파일 교체
cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"
재 서명
/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"
재 포장
zip -qr "Application.resigned.ipa" Payload
편집 : Entitlement 부분을 제거했습니다 (골목, 감사 참조)
답변
이 질문에 대한 답변은 약간 오래되었고 잠재적으로 중요한 단계가 누락되었으므로 외부 개발자로부터 앱을 설치하기위한 업데이트 된 안내서입니다.
—– iOS 앱을 사임하는 방법 —–
다른 개발자로부터 앱 (예 : MyApp.ipa)을 받고 ideviceinstaller 를 사용하여 장치에서 앱을 설치하고 실행할 수 있다고 가정합니다. 예를 들어).
새로운 서명 자산 준비
첫 번째 단계는 설치 및 실행하려는 모든 장치가 포함 된 프로비저닝 프로파일 을 얻는 것 입니다. 프로파일에 키 체인 액세스에 설치 한 인증서가 포함되어 있는지 확인하십시오 (예 : iPhone 개발자 : 일부 본문 (XXXXXXXXXX)). 앱에 포함 된 프로파일을 바꿀 수 있도록 프로파일 (MyProfile.mobileprovision)을 다운로드하십시오.
다음으로 서명에 포함 할 자격 파일을 준비하겠습니다. 터미널을 열고 다음을 실행하십시오.
$ security cms -D -i path/to/MyProfile.mobileprovision > provision.plist
프로비져닝 프로필을 설명하는 xml 파일이 생성됩니다 . 다음으로 인 타이틀먼트를 파일로 추출하려고합니다.
$ /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' provision.plist > entitlements.plist
프로비저닝 프로파일 교체 및 앱 사임
.ipa 파일 로 작업하는 경우 먼저 앱의 압축을 풉니 다 ( .app 가있는 경우이 단계를 건너 뛸 수 있음).
$ unzip MyApp.ipa
귀하의 작업 디렉토리는 이제 포함 Payload/
하고 Payload/MyApp.app/
. 그런 다음 이전 코드 서명 파일을 제거하십시오.
$ rm -rf Payload/MyApp.app/_CodeSignature
기존 프로비저닝 프로파일 (예 : embedded.mobileprovision)을 자신의 프로파일로 바꿉니다.
$ cp path/to/MyProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision
이제 프로비저닝 프로파일에 포함 된 인증서와 이전에 작성한 entitlements.plist로 앱에 서명하십시오.
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app
중요 : 또한 앱에 포함 된 모든 프레임 워크를 사임해야합니다 . 에서 찾을 수 있습니다 Payload/MyApp.app/Frameworks
. 앱이 Swift로 작성되었거나 추가 프레임 워크를 포함하는 경우 서명해야하며 그렇지 않으면 앱이 설치되지만 실행되지는 않습니다.
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app/Frameworks/*
이제 앱을 다시 압축 할 수 있습니다.
$ zip -qr MyApp-resigned.ipa Payload
끝난
Payload
원래 앱 (MyApp.ipa)과 사직 버전 (MyApp-resigned.ipa)이 있으므로 디렉토리를 제거 할 수 있습니다 . 이제 프로비저닝 프로파일에 포함 된 모든 장치에 MyApp-resigned.ipa를 설치할 수 있습니다.
답변
나는이 대답을 성공적으로 따랐지만 자격이 변경되었으므로 --entitlements "Payload/Application.app/Entitlements.plist"
두 번째에서 마지막 진술 의 일부를 간단히 제거하고 매력처럼 작동했습니다.
답변
Mac OS High Sierra 및 Xcode 10에서 확인
iResign 애플리케이션을 사용하여 동일하게 구현할 수 있습니다 .
1) .ipa의 경로를 줘
2) 새로운 조항 프로파일
3) 자격 파일 (선택 사항, 자격이있는 경우에만 추가)
4) 번들 ID
5) 유통 증명서
다시 서명 한 후 출력 된 .ipa 파일이 저장된 것을 볼 수 있습니다
간단하고 강력한 도구
답변
이 사임 접근법 중 어느 것도 나를 위해 일하지 않았으므로 다른 것을 해결해야했습니다.
제 경우에는 만료 된 인증서가있는 IPA가있었습니다. 앱을 재 구축 할 수는 있었지만, 동일한 인증서 (새 인증서만으로)를 배포하기를 원했기 때문에 재 구축하고 싶지 않았습니다.
다른 답변에서 언급 한 사임 방식 대신 IPcode를 만드는 Xcode의 방법을 사용했습니다.이 방법은 빌드의 .xcarchive로 시작합니다.
-
기존 .xcarchive를 복제하고 내용을 바꾸기 시작했습니다. (.dSYM 파일을 무시했습니다.)
-
압축 해제를 통해 이전 IPA 파일에서 이전 앱을 추출했습니다. 앱은 Payload 폴더에있는 유일한 것입니다.
-
나는이 앱을 새로운 .xcarchive로 옮겼
Products/Applications
습니다. -
나는
Info.plist
편집했다ApplicationProperties/ApplicationPath
ApplicationProperties/CFBundleIdentifier
ApplicationProperties/CFBundleShortVersionString
ApplicationProperties/CFBundleVersion
Name
-
.xcarchive를 보통 Xcode의 보관 폴더로 옮겼습니다
/Users/xxxx/Library/Developer/Xcode/Archives
. -
Xcode에서 Organizer 창을 열고이 새로운 아카이브를 선택하고 정기적 (이 경우 Enterprise) 내보내기를 수행했습니다.
결과는 좋은 IPA였습니다.
답변
가장 쉬운 방법은 Fastlane을 사용하는 것입니다.
sudo gem install fastlane -NV
hash -r # for bash
rehash # for zsh
fastlane sigh resign ./path/app.ipa --signing_identity "iPhone Distribution: Felix Krause" -p "my.mobileprovision"
답변
Fastlane 한숨의 사임 옵션을 사용하면 매우 쉽게 할 수 있습니다.
sigh resign -p <path-to-profile-with-mobileprovision-ext> -i <code-sighning-identity-of-your-app>
명령 직전에 sigh를 사용하여 프로파일을 다운로드 할 수도 있습니다.