bitrise-steplib/steps-xcode-archive

destination parameter prevents archiving tvOS projects #2459

LucasAdam opened this issue · 3 comments

Hi, since upgrading to 2.8.X from 2.7.X I can no longer build/archive my tvOS target.

2.8.X
xcodebuild “-workspace” “/Users/vagrant/git/Kowalski.xcworkspace” “-scheme” “Kowalski TV” “-configuration” “Release” “COMPILER_INDEX_STORE_ENABLE=NO” “clean” “archive” “-archivePath” “/var/folders/6q/wgy6jtp12w5gzgm9lzcglpqw0000gn/T/__archive__058960730/Kowalski TV.xcarchive” “-destination” “generic/platform=iOS” | xcpretty

2.7.X
xcodebuild “-workspace” “/Users/vagrant/git/Kowalski.xcworkspace” “-scheme” “Kowalski TV” “-configuration” “Release” “COMPILER_INDEX_STORE_ENABLE=NO” “clean” “archive” “-archivePath” “/var/folders/6q/wgy6jtp12w5gzgm9lzcglpqw0000gn/T/__archive__245322915/Kowalski TV.xcarchive” | xcpretty

As you can see there is the new destination parameter (iOS) which I can't seem to be able to edit in the step configuration.

Here is the error we get

xcodebuild: error: Unable to find a destination matching the provided destination specifier:
        { generic:1, platform:iOS }

Regards

SDKROOT is tvOS
image

You must be checking the project build settings and not the target. In our case we have a iOS target and a tvOS one. But the main project settings has iOS as SDKROOT

Hello there @LucasAdam!

This issue should be fixed now, since version 2.8.1 🙂
Let me know if everything works on your end as well 😉

Hi 👋 @LucasAdam,

First of all, thank your for your patience! As @Roland-Bak mentioned earlier: our team fixed the issue and I'm here to provide some context and details about it.

Since version 2.8.0, we add the -destination flag to the xcodebuild call, to make sure the step builds an iOS or tvOS project.

The root-cause was that the step built a macOS archive, which has slightly different file structure from an iOS archive.

This change also solves this issue partially: #180 - Catalyst app can't be correctly parsed

Version 2.8.0 parses the given project and determines the destination flag value, based on the SDKROOT build settings.

This new version introduced an issue, by the invalid expectation of having SDKROOT build settings as a project level build settings:

In version 2.8.1, we use the target build settings returned by xcodebuild -showBuildSettings to get the SDKROOT value.

I close this issue as the latest release should fix it. If you need more info or help, just open a new issue or get in touch with our Support Team.

Thanks and happy building 🚀
Mefi