명령줄에서 iOS 앱 사임
번들 식별자이지만 프로젝트 파일에 대한 액세스 권한이 없습니다.
(
.xcodeproj
또는 .xcworkspace
)? 또는 프로젝트에 대한 액세스 권한이 있을 수 있습니다.파일이지만 환경의 Xcode 버전은 내에서 프로젝트를 빌드할 수 없습니다.
어떤 이유로 든 GUI? 이 기사에서는 해결책을 알려 드리겠습니다.
Xcode를 열지 않고 앱을 종료합니다.
가정
당신은
.ipa
) (
.mobileprovision
) Mac의 키체인에서 인증서를 생성하는 데 사용되는 개인 키 사용
해결책
다음은 다운로드할 수 있는 내가 작성한 bash 스크립트입니다.
다운로드 후 스크립트의 권한을 허용하도록 변경해야 합니다.
실행 가능하도록:
$ chmod 755 resign-ios-app
용법
지침 메시지를 보려면 인수 없이 스크립트를 호출합니다.
$ ./resign-ios-app
Expected at least three arguments.
Something like 'AnApp.ipa' 'AProvisioningProfile.mobileprovision' 'iPhone Distribution: AnOrganization' where
$1 is an .ipa file
$2 is a .mobileprovision
$3 is the name of a distribution certificate in the Keychain
You may pass a fourth argument to serve as a new bundle identifier for the resigned app. If not included, the original bundle identifier will be used.
이 스크립트가 있다고 가정하면
.ipa
및 .mobileprovision
가 모두동일한 폴더에 있으며 해당 폴더에 있습니다.
$ ./resign-ios-app 'AnApp.ipa' 'XC_iOS_comcompanyAnApp.mobileprovision' 'iPhone Distribution: AnOrganization'
Unzipping "AnApp.ipa"...
Extracting .app...
Removing existing _CodeSignature...
Decoding "XC_iOS_comcompanyAnApp.mobileprovision" and writing to ProvisioningProfile.plist...
Extracting "Entitlements" from ProvisioningProfile.plist and writing to Entitlements.plist...
Embedding "XC_iOS_comcompanyAnApp.mobileprovision" into "AnApp.app"...
Resigning "AnApp.app" with existing bundle identifier "com.company.AnApp"
Resigning embedded Swift libraries...
./libswiftCoreImage.dylib: replacing existing signature
./libswiftObjectiveC.dylib: replacing existing signature
./libswiftCore.dylib: replacing existing signature
./libswiftCoreGraphics.dylib: replacing existing signature
./libswiftUIKit.dylib: replacing existing signature
./libswiftMetal.dylib: replacing existing signature
./libswiftCoreData.dylib: replacing existing signature
./libswiftDispatch.dylib: replacing existing signature
./libswiftos.dylib: replacing existing signature
./libswiftCoreFoundation.dylib: replacing existing signature
./libswiftDarwin.dylib: replacing existing signature
./libswiftQuartzCore.dylib: replacing existing signature
./libswiftCoreAudio.dylib: replacing existing signature
./libswiftAVFoundation.dylib: replacing existing signature
./libswiftFoundation.dylib: replacing existing signature
./libswiftCoreMedia.dylib: replacing existing signature
./libswiftsimd.dylib: replacing existing signature
Resigning embedded frameworks...
./BarcodeScanner.framework: replacing existing signature
./SQLite.framework: replacing existing signature
Resigning "AnApp.app" with certificate "iPhone Distribution: AnOrganization"...
Payload/AnApp.app: replacing existing signature
Zipping app data into an .ipa...
Resigning successful. Resigned app to /Users/daniel/resign-ios-app/resigned.ipa
사임에 성공하면 폴더에 몇 가지 추가 파일이 있음을 알 수 있습니다.
$ ls -l
-rw-rw-r--@ 1 daniel staff 11506405 Nov 19 15:57 AnApp.ipa
-rw-r--r--@ 1 daniel staff 228 Feb 4 2019 AppThinning.plist
-rw-r--r-- 1 daniel staff 517 Nov 22 18:29 Entitlements.plist
-rw-r--r--@ 1 daniel staff 7354 Nov 19 10:26 XC_iOS_comcompanyAnApp.mobileprovision
drwxr-xr-x@ 3 daniel staff 96 Feb 4 2019 Payload
-rw-r--r-- 1 daniel staff 3382 Nov 22 18:29 ProvisioningProfile.plist
-rw-r--r-- 1 daniel staff 11488043 Nov 22 18:29 resigned.ipa
Payload
및 .plist
파일은 스크립트의 아티팩트이며 삭제할 수 있습니다.resigned.ipa
를 배포하는 것이 좋습니다.테스트
이 스크립트를 다음에서 개발하고 테스트했습니다.
즉, 이 스크립트는 macOS의 내장 버전
bash
version 3
과 최신 버전의 macOS 및 Xcode에서 작동해야 합니다.가능한 경우 이 솔루션에 대해 my repository에 대한 문제를 생성하십시오.
더 복잡한 사임에 대한 개선 사항을 제공합니다.
Reference
이 문제에 관하여(명령줄에서 iOS 앱 사임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/danielplust/resign-an-ios-app-at-the-command-line-5df텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)