I have a project which uses CocoaPods as a library manager. Project has 5 dynamic and 2 static libraries which are installed via Pods. Pods project has default settings. Project has schemes for different environments. For schemes (Dev,Test etc..), I make them "Shared". Everything other than that is on default settings. When I generate an IPA from Xcode, everything works fine. However, when I build on Jenkins, I can get the IPA but It crashes on Device.
When I look at the Device logs I'm getting below error.
Termination Description: DYLD, Library not loaded: @rpath/Alamofire.framework/Alamofire | Referenced from: /var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/MyProject_Dev | Reason: no suitable image found. Did find: | /private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamofire.framework/Alamofire: code signing blocked mmap() of '/private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamofire.framework/Alamofire' | /private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamofire.framework/Alamofire: code signing blocked mmap() of '/private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamofire.framework/Alamofire' | /private/var/containers/Bundle/Application/SOMEID/MyProject_Dev.app/Frameworks/Alamo Triggered by Thread: 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
As I searched, I tried:
- Make Pods project shared as well.
- Try to get release build instead of debug.
- I also un-extract the IPA and look inside Framework folder. It has all the dynamic libraries (which can cause the error) as libraryName.framework.
I think this is related with CLI also , so If I can get a build on CLI I can fix this also. Similar posts that doesn't solve my problem:
dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
OS X Framework Library not loaded: 'Image not found'
EDIT: Jenkins build code;
/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
EDIT 2: I have one more project, which runs on same spec and It works like a charm. When I do "file library.framework/framework" on that project I see that Mach-O dynamically linked shared library arm_v7
is missing from the corrupted one. However, I don't know If It is related to this problem.