예. 가능하긴 하지만 일반적으로 변경을 적용한 후에 .app
번들을 다시 서명해야 합니다.
일반적으로 파일을 수정할 .ipa
필요는 없습니다. 이 문서는 정보 제공용으로만 제공됩니다.
예: 보관 파일에서 .ipa
파일 제거
이 예제에서는 Xamarin.iOS 프로젝트의 iPhoneApp1
이름이 이고 generated session id
cc530d20d6b19da63f6f1c6f67a0a254
.ipa
Visual Studio에서 정상적으로 파일을 빌드합니다.Mac 빌드 호스트로 전환합니다.
폴더에서 빌드를 찾습니다
~/Library/Caches/Xamarin/mtbs/builds
. Finder > Go > to Folder에 이 경로를 붙여넣어 Finder에서 폴더를 찾아볼 수 있습니다. 프로젝트 이름과 일치하는 폴더를 찾습니다. 해당 폴더 내에서 빌드와 일치하는 폴더를generated session id
찾습니다. 가장 최근의 수정 시간이 있는 하위 폴더일 가능성이 높습니다.새
Terminal.app
창을 엽니다.Terminal.app 창에 입력
cd
한 다음 폴더를generated session id
창으로 끌어서 놓습니다Terminal.app
.폴더에 디렉터리를 변경하려면 반환 키를 입력합니다
generated session id
.다음 명령을 사용하여 파일의
.ipa
압축을 임시old/
폴더로 압축 해제합니다.Ad-Hoc
특정 프로젝트에 필요한 대로 이름 및iPhoneApp1
이름을 조정합니다.ditto -xk bin/i전화/Ad-Hoc/i전화App1-1.0.ipa old/
창을 열어 두세요
Terminal.app
.에서 원하는 파일을 삭제합니다
.ipa
. Finder를 사용하여 휴지통으로 이동하거나 명령을 사용하여Terminal.app
명령줄에서 삭제할 수 있습니다. Finder에서 파일의Payload/iPhone
내용을 보려면 Control 키를 누른 상태로 파일을 클릭하고 패키지 내용 표시를 선택합니다.3단계와
generated session id
동일한 일반적인 방법을 사용하여 프로젝트 이름과 이름에 모두 있는 로그 파일을~/Library/Logs/Xamarin/MonoTouchVS/
찾습니다.예를 들어 두 번 클릭하여 10단계에서 빌드 로그를 엽니다.
를 포함하는 줄을 찾습니다
tool /usr/bin/codesign execution started with arguments: -v --force --sign
.8단계의 Terminal.app 창에 입력
/usr/bin/codesign
합니다.12단계의 줄에서 시작하는
-v
모든 인수를 복사하여 Terminal.app 창에 붙여넣습니다.마지막 인수를
.app
폴더 내에old/Payload/
있는 번들로 변경한 다음 명령을 실행합니다./usr/bin/codesign -v --force --sign SOME_LONG_STRING in/iPhone/Ad-Hoc/iPhoneApp1.app/ResourceRules.plist --entitlements obj/iPhone/Ad-Hoc/Entitlements.xcent old/Payload/iPhoneApp1.app
터미널에서
old/
디렉터리로 변경합니다.cd old
명령을 사용하여 디렉터리의 내용을 새
.ipa
파일로 압축합니다zip
. 원하는 위치마다 파일을 출력하도록 인수를.ipa
변경할"$HOME/Desktop/iPhoneApp1-1.0.ipa"
수 있습니다.zip -yr "$HOME/Desktop/iPhoneApp1-1.0.ipa" *
일반적인 오류 메시지
표시되는 Invalid Signature. A sealed resource is missing or invalid.
경우 이는 일반적으로 번들 내에서 .app
변경된 내용과 .app
번들이 나중에 올바르게 다시 서명되지 않았다는 것을 의미합니다. 또한 배포 프로필을 사용하여 .ipa
만들려는 경우 배포 프로필을 사용하여 원본 .ipa
을 빌드해야 합니다. 그렇지 않으면 Entitlements.xcent
올바르지 않습니다.
이 오류가 발생할 수 있는 방법에 대한 구체적인 예를 제공하려면 9단계 이후 터미널 창에서 다음 codesign --verify
명령을 실행하면 오류의 정확한 원인과 함께 오류가 표시됩니다.
$ codesign -dvvv --no-strict --verify old/Payload/iPhoneApp1.app
old/Payload/iPhoneApp1.app: a sealed resource is missing or invalid
file missing: /Users/macuser/Library/Caches/Xamarin/mtbs/builds/iPhoneApp1/cc530d20d6b19da63f6f1c6f67a0a254/old/Payload/iPhoneApp1.app/MyFile.png
또한 App Store 확인 프로세스에서 유사한 오류 메시지를 보고합니다.
오류 ITMS-90035: "서명이 잘못되었습니다. 봉인된 리소스가 없거나 잘못되었습니다. 경로 [i전화App1.app/i전화App1]의 이진 파일에 잘못된 서명이 포함되어 있습니다. 임시 인증서 또는 개발 인증서가 아닌 배포 인증서로 애플리케이션에 서명했는지 확인합니다. Xcode의 코드 서명 설정이 대상 수준에서 올바른지 확인합니다(프로젝트 수준의 값을 재정의). 또한 업로드하는 번들이 시뮬레이터 대상이 아닌 Xcode의 릴리스 대상을 사용하여 빌드되었는지 확인합니다. 코드 서명 설정이 올바르다고 확신하는 경우 Xcode에서 "모두 정리"를 선택하고 Finder에서 "빌드" 디렉터리를 삭제한 다음 릴리스 대상을 다시 빌드합니다. 자세한 내용은 "를 참조 https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html하세요.