2016-12-02 7 views
3

Я пытаюсь заархивировать приложение и подготовить его для распространения в App Store. Во время проверки архива (который может быть запущен из Организатора XCode в) следующее сообщение об ошибке всплывает:Codesigning терпит неудачу при проверке IPA с вложенными фреймами

enter image description here

Из того, что я могу сказать, некоторые из моих рамок, которые содержат вложенные рамки не могут быть codesigned. Если я удалю все фреймворки, содержащие вложенные фреймворки, то он снова начнет работать.

В качестве примера следующая структура вызывает такую ​​ошибку:

enter image description here

Каркасы строятся с использованием Carthage

Вот выход журнала я вижу:

2016-12-02 10:16:53 +0000 Processing step: IDEDistributionCodesignStep 
2016-12-02 10:16:53 +0000 Applying entitlements delta for <IDEDistributionItem: 0x7fbc6f6e2a00 'com.hearst.ObjectMapper' '<DVTFilePath:0x7fbc530bde70:'/Users/gruener/Library/Developer/Xcode/Archives/2016-12-02/TestSubmitApp 02-12-16 11.16.xcarchive/Products/Applications/TestSubmitApp.app/Frameworks/Dto.framework/Frameworks/ObjectMapper.framework'>'> from <IDEiCloudEntitlementsProcessor: 0x7fbc6e036e70>: { 
} 
2016-12-02 10:16:53 +0000 Combining entitlements for <DVTFilePath:0x7fbc525ceb00:'/var/folders/3r/_6fw2smn4vj099_d7j2jtt0cg18svh/T/XcodeDistPipeline.bXb/Root/Payload/TestSubmitApp.app/Frameworks/Dto.framework/Frameworks/ObjectMapper.framework'> 
    bundleIdentifier = com.hearst.ObjectMapper 
    profileEntitlements = { 
} 
    storedEntitlements = { 
} 
    extraEntitlements = { 
} 
2016-12-02 10:16:53 +0000 Entitlements for <IDEDistributionItem: 0x7fbc6f6e2a00 'com.hearst.ObjectMapper' '<DVTFilePath:0x7fbc530bde70:'/Users/gruener/Library/Developer/Xcode/Archives/2016-12-02/TestSubmitApp 02-12-16 11.16.xcarchive/Products/Applications/TestSubmitApp.app/Frameworks/Dto.framework/Frameworks/ObjectMapper.framework'>'>: { 
} 
2016-12-02 10:16:53 +0000 Writing entitlements for <IDEDistributionItem: 0x7fbc6f6e2a00 'com.hearst.ObjectMapper' '<DVTFilePath:0x7fbc530bde70:'/Users/gruener/Library/Developer/Xcode/Archives/2016-12-02/TestSubmitApp 02-12-16 11.16.xcarchive/Products/Applications/TestSubmitApp.app/Frameworks/Dto.framework/Frameworks/ObjectMapper.framework'>'> to: /var/folders/3r/_6fw2smn4vj099_d7j2jtt0cg18svh/T/XcodeDistPipeline.bXb/entitlementsuaGdWl 
2016-12-02 10:16:53 +0000 Running /usr/bin/codesign '-vvv' '--force' '--sign' 'A54D9A9C895E402713C0528523674342C777C825' '--preserve-metadata=identifier,resource-rules' '--entitlements' '/var/folders/3r/_6fw2smn4vj099_d7j2jtt0cg18svh/T/XcodeDistPipeline.bXb/entitlementsuaGdWl' '/var/folders/3r/_6fw2smn4vj099_d7j2jtt0cg18svh/T/XcodeDistPipeline.bXb/Root/Payload/TestSubmitApp.app/Frameworks/Dto.framework/Frameworks/ObjectMapper.framework' 
2016-12-02 10:16:53 +0000 Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)! 
2016-12-02 10:16:53 +0000 /var/folders/3r/_6fw2smn4vj099_d7j2jtt0cg18svh/T/XcodeDistPipeline.bXb/Root/Payload/TestSubmitApp.app/Frameworks/Dto.framework/Frameworks/ObjectMapper.framework: replacing existing signature 
2016-12-02 10:16:53 +0000 /var/folders/3r/_6fw2smn4vj099_d7j2jtt0cg18svh/T/XcodeDistPipeline.bXb/Root/Payload/TestSubmitApp.app/Frameworks/Dto.framework/Frameworks/ObjectMapper.framework: invalid resource directory (directory or signature have been modified) 
2016-12-02 10:16:53 +0000 /usr/bin/codesign exited with 1 

I als o попытался создать файл IPA с GYM Fastlane. В этом он работает, однако, когда я пытаюсь представить приложение я получаю эту ошибку:

WARNING ITMS-90686: "The binary you uploaded was invalid. (1102)" 

погуглить код ошибки 1102 не дали никаких результатов;

ответ

1

я наконец понял, что проблема была.

Я провел lipo info /path/to/Dto.framework/Dto в терминале, и все казалось прекрасным - ненужные архитектуры были правильно удалены. Но, изучив вложенные рамки, я понял, что это не так.

Вместо этого я выяснил, что при работе с Карфагенем вы должны связать все фреймворки на уровне приложения и не должны инкапсулировать их в свои собственные рамки.

Чтобы решить эту проблему, я удалил Copy files Phase (который копирует все фреймворки в каталог фреймворков). Карфаген достаточно умен, чтобы распознать это, а также проверяет вложенные зависимости и строит их для вас. Единственное, что вам нужно сделать, это добавить его в фазу сборки библиотек ссылок в XCode.

0

Можете ли вы проверить, какие архитектуры находятся в Dto.framework и ObjectMapper.framework? Вы можете сделать это с

$ file /path/to/Dto.framework/Dto 

кажется похоже на вопрос, который я имел с некоторыми встроенными рамками, построенными для устройства и симулятора. Симуляторные арки построены с отладкой, и они не могут быть отправлены в AppStore (архивирование для ad-hoc хорошо работает). Если они содержат тренажерные своды (x86_64 и i386), вы можете использовать скрипт, описанный в этом блоге, чтобы лишить симулятор своды во время релиза сборки приложения: https://gkbrown.org/2015/12/17/creating-a-universal-ios-framework-in-xcode-7/