Xcode building application from command line - xcode

I'm using this script for building application from command line:
#!/bin/bash
TARGET="signtest"
CONFIGURATION="Debug"
SDK="iphoneos"
IDENTITY="iPhone Developer: Marcin Zyga (CLJR93MXJ6)"
KEYCHAIN="/Users/admin/Library/Keychains/login.keychain"
PASSWORD="admin"
security unlock-keychain -p ${PASSWORD} ${KEYCHAIN}
xcodebuild -target "${TARGET}" -configuration ${CONFIGURATION} -sdk iphoneos CODE_SIGN_IDENTITY="${IDENTITY}" PROVISIONING_PROFILE="94D99766-0268-4E0E-B8D1-053063BB2DA1" OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}"
I'm trying to compile application and sign it with my provisioning profile. I'm getting:
Build settings from command line:
CODE_SIGN_IDENTITY = iPhone Developer: Marcin Zyga (CLJR93MXJ6)
OTHER_CODE_SIGN_FLAGS = --keychain /Users/admin/Library/Keychains/login.keychain
PROVISIONING_PROFILE = 94D99766-0268-4E0E-B8D1-053063BB2DA1
SDKROOT = iphoneos5.0
=== BUILD NATIVE TARGET signtest OF PROJECT signtest WITH CONFIGURATION Debug ===
Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Developer: Marcin Zyga (CLJR93MXJ6)' doesn't match any valid certificate/private key pair in the default keychain
** BUILD FAILED **
This is when I'm invoking as sudo su - probably I'm missing a valid configuration in my keychain.
When I'm invoking this build script as admin user I've got this:
Build settings from command line:
CODE_SIGN_IDENTITY = iPhone Developer: Marcin Zyga (CLJR93MXJ6)
OTHER_CODE_SIGN_FLAGS = --keychain /Users/admin/Library/Keychains/login.keychain
PROVISIONING_PROFILE = 94D99766-0268-4E0E-B8D1-053063BB2DA1
SDKROOT = iphoneos5.0
=== BUILD NATIVE TARGET signtest OF PROJECT signtest WITH CONFIGURATION Debug ===
Check dependencies
[BEROR]Code Sign error: Provisioning profile '94D99766-0268-4E0E-B8D1-053063BB2DA1' can't be found
** BUILD FAILED **
My provisioning profile definitly exists.

You've got two problems. The first is there's something in Xcode 4 and later that is changing what I believe is the search path or access rights of the command line build settings, because I, ALSO, am failing with the same codesign [BEROR] when building from command line but not Xcode directly.
I wish I knew the answer to the first problem. I've tried explicitly setting the developer identity, using the generic "iPhone Developer", updating the project settings to have the [sdk-iphoneos*]="", etc., and I have to yet discover the solution.
Did this used to work for you and then you did a Mac OS/Xcode update and now it doesn't? That's my dilemma.
ANYWAY, your second problem is easily fixable: Pass the entire path and filename for the PROVISIONING PROFILE, a-la "/Users/zyga/Library/MobileDevice/ProvisioningProfiles/94D99766-0268-4E0E-B8D1-053063BB2DA1.mobileprovision"
...A

Related

Provisioning profile not being accepted?

I'm trying to create a IPA from my cordova-ionic project using visual studio 2015. I can run the project on an iOS simulator using remotebuild.
I have followed the steps here and created a provisioning profile (using my free Apple ID). I am in a tricky situation and the iOS device that I would like to run the project on is in a different country.
I'm creating the provisioning profile on my friend's mac with the iOS device attached. I am then logging into an El Capitan VM on my machine and using the provisioning profile generated on my friend's mac to attempt to create an IPA. I am following what is outlined here and running the project on visual studio using debug and remote device or local device.
I get the following error:
Error: Remote build error from the build server Build failed with error Error code 65 for command:
xcodebuild with args: -xcconfig,/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/cordova/build-debug.xcconfig,-project,BookYourTutor.xcodeproj,ARCHS=armv7 arm64,-target,BookYourTutor,-configuration,Debug,-sdk,iphoneos,build,VALID_ARCHS=armv7 arm64,CONFIGURATION_BUILD_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/sharedpch - 1 BookYourTutor 1
Looking at the output from build, towards the end, i see:
Libtool /Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/device/libCordova.a normal armv7
cd /Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/CordovaLib
export IPHONEOS_DEPLOYMENT_TARGET=8.0
export PATH="/Users/noyolk/Downloads/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Users/noyolk/Downloads/Xcode-beta.app/Contents/Developer/usr/bin:/Users/noyolk/.taco_home/node_modules/taco-remote-lib/2.2.1/node_modules/taco-remote-lib/node_modules/ios-sim/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Users/noyolk/Downloads/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only armv7 -syslibroot /Users/noyolk/Downloads/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk -L/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/device -filelist /Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/CordovaLib/build/CordovaLib.build/Debug-iphoneos/CordovaLib.build/Objects-normal/armv7/Cordova.LinkFileList -o /Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/device/libCordova.a
=== BUILD TARGET BookYourTutor OF PROJECT BookYourTutor WITH CONFIGURATION Debug ===
Check dependencies
Signing for "BookYourTutor" requires a development team. Select a development team in the project editor.
Code signing is required for product type 'Application' in SDK 'iOS 10.0'
** BUILD FAILED **
The following build commands failed:
Check dependencies
(1 failure)
Failed to build app for buildNumber 708: Error code 65 for command: xcodebuild with args: -xcconfig,/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/cordova/build-debug.xcconfig,-project,BookYourTutor.xcodeproj,ARCHS=armv7 arm64,-target,BookYourTutor,-configuration,Debug,-sdk,iphoneos,build,VALID_ARCHS=armv7 arm64,CONFIGURATION_BUILD_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/sharedpch
MSBUILD : cordova-build error : Error: Remote build error from the build server Build failed with error Error code 65 for command: xcodebuild with args: -xcconfig,/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/cordova/build-debug.xcconfig,-project,BookYourTutor.xcodeproj,ARCHS=armv7 arm64,-target,BookYourTutor,-configuration,Debug,-sdk,iphoneos,build,VALID_ARCHS=armv7 arm64,CONFIGURATION_BUILD_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/sharedpch - 1
Error Remote build error from the build server Build failed with error Error code 65 for command: xcodebuild with args: -xcconfig,/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/cordova/build-debug.xcconfig,-project,BookYourTutor.xcodeproj,ARCHS=armv7 arm64,-target,BookYourTutor,-configuration,Debug,-sdk,iphoneos,build,VALID_ARCHS=armv7 arm64,CONFIGURATION_BUILD_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/Users/noyolk/.taco_home/remote-builds/taco-remote/builds/708/cordovaApp/platforms/ios/build/sharedpch - {1}
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Deploy: 0 succeeded, 0 failed, 0 skipped ==========
With what I believe to be the most important bit being,
=== BUILD TARGET BookYourTutor OF PROJECT BookYourTutor WITH CONFIGURATION Debug ===
Check dependencies
Signing for "BookYourTutor" requires a development team. Select a development team in the project editor.
Code signing is required for product type 'Application' in SDK 'iOS 10.0'
** BUILD FAILED **
I'm having trouble understanding what exactly this means or how I should fix it. For context, I'm using xcode 8 beta 4 on my El Capitan VM.
I've tried searching around for this 'error code 65' and the error message 'Signing for XXX requires a development team. Select a development team in the project editor.' but have not had much luck.
Any help is greatly appreciated.
Downgrading to xcode 7 from xcode 8 beta 4 seems to have resolved this issue.
There is a change due to the release of iOS 10.
Reference https://dpogue.ca/articles/cordova-xcode8.html for a workaround.
I actually had to do some trial and error. The above link helped a lot, but the issues were still with what Apple was needing for XCode 8 to accept the build request. My settings in build.json are similar to this:
"ios": {
"debug": {
"developmentTeam": "[my team id]",
"provisioningProfile: "[my provisioning profile]"
},
"release": {
"developmentTeam": "[my team id]",
"provisioningProfile: "[my provisioning profile]"
}
}
}
To get your developmentTeam, log into developer.apple.com, click on Membership, and you will see your TEAM ID. Put that in as the developmentTeam.
For the provisioningProfile, open XCode --> Preferences, click on your profile, View Details. Click on your provisioning profile, right click, and Show in Finder. Your provisioning profile is the entire file name, minus the .mobileprovision file extension. Save build.json, rebuild your project, and you should be good to go.

Setting Xcode Build Settings Terminal

I want to change build settings of a .xcodeproj without using Xcode IDE but through terminal commands (Codesigning Identity and Provisioning Profile to be exact).
I have searched all over but only found commands to build/archive the project from terminal, which I Do Not Want. What I want is to just change the settings, so that when I open the project in Xcode, it has the signing identities and provisioning profile set to what I had set in Terminal.
Xcodebuild command just builds/archives the project using what I pass as parameters, it doesn't set them as values in build settings of project.
Running xcodebuild -target <target-name> -showBuildSettings in terminal, where my project resides, gives me complete build settings of the project but I didn't get any method to set them.
Also I read here about using -setObject, but that also didn't help me as it also builds the code using parameters values I gave instead of actually setting them.
Currently using Xcode 6.3 and Xcode 7.
Any kind of help will be appreciated.
All Xcode settings is actually store in <project-name>.xcodeproj/project.pbxproj .
It looks like
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "";
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
...
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
SKIP_INSTALL = YES;
};
Code Signing Identity is controlled by CODE_SIGN_IDENTITY key and Provisioning Profile is controlled by PROVISIONING_PROFILE key.
The project.pbxproj is a text file that can be edited by traditional text processing tools in CLI, such as sed with
sed -ie 's/CODE_SIGN_IDENTITY = "iPhone Developer"/CODE_SIGN_IDENTITY = ""/g' <project-name>.xcodeproj/project.pbxproj
sed -ie 's/PROVISIONING_PROFILE = ""/PROVISIONING_PROFILE = "1c28c979-6bef-4917-aa34-92aecd91315c";/g' <project-name>.xcodeproj/project.pbxproj
You can get the list of available Signing Identities with
security find-identity -v -p codesigning
For PROVISIONING_PROFILE, it's a UUID of provisioning file, it can be fetched with
grep -aA1 UUID /path/to/mobileprovision

Xcode Error: Command /usr/bin/codesign failed with exit code 1

I have no idea why I am getting this error. I believe that I have all the correct provisioning profiles and such. I did just move to a new computer but I did also bring over the private keychain developer key. I have my developer files synced with Dropbox so I didn't need to move over the Xcode project. Here is the error:
CodeSign "/Users/michaellindahl/Library/Developer/Xcode/DerivedData/Fraction_Calculator-cgirhuuvywfnsyenisucsuauquoz/Build/Products/Debug-iphoneos/Fraction Calculator Pro.app"
cd "/Users/michaellindahl/Dropbox/Xcode/lindahl studios/FractionCalculator"
setenv CODESIGN_ALLOCATE /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/usr/bin/codesign --force --sign "iPhone Developer: Michael Lindahl (MXXX0X0XXB)" "--resource-rules=/Users/michaellindahl/Library/Developer/Xcode/DerivedData/Fraction_Calculator-cgirhuuvywfnsyenisucsuauquoz/Build/Products/Debug-iphoneos/Fraction Calculator Pro.app/ResourceRules.plist" --entitlements "/Users/michaellindahl/Library/Developer/Xcode/DerivedData/Fraction_Calculator-cgirhuuvywfnsyenisucsuauquoz/Build/Intermediates/Fraction Calculator.build/Debug-iphoneos/Fraction Calculator Pro.build/Fraction Calculator Pro.xcent" "/Users/michaellindahl/Library/Developer/Xcode/DerivedData/Fraction_Calculator-cgirhuuvywfnsyenisucsuauquoz/Build/Products/Debug-iphoneos/Fraction Calculator Pro.app"
CSSM_SignData returned: 8001094A
/Users/username/Library/Developer/Xcode/DerivedData/Fraction_Calculator-cgirhuuvywfnsyenisucsuauquoz/Build/Products/Debug-iphoneos/Fraction Calculator Pro.app: unknown error -2070=fffffffffffff7ea
Command /usr/bin/codesign failed with exit code 1
Thanks for your insight.
You've almost certainly got corrupted certs :
Revoke old certs, generate new ones, new provisioning profile, the works, magic happens again
This seems senseless, but I simply locked and then unlocked the login keychain and the problem went away. On reflection, the problem occurred after I had added a new certificate to the keychain. Maybe the addition of this additional certificate (unrelated to the current project) caused the problem.
Try going through all of the steps in the Managing Devices and Digital Identities document. This should help you verify that your machine is correctly set up.

Command /usr/bin/codesign failed with exit code 1

I am trying to test a app on my phone. I keep getting this error:
Command /usr/bin/codesign failed with exit code 1
I have added the Provisioning profile and went through the set up on the apple iPhone portal.
I have been looking at this for a little over an hour and a half and I still can't figure it out.
Any ideas why this isn't working and why I am getting this error? Thanks!
Edit:
Here's some information on my build:
CodeSign build/Debug-iphoneos/TableView.app
cd "/flashPics_iPhone BACKUP 2:27"
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
setenv _CODESIGN_ALLOCATE_ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
/usr/bin/codesign -f -s "iPhone Developer: Coulton Vento (LVEE98KDSF)" "--resource-rules=/flashPics_iPhone BACKUP 2:27/build/Debug-iphoneos/TableView.app/ResourceRules.plist" --entitlements "/flashPics_iPhone BACKUP 2:27/build/TableView.build/Debug-iphoneos/TableView.build/TableView.xcent" "/flashPics_iPhone BACKUP 2:27/build/Debug-iphoneos/TableView.app"
/flashPics_iPhone BACKUP 2:27/build/Debug-iphoneos/TableView.app: object file format invalid or unsuitable
Command /usr/bin/codesign failed with exit code 1
This is a good resource in figuring out how to setup the provisioning:
http://mobiforge.com/developing/story/deploying-iphone-apps-real-devices
You must download the provisioning profile, the certificate and make sure your iPhone's UDID is registered on those accounts. Then for the Distribution profile you need to specifically tell it in it's setting to use a Distribution Profile to make it build it.
Edit:
Under Project Settings > Select the Configuration your using (Debug, Release, or Distribution) and make sure under Code Signing your Profile appears there.
I fixed that error. The steps are:
GOTO project
select Edit Project setting
in genatel tab project Format select your current Compatible Xcode version and select based SDK for your currunt iPhone Device; for example (iphone device 4.0) then...
build tab:
configuration : Distribution
Base SDK : choose your latest xcode SDK Device
Code signing identity : choose your provisional portal that you alredy created in iPhone Devloper center and you installed so select that particular provisioning.
Any iPhone OS Device : select same as Code signing identity (as mentioned above)
Then next step is go scrolling at below that find Product Name
Product Name : give Product name exactly same as your prodoct name. That's it.
Follow the same steps in configuration :Debug and Release

How to solve "Application failed codesign verification" when uploading to iTunes Connect?

I've got a problem that I couldn't solve with a deep search in different resources as most of the "similar" points out to be an error with Icon.png size, etc...
I've tried to upload my application after verifying that:
Correctly builds and run on my device
That my certificates are installed properly
That my certs / profiles are not expired.
That the Icon.png has the proper size and format of 57x57 PNG.
And several other things.
Ran codesign --verify -vvvv MyApp.app which worked fine.
My ZIP File was properly done
When I've tried to upload through the iTunes connect interface I got the simple error above, and that's why I tried with ApplicationLoader, to try and find out what's causing the error looking at the console.
The console showed the following:
16/02/10 13:25:52 ApplicationLoader[549] *** Codesign error (please ignore invalid option comments): got requirements(0x800000, 534)
Executable=/var/folders/WZ/WZu24JnOGNe9L79GWq0IlU+++TI/-Tmp-/MyApp.zip/MyApp.app/MyApp
Identifier=com.realtimed.MyApp
Format=bundle with Mach-O thin (armv6)
CodeDirectory v=20100 size=829 flags=0x0(none) hashes=33+5 location=embedded
Signature size=4333
Authority=iPhone Developer: My Name (XXXXXXXXX)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=16/02/2010 13:22:24
Info.plist entries=17
Sealed Resources rules=3 files=28
Internal requirements count=1 size=144
Executable=/var/folders/WZ/WZu24JnOGNe9L79GWq0IlU+++TI/-Tmp-/MyApp.zip/MyApp.app/MyApp
got entitlements(0x800400, 317)
codesign_wrapper-0.7.3: using Apple CA for profile evaluation
codesign_wrapper-0.7.3: Caling codesign with the following args:
codesign_wrapper-0.7.3: /usr/bin/codesign
codesign_wrapper-0.7.3: --verify
codesign_wrapper-0.7.3: -vvvv
codesign_wrapper-0.7.3: -R=anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1] exists and certificate leaf[field.1.2.840.113635.100.6.1.4] exists
codesign_wrapper-0.7.3: --entitlements
codesign_wrapper-0.7.3: /var/tmp/signingbox/codesign_wrapper_entitlements.plist
codesign_wrapper-0.7.3: /var/folders/WZ/WZu24JnOGNe9L79GWq0IlU+++TI/-Tmp-/MyApp.zip/MyApp.app
**/var/folders/WZ/WZu24JnOGNe9L79GWq0IlU+++TI/-Tmp-/MyApp.zip/MyApp.app: valid on disk
/var/folders/WZ/WZu24JnOGNe9L79GWq0IlU+++TI/-Tmp-/MyApp.zip/MyApp.app: satisfies its Designated Requirement
test-requirement: failed to satisfy code requirement(s)
codesign_wrapper-0.7.3: failed to execute codesign(1)**
Any help / feedback or ideas on how to solve the situation would be highly appreciated.
I found the solution to this problem after deeply looking at the log file.
Although I created my own Distribution Profile and assigned to the CODE SIGNING IDENTITY the correct value for the developer certificate, it didn't work giving me an error: "Application failed codesign verification".
The problem is at the following line:
Authority=iPhone Developer: My Name
(XXXXXXXXX)
Despite the correct selection in the project settings for the Distribution profile, XCode was compiling it with the developer certificate.
I finally solved it: Right click on the "Targets" -> Get info -> and there it was selected (don't ask me why) the wrong distribution certificate instead of the right one.
I corrected that and it finally was accepted.
Related links (you need a developer account): https://devforums.apple.com/message/147964
Excellent post. I too was having this trouble and after much headache realized that both the Project AND the Target should be checked for using the correct Code Signing Identity. Somehow Xcode was reverting back to the Developer Provisioning Profile instead of the Distribution Provisioning Profile. It even did so on a build right after I had deliberately selected the correct one!
I. To be safe, first do the following:
Clean all builds.
Delete contents of build folder in finder.
Delete existing code signing identities from the project and target settings.
Restart Xcode.
II. Then check the Project for the correct Provisioning Profile:
Go to Project Settings > Build Tab > Code Signing Identity
Select the appropriate Distribution Provisioning Profile
III. Now check the Target:
Target > Get Info > Build Tab > Code Signing Identity
Select the appropriate Distribution Provisioning Profile
IV. Cross fingers and hope you never see that blasted little yellow triangle again.
Cy took the right approach for solving this problem - When "Application failed codesign verification" is a build warning, expand that item in the build log and scan for the root cause of the failed signature verification.
In the case of Cy.'s original post you'll see that the root issue was "test-requirement: failed to satisfy code requirement(s)", and in my experience this is almost always caused by signing with the wrong certificate i.e. an iPhone Developer profile instead of iPhone Distribution.
The root cause is not always an obvious explanation, but should guide you at least with additional search terms or troubleshooting ideas.
For others experiencing the "Application failed codesign verification" during Xcode Archive Validation or Submission, look to the build log at Product > Archive time for a build warning by the same title and expand that for the root cause. Then take a look at Apple's complete list of potential causes of this error at the following URL "How do I resolve the error: Application failed codesign verification?"
Check that the TARGET (and not only the Project) is setup with the correct Code Signing Identity for Release

Resources