У меня есть проект, который использует CocoaPods в качестве менеджера библиотеки. Проект имеет 5 динамических и 2 статических библиотеки, которые устанавливаются через Pod. Проект Pods имеет настройки по умолчанию. Проект имеет схемы для разных сред. Для схем (Dev, Test и т. Д.) Я делаю их «Shared». Все, кроме этого, по умолчанию. Когда я генерирую IPA из Xcode, все работает нормально. Однако, когда я использую Jenkins, я могу получить IPA, но он выходит из строя на устройстве.
Когда я просматриваю журналы устройства, я получаю ошибку ниже.
Описание завершения: DYLD, библиотека не загружена: @ rpath / Alamofire.framework / Alamofire | Ссылка на: /var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/MyProject_Dev | Причина: подходящее изображение не найдено. Нашел: | /private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamofire.framework/Alamofire: подпись кода заблокирована mmap () из '/private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/ Каркасы / Alamofire.framework / Alamofire '| /private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamofire.framework/Alamofire: подпись кода заблокирована mmap () из '/private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/ Каркасы / Alamofire.framework / Alamofire '| /private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamo
Вызывается потоком: 0
My Pod File:
project 'MyProject.xcodeproj'
def pods
# Pods for MyProject
pod 'Alamofire'
pod 'SVProgressHUD'
pod 'GoogleAnalytics'
pod 'AssistantKit'
pod 'Fabric'
pod 'Crashlytics'
pod 'SwiftyJSON', '~> 4.0'
pod 'DropDown'
end
target 'MyProject_Dev' do
use_frameworks!
pods
end
target 'MyProject_Prod' do
use_frameworks!
pods
end
target 'MyProject_QA' do
use_frameworks!
pods
end
target 'MyProject_Local' do
use_frameworks!
pods
end
target 'MyProject_Pilot' do
use_frameworks!
pods
end
target 'MyProject_Test' do
use_frameworks!
pod 'GoogleAnalytics'
end
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings[‘PROVISIONING_PROFILE_SPECIFIER’] = ''
end
end
Когда я искал, я пытался:
- Сделайте также доступ к проекту Pods.
- Попробуйте получить сборку релиза вместо отладки.
- Я также распаковываю IPA и заглядываю в папку Framework. Он содержит все динамические библиотеки (которые могут вызвать ошибку) как libraryName.framework.
Я думаю, что это также связано с CLI, поэтому, если я могу получить сборку на CLI, я могу это тоже исправить.
Похожие посты, которые не решают мою проблему:
dyld: библиотека не загружена: @ rpath / libswift_stdlib_core.dylib
Библиотека OS X Framework не загружена: «Изображение не найдено»
РЕДАКТИРОВАТЬ: Код сборки Jenkins;
/usr/bin/xcodebuild -list -workspace MyProject.xcworkspace
/usr/bin/xcodebuild -scheme MyProject_Dev -workspace MyProject.xcworkspace -configuration Release clean build CONFIGURATION_BUILD_DIR=${WORKSPACE}/build -UseModernBuildSystem=0
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${WORKSPACE}/build/MyProject_Dev.app" -o ${WORKSPACE}/build/MyProject_Dev-${PRODUCT_VERSION}-${PRODUCT_VERSION}.ipa
ditto -c -k --keepParent -rsrc "${WORKSPACE}/build/MyProject_Dev.app.dSYM" ${WORKSPACE}/build/MyProject_Dev-${PRODUCT_VERSION}-${PRODUCT_VERSION}-dSYM.zip
РЕДАКТИРОВАТЬ 2: У меня есть еще один проект, который работает на той же спецификации, и он работает как шарм. Когда я выполняю файл file.framework / framework в этом проекте, я вижу, что в поврежденном файле отсутствует Mach-O dynamically linked shared library arm_v7
. Однако я не знаю, связано ли это с этой проблемой.