I don't join iOS developer program yet, and only use iOS simulator.
I used carthage update , but failed and the build log said,
Check dependencies
Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “(null)” were found.
CodeSign error: code signing is required for product type 'Framework' in SDK 'iOS 8.1'
So I tried to regist the code sign with Xcode's suggestion, but it said "You need to add an apple ID account that is enrolled in Developer's program.".
Can't I use carthage without joining iOS developer program for xcodebuild?
Carthage builds a "fat" framework by design https://github.com/Carthage/Carthage/pull/45
You won't be able to submit an application to the store unless both the app binary and all its framework dependencies are signed with your provisioning profile.
I think I prefer stripping invalids architectures as part of the copy process over having more specific build artifacts because the latter will only complicate matters with stuff like #6, where I assume the .framework we download will contain both x86 and arm code?
/by @robb in https://github.com/Carthage/Carthage/issues/188
As you can see, the maintainers of carthage prefer using "one artefact for both the device and a simulator" approach. And it really does not make sense supporting "I have no provisioning profile" use-cases since those are quite rare.
For what it's worth, since we're re-signing during copy-frameworks anyway, we could technically sign this with the null identity -.
we could technically sign this with the null identity -
@robb, if you decide adding this feature, whose responsibility will it be setting the "null identity" ?
No clue, just thinking out loud
If we force xcodebuild to build projects (or at least iOS targets) with a CODE_SIGN_IDENTITY set to -, that should work. They'll be codesigned upon copy even if we don't do it, because Xcode will.
Thank you for teaching me!
I understood Carthage's concept.
Turns out this is disallowed.
Testing with RAC:
$ xcodebuild -workspace ReactiveCocoa.xcworkspace -scheme 'ReactiveCocoa iOS' -sdk iphoneos build CODE_SIGN_IDENTITY=-
Build settings from command line:
CODE_SIGN_IDENTITY = -
SDKROOT = iphoneos8.1
=== BUILD TARGET LlamaKit-Mac OF PROJECT LlamaKit WITH CONFIGURATION Debug ===
Check dependencies
Code Sign error: ad hoc code signing not allowed with SDK 'iOS 8.1'
CodeSign error: code signing is required for product type 'Framework' in SDK 'iOS 8.1'
=== BUILD TARGET ReactiveCocoa-iOS OF PROJECT ReactiveCocoa WITH CONFIGURATION Debug ===
Check dependencies
Code Sign error: ad hoc code signing not allowed with SDK 'iOS 8.1'
CodeSign error: code signing is required for product type 'Framework' in SDK 'iOS 8.1'
** BUILD FAILED **
The following build commands failed:
Check dependencies
Check dependencies
(2 failures)
If building for the simulator, everything is fine, so this restriction must exist specifically for iOS device builds.
I don't know that we should support simulator-only builds—seems like a lot of effort for little gain. And for Mac-only developers, we can complete https://github.com/Carthage/Carthage/issues/127 so they don't need an iOS profile.
Bummer
What about CI builds (Travis for instance)
I was hoping to use Carthage to pull in my private custom framework dependency. Works great locally, however breaks on Travis environment (presumably because of lack of code signing credentials)
Took me all day to track down this as the most likely culprit for this error:
carthage build --no-skip-current
*** xcodebuild output can be found in /var/folders/gw/_2jq29095y7b__wtby9dg_5h0000gn/T/carthage-xcodebuild.cnE6me.log
*** Building scheme "Gravy" in Gravy.xcodeproj
** BUILD FAILED **
The following build commands failed:
Check dependencies
(1 failure)
The command "carthage build --no-skip-current" failed and exited with 1 during .
Side note: It may be helpful to have a flag that tail's the xcodebuild log during build, as Travis doesnt allow you to go in and examine the file system as far as I'm aware - makes it a bit tricky to debug this error.
@sebbean You'll have to ensure that Travis imports a code signing identity. You can see how Carthage itself does it in the cibuild script.
Side note: It may be helpful to have a flag that tail's the xcodebuild log during build, as Travis doesnt allow you to go in and examine the file system as far as I'm aware - makes it a bit tricky to debug this error.
I'd really like to option to build only for the simulator because I don't have a code signing identity yet. It keeps starting app developers from using Carthage.
@dwlnetnl Thanks for the suggestion! Unfortunately, that would add a significant amount of complexity. Right now, it's very clear that when Carthage builds for iOS, you'll get a universal framework that you can use in both device and simulator builds.
I'd like to keep that simplicity if possible. :relaxed:
@jspahrsummers You are absolutely right!
Any update on this or #281? I'm hitting this in Travis now
For those of us who got here from the Internet: try building only the platform you need. For iOS, for instance, use
carthage build --platform iOS
Just curious, have Apple changed this? Because I just built Release-iphoneos "Cocoa Touch Framework" in XCode 8.2.1 (I used Build for profiling) with empty signing settings: http://i.imgur.com/S37J3HN.png So, is it signed or not? Maybe it's just using my default XCode "iOS developer" signing? I do not have Provisioning profile.
The only thing - my framework currently is Objective-C only. Not sure, if it affects the signing behavior though.
Yes, signing is not longer required when building a framework—and Carthage turns it off.
Most helpful comment
For those of us who got here from the Internet: try building only the platform you need. For iOS, for instance, use
carthage build --platform iOS