xcodebuild says does not contain scheme

后端 未结 10 1567
天命终不由人
天命终不由人 2020-12-04 05:26

I have a curios issue.

I have a project that I\'ve worked on and always built from the XCode IDE, and it worked fine. Now I\'m setting up Bamboo to build the projec

相关标签:
10条回答
  • 2020-12-04 05:53

    Got the same problem but during building with xcode as subproject of main one. Built subproject in xcode standalone - after that this error disappeared.

    0 讨论(0)
  • 2020-12-04 05:57

    One common reason for the scheme to be missing is forgetting to push the commits to the origin. If you get a missing scheme message, you should first verify the scheme is shared, then verify you have committed the changes AND pushed them to the origin server.

    0 讨论(0)
  • 2020-12-04 05:58

    Debug the issue like this:

    xcodebuild -list
    

    or if you are using a workspace (e.g. with pods)

    xcodebuild -workspace MyProject.xcworkspace -list
    

    If you scheme is not listed fix like so:

    enter image description here

    0 讨论(0)
  • 2020-12-04 06:00

    Ok I know its 2 minutes later but I found another stack overflow that says the scheme has to be set to shared... Where does Xcode 4 store Scheme Data?

    0 讨论(0)
  • 2020-12-04 06:01

    I had this error while implementing CI.The Question above is identical to my problems except I am using Gitlab's own CI tool.You can check if there is any such file in Bamboo.
    I solved it by making some changes to gitlab-ci.yml file.
    After you hav made your scheme availabe by sharing. In Xcode Go to Products>Scheme>Manage Scheme and check share to share.

    Changes

    Set absolute path everywhere.
    eg.xcodebuild clean archive -archivePath /path/to/your/project/build/testDemo -scheme testDemo | xcpretty
    here you need to change /path/to/your/project/ with your path and testDemo with your project name.

    0 讨论(0)
  • 2020-12-04 06:02

    You are definitely on the right track with respect to the .xcscheme file -- I had this problem appear while setting up my own projects!

    For posterity, or at least anyone getting here from a search, here are two versions of things -- the "I'm busy, so just the facts please" version and a more involved discussion and rationale. Both of these versions assume you are trying to build from a Workspace file; if you aren't then my apologies as this mostly applicable to workspace-based projects.

    Condensed 'Fix-it' Version

    The root cause is that the default behavior of Schemes is to keep schemes 'private' until they are specifically marked as shared. In the case of a command-line initiated build, the Xcode UI never runs and the xcoderun tool doesn't have its own cache of Schemes to work with. The goal is to generate, share, and commit the scheme you want Bamboo to run:

    1. On a clean working copy of the code, open your Project's workspace.
    2. Choose Scheme > Manage Schemes... from the Product Menu.
    3. The list of Schemes defined for the project appears.
    4. Locate the Scheme Bamboo is trying to run
    5. Ensure the 'Shared' box is checked for that scheme and that the 'Container' setting is set to the Workspace and not the project file itself.
    6. Click 'OK' to dismiss the Manage Schemes sheet.
    7. A new .xcscheme file has been created in your project at WorkspaceName.xcworkspace/xcshareddata/xcschemes.
    8. Commit this file to your repository and run a Bamboo build.

    Deeper Discussion and Rationale

    Xcode 4 introduced Workspaces and Schemes as a way to help try and tame some of the chaos that is inherent to dealing with the mechanics of wiring related Xcode projects, build targets, and build configurations together. The workspace itself has its own set of configuration data that describes each of the smaller 'boxes' of data it contains and acts as a skeleton for attaching .xcodeproj files and a set of shared configuration data that gets mirrored to each developer machine or CI system. This is both the power and pitfall of Workspaces -- there are 1) lots of ways in which one can get things configured 100% correctly, but put into the wrong container or 2) put into the correct container, but configured improperly thus rendering data inaccessible by other parts of the system!

    The default behavior of Xcode 4 schemes is to automatically generate new schemes as projects are added to the Workspace file. Those of you that have added several .xcodeproj files may have noticed that your scheme list quickly becomes unruly especially as project files are added, then removed, and then readded to the same workspace. All schemes, autogenerated or manually created, default to being 'private' schemes visible only to the current user even when .xcuserdata files are committed with the project's data and configuration. This is the root cause of that cryptic build error Bamboo reports from xcodebuild -- Because Bamboo operates the build through the command line and not the Xcode UI, it doesn't have an opportunity for Schemes to get automatically generated and relies only on those that are defined in the workspace itself. Assuming you've configured Bamboo to build from a workspace using a command like this:

    xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
    

    xcodebuild goes looking for file <'scheme' Parameter Value>.xcscheme existing at <'workspace' Parameter Value>/xcshareddata/xcschemes.

    Obviously there are bunches of ways in which one could configure both Bamboo and a workspace, so keep in mind that your unique configuration may not map 100% to what is presented here. The key takeaways:

    1. Certain automated tasks the Xcode UI magically takes care of are not available via the Xcodebuild CLI.
    2. You can attach scheme and build configuration data to many places in the 'container hierarchy' -- Make sure your data winds up in the right container (Workspace, Project, and/or Build Target)
    3. Consider where in the container hierarchy the xcodebuild tool may be looking for configuration data; a great indicator of where it will start looking is based on the use of '-workspace' or '-project' arguments.

    The 'Shared' box is already checked...now what?

    I encountered this same issue on my own Bamboo instance; it turned out that the scheme that was committed in my repository was outdated and the latest version of the command line tools wasn't handling it gracefully. Since this existed previously, I took a look through the settings to make sure there wasn't anything glaringly custom about the scheme, deleted and recreated the scheme ensuring that I marked it as 'Shared', and recommitting the new .xcscheme file to the repository.

    If everything looks good and rebuilding it doesn't solve the issue, double check that container setting -- it is really easy to get that scheme attached to the wrong container in the hierarchy!

    0 讨论(0)
提交回复
热议问题