Hello all!
My application written with C++/CMake and when building have some troubles with adding test environment for StoreKit every time - it need to be done manually.
Is there any way to add StoreKit environment settings with CMake and when executed command like this $ cmake -g Xcode ... StoreKit test environment were automatically added?
Xcode
RSS for tagBuild, test, and submit your app using Xcode, Apple's integrated development environment.
Posts under Xcode tag
168 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Xcode 16.2 suddenly injects the UIRequiredDeviceCapabilities key into our app's Info.plist. This results in a rejection from App Store Connect because of this key:
TMS-90109: This bundle is invalid - The key UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions. Refer to QA1623 for additional information: https://developer.apple.com/library/ios/#qa/qa1623/_index.html
The setting INFOPLIST_KEY_UIRequiredDeviceCapabilities is empty in our project, yet Xcode still injects:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
How can we prevent that? Or is there a way to strip it out during the build process? The Info.plist seems to get generated during an invisible build step, is there a way to make this explicit?
So I started a project in Xcode but without GitHub.
Now I have prepared Xcode for GitHub and kind of made it work.
I have also made a folder where I have cloned my project from GitHub.
So is there any way to connect Xcode and the new folder. If I save my project it doesn't know about my new folder I presume:
I could continue to use GitHub via Xcode but I'm afraid I will forget about commands in Git if I only use Xcode. If I should work on another project without Git.
I have a working Xcode Cloud setup for my iOS and macOS targets, and I'm trying to add visionOS support. The issue is that Firebase requires using their source distribution for visionOS (instead of their default binary distribution).
Locally, this works by launching Xcode with:
open -a Xcode --env FIREBASE_SOURCE_FIRESTORE project.xcodeproj
For Xcode Cloud, I've added a ci_post_clone.sh script that sets this environment variable for visionOS builds:
#!/bin/bash
if [[ $CI_PRODUCT_PLATFORM == "xrOS" ]]; then
echo "Running setup for visionOS..."
export FIREBASE_SOURCE_FIRESTORE=1
fi
However, I'm getting the following error during build:
an out-of-date resolved file was detected at /.../project.xcworkspace/xcshareddata/swiftpm/Package.resolved, which is not allowed when automatic dependency resolution is disabled
So since setting FIREBASE_SOURCE_FIRESTORE=1 changes which SPM dependencies are required:
Normal setup uses: abseil-cpp-binary, grpc-binary
Source distribution needs: abseil-cpp-swiftpm, grpc-ios, boringssl-swiftpm
What's the recommended way to handle this in Xcode Cloud when maintaining builds for all platforms? Should I be using separate workflows with different branches for different platforms? Or is there a better approach?
System:
Xcode 16.2
Using SPM for dependency management
Firebase iOS SDK 10.29.0
Building for iOS, macOS, and visionOS
Thanks in advance for any guidance!
Topic:
Developer Tools & Services
SubTopic:
Xcode Cloud
Tags:
Swift Packages
Xcode
Xcode Cloud
visionOS
Hello,
I am building an app that records a list view of projects in contentView. I am in Xcode 16.2.
I am having trouble when calling contentView in my @main app file and on the ContentView() line shown in the App file shows that ther is a "Missing argument for parameter 'project' in call". It prompts me to fix it with "Insert', project: ,#Project#.>".
However when I do this like the following:
ContentView(project: Project)
It says "Cannot convert value of type 'Project.Type' to expected argument type 'Project'"
These are my Code below
//Model
import Foundation
import SwiftUI
struct Project: Identifiable {
var name: String
var icon: String
var isFavorite: Bool
var color: Color
let id = UUID()
var compoundscore : Float
static func CurrentProjects() -> [Project] {
return [Project(name: "Test Project", icon: "🍎", isFavorite: true, color: .red, compoundscore: 4.5),
Project(name: "Swimming", icon: "🏊", isFavorite: false, color: .orange, compoundscore: 12.5),
Project(name: "Archery", icon: "🏹", isFavorite: false, color: .yellow, compoundscore: 37.5)
]
}
}
// App view where the error is
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView(project: Project)
}
}
}
// Content View
struct ProjectRow: View {
let project: Project
var body: some View {
HStack {
Text(project.icon)
.font(.title)
Text(project.name)
Spacer()
Image(systemName: project.isFavorite ? "heart.fill" : "heart")
}
}
}
struct ContentView: View {
var CurrentProjectlist = Project.CurrentProjects()
var project: Project
var body: some View {
NavigationView {
List {
Section {
if #available(iOS 17.0, *) {
ForEach(CurrentProjectlist) { project in
ProjectRow(project: project)
}
.listRowBackground(
Capsule()
.fill(Color(project.color))
.padding(.vertical, 2).padding(.horizontal, 20)
)
.listRowSeparator(.hidden)
.foregroundColor(.indigo)
} else {
// Fallback on earlier versions
}
} header: {
Text("CI Projects")
}
.listRowBackground(Color.blue)
.foregroundColor(.black)
.listRowInsets(.init(top: 0, leading: 40, bottom: 0, trailing: 40))
.listRowBackground(Color.black)
.listSectionSeparatorTint(.yellow)
.headerProminence(.increased)
.listRowInsets(EdgeInsets.init(top: 0, leading: 50, bottom: 0, trailing: 50))
}
.scrollContentBackground(.hidden)
.background(
Image("cool background")
.resizable()
.scaledToFill()
.clipped()
.edgesIgnoringSafeArea(.all)
.blur(radius: 3)
.overlay(Color.red.opacity(0.2))
)
.environment(\.defaultMinListHeaderHeight, 20)
.environment(\.defaultMinListRowHeight, 70)
.navigationTitle("Navigator")
}
}
}
I'm trying to build an app for Mac from an external source and the build process fails due to the requirement of a provisioning profile. I'm new to developing in Xcode and as far as I've know rn, you need to have a developer account to create a profile. I just want to test the app locally. Not sure if a profile is required for that.
We had push notifications and associated domains capabilities to our app but something happened either with my certificates or Xcode and they disappeared and can't add any capabilities anymore.
https://imgur.com/peRXNO6
Our App ID, certificate and provisioning profile are all correct and contain the correct capabilities.
Trying to use App Data on Xcode 16.2, and failing
I'm running the app with the debugger. When I run the app, I need to do a handful of things, which affects my app's cache files, and UserDefaults. What I'd like to do is store all of these settings, then have them loaded in when the app launches, so I don't need to do same, tedious work of changing settings by hand in the UI.
So, I discovered that I can provide an xcappdata directory in the Run options. This seems like exactly what I'm looking for. But I can't seem to get it to work. Like, when the app runs, it looks like none of those settings are brought in.
I ran the app on a device, and pulled down the application data, and then put that in the project. And you can see in the screenshot, that the value is set.
So, either I'm missing something (which is totally possible) or this feature is broken. Documentation on this is not great, so maybe I'm doing something wrong. If the feature is known to be broken, I'll give up on this. But if it should work, it would be great to get some tips here.
After upgrading to xcode 16.2 I see the following crash when resolving dependencies via command line:
** INTERNAL ERROR: Unable to load workspace '....' **
Uncaught Exception: *** -[NSMutableArray insertObjects:atIndexes:]: count of array (15) differs from count of index set (14)
Stack:
0 __exceptionPreprocess (in CoreFoundation)
1 objc_exception_throw (in libobjc.A.dylib)
2 -[__NSCFString characterAtIndex:].cold.1 (in CoreFoundation)
3 -[NSMutableArray insertObjects:atIndexes:] (in CoreFoundation)
4 __50-[IDEGroup insertGroupSubitems:atIndexes:context:]_block_invoke (in IDEFoundation)
5 -[DVTModelObjectGraph performBlockCoalescingModelChanges:] (in DVTFoundation)
6 -[IDEGroup insertGroupSubitems:atIndexes:context:] (in IDEFoundation)
7 -[NSMutableArray(DVTFoundationClassAdditions) dvt_sortedInsertOfObjects:withComparator:] (in DVTFoundation)
8 specialized IDESPMWorkspaceDelegate.registerDependencyFileReferences(_:modelGraphSynchronizerToken:) (in IDESwiftPackageCore)
9 specialized IDESPMWorkspaceDelegate.dependencyPackagesDidUpdate(packages:graphHasErrors:revalidatedFilePathCaches:modelGraphSynchronizerToken:) (in IDESwiftPackageCore)
10 closure #1 in IDESPMWorkspaceDelegate.packageGraphDidFinishAction(_:duration:result:) (in IDESwiftPackageCore)
11 partial apply for closure #1 in IDESPMWorkspaceDelegate.disableWorkspaceContentSynchronization(during:) (in IDESwiftPackageCore)
12 closure #1 in DVTModelObjectGraph.performBlockCoalescingModelChanges<A>(_:) (in DVTFoundation)
13 thunk for @callee_guaranteed () -> (@owned [String : NSObject]) (in DVTFoundation)
14 thunk for @escaping @callee_guaranteed () -> () (in DVTFoundation)
15 __58-[DVTModelObjectGraph performBlockCoalescingModelChanges:]_block_invoke (in DVTFoundation)
16 -[DVTModelGraphTransactionScope performTransaction:] (in DVTFoundation)
17 -[DVTModelObjectGraph performBlockCoalescingModelChanges:] (in DVTFoundation)
18 DVTModelObjectGraph.performBlockCoalescingModelChanges<A>(_:) (in DVTFoundation)
19 IDESPMWorkspaceDelegate.disableWorkspaceContentSynchronization(during:) (in IDESwiftPackageCore)
20 IDESPMWorkspaceDelegate.packageGraphDidFinishAction(_:duration:result:) (in IDESwiftPackageCore)
21 partial apply for thunk for @escaping @isolated(any) @callee_guaranteed @async () -> () (in IDESwiftPackageCore)
22 SPMWorkspace.packageGraphActionFinished(_:) (in SwiftPM)
23 closure #2 in closure #3 in SPMWorkspace.processPackageGraphActionsInBackgroundIfNeeded(canProcessPackageGraphActions:) (in SwiftPM)
24 dispatch thunk of SPMWorkspaceOrchestrationDelegate.packageGraphDidFinishAction(_:duration:result:) (in SwiftPM)
25 specialized thunk for @escaping @isolated(any) @callee_guaranteed @async () -> (@out A) (in SwiftPM)
26 partial apply for specialized thunk for @escaping @isolated(any) @callee_guaranteed @async () -> (@out A) (in SwiftPM)
27 completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) (in libswift_Concurrency.dylib)
sh: line 1: 24112 Abort trap: 6 env NSUnbufferedIO=YES xcodebuild -scheme XXX-Package -destination 'platform=iOS Simulator,id=950768B8-85B4-4250-A7EC-5AE8758369EE' -derivedDataPath .DerivedData -resultBundlePath '/.../XXX-Package.xcresult' -enableCodeCoverage YES -skipPackagePluginValidation -skipMacroValidation -disablePackageRepositoryCache build test```
Are there any workaround for this?
I have os_log statements in my app. With my phone connected to the Mac, when I run the app through XCode, open Console app, those logs are shown. However, when I'm launching the app on its own, those logs don't appear in Console (phone still connected).
Am I missing something very basic? Please help.
We are building an app which can reads texts. It can read english and Japanese normal texts successfully. But in some cases, we need to read Japanese tategaki (vertically aligned texts). But in that times, the same code gives no output. So, is there any need to change any configuration to read Japanese tategaki? Or is it really possible to read Japanese tategaki using vision framework?
lazy var detectTextRequest = VNRecognizeTextRequest { request, error in
self.resStr="\n"
self.words = [:]
// Get OCR result
guard let res = request.results as? [VNRecognizedTextObservation] else { return }
// separate the words by space
let text = res.compactMap({$0.topCandidates(1).first?.string}).joined(separator: " ")
var n = 0
self.wordArr=[[]]
self.xs = 1
self.ys = 1
var hs = 0.0 // To compare the heights of the words
// To get the original axis (top most word's axis), only once
for r in res {
var word = r.topCandidates(1).first?.string
self.words[word ?? ""] = [r.topLeft.x, r.topLeft.y]
if(self.cartLabelType == 1){
if(word?.components(separatedBy: CharacterSet(charactersIn: "//")).count ?? 0>2){
self.xs = r.topLeft.x
self.ys = r.topLeft.y
}
}
}
}
}
Hello Dear Developers,
Is it only to me or in iOS 18 there's a problem with Settings.bundle, Im using my settings.bundle to set my enivement for my app but after upgrading to iOS 18 I can't see my Settings.Bundle in my settings iphone,
just to mention that I also updated my xcode to 16.
Anyone who has occur with this problem? :)
I just created a new project in the newest version of Xcode as a sample project for a feedback.
Bug 1
So simply what I do in every new project is create a "Supporting Files" group (not a folder because I don't want to move these files on the file system). I put the following files in this group:
.entitlements file
-the Info.plist (which apparently new projects don't create anymore because I don't see one).
main.m
Assets.xcassets
In previous version of Xcode this was done with the "New Group without Folder" action (though back in the day I believe you'd get yellow folders in "New Group" and blue folder with 'New Folder" and they were separate actions.... which was actually better and much less insane IMO but that's not really important to this).
In any case, "New Group without Folder" is nowhere to be found in the context menu. I finally was able to get "New Group" to appear as long as I wasn't right clicking underneath any directory. But.... New Group actually creates a New Folder, just like New Folder. So I put the .entitlements in the Supporting Files group (which is not a group, but a directory) and the app won't compile unless I fix the path in project settings because I moved the file which is most definitely not what I wanted.
So we can no longer group files in the project navigator without moving them to new directories? Is this intentional behavior? It can't be, right?
Bug 2
I noticed dragging and dropping to reorder files in the project navigator no longer seems to work? In previous versions of Xcode I could drag and drop to reorder files (in groups and in folders, this would work). This appears to no longer work. I just have to accept the way Xcode orders my project files?
Xcode 16.2 are unavailable to develop widget with dynamic options, no matter SiriIntent or AppIntent that I try to use.
I have try to start a complete new project, then add widget with app intent checkbox check, with zero code changed then i press command run and WidgetKit Simulator present CHSErrorDomain error 1103 always, if i try to add widget directly from desktop, dynamic options are available to select but widgets doesn't seem like load successfully, it is stuck same in the WidgetKit Simulator.
I also try to start a new project in my other MacBook but no luck, this error are presenting all the time, I'm totally stuck here, does anybody having this issue?
I was granted permissions for family controls distribution for the main target of my app. Do I also need to request permission for the other targets like ShieldConfiguration, ShieldActionExtension, etc.? If no, how can i add the distribution capabilities to those targets?
Xcode 16.2
Swift 6
macOS Sequoia 15.1
SwiftUI
I am a beginner.
If I understand we can add buttons to the default Menu Bar but not delete them. Am I right? If you do not need most of the buttons, how do you solve that?
I can add a button:
import SwiftUI
@main
struct NouMenuProvesApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.commands {
CommandMenu("Custom") {
Button("Custom Action") {
print("Custom Action performed")
}
}
}
}
}
Can I delete a Menu Button or create a new simpler Menu Bar?
Problem: iOS 16.4 runtime targets are not available for selection, however the 16.4 simulator shows as installed under "Manage run destinations"
Config: Xcode 15.0, Sonoma 14.0, M1 Mac-Mini
Background: I write and maintain apps for my business unit. A co-worker dropped a phone on my desk and said 'The app doesn't work anymore, can you fix it'. Well, it turns out the phone is running iOS 16.6. The OS had been upgraded. This sent me down the path of upgrading Xcode on a development Mac, which also forced a MacOs upgrade on me. The end result is I now have XCode 15 on Sonoma, but have an iOS 16.6 device that I'm trying to target. Since I don't have any iOS 17 devices I didn't install the 17.0 runtime.
To install the "16.6 runtime" I went to: "Xcode - Settings - Platforms" and hit the + in the lower left and under "Previously released simulators" I selected iOS.
I selected iOS 16.4 as it was the closest I could see to 16.6 so I'm assuming it still works with 16.6. It took a few attempts to download correctly, but it now shows up in my platforms as "iOS 16.4 Simulator 6.18 GB on disk".
If I select "Product - Destination - Manage Run Destinations" I can see simulators for 10 different iOS devices (from iPad 10th gen to iPhone SE) all running iOS 16.4.
Great! I must be ready to develop and test for 16.6. Right?
Nope.
In the dropdown beside my App name the only option that is shown to me is "iOS 17" and the "Get" button beside it. I was expecting to my iOS 16.4 simulators as available target destinations, but there's nothing other than "iOS 17 - Get".
This is an old App that I'm maintaining so its deployment target is not new. Selecting a different iOS Deployment target doesn't have an effect.
I tried going into Manage Run Destinations and selected my iPhone 14 simulator on iOS 16.4 as "show run destination always". - no change
Older iOS version do not show as destinations.
Anyone else encounter this? Did you figure it out?
Help?
Thx
Dear Apple Developer Forum,
I have a question regarding the AVCaptureDevice on iOS. We're trying to capture photos in the best quality possible along with depth data with the highest accuracy possible. We were delighted when we saw AVCaptureDevice could be initialized with the AVMediaType=.depthData which works as expected (depthData is a part of the AVCapturePhoto). When setting to AVMediaType=.video, we still receive depth data (of same quality according to our own internal tests). That confused us.
Mind you, we set the device format and depth format as well:
private func getDeviceFormat() throws -> AVCaptureDevice.Format {
// Ensures high video format and an appropriate color profile.
let format = camera?.formats.first(where: {
$0.isHighPhotoQualitySupported &&
$0.supportedDepthDataFormats.count > 0 &&
$0.formatDescription.mediaSubType.rawValue == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
})
// Check and see if it's available.
guard format != nil else {
throw CaptureDeviceError.necessaryFormatNotAvailable
}
return format!
}
private func getDepthDataFormat(for format: AVCaptureDevice.Format) throws -> AVCaptureDevice.Format {
// Access the depth format.
let depthDataFormat = format.supportedDepthDataFormats.first(where: {
$0.formatDescription.mediaSubType.rawValue == kCVPixelFormatType_DepthFloat32
})
// Check if it exists
guard depthDataFormat != nil else {
throw CaptureDeviceError.necessaryFormatNotAvailable
}
// Returns it.
return depthDataFormat!
}
We're wondering, what steps we can take to ensure the best quality photo, along with the most accurate depth data? What properties are the most important, which have an effect, which don't? Are there any ways we can optimize our current configuration? We find it difficult as there's very limited guides and explanations on the media subtypes, for example kCVPixelFormatType_420YpCbCr8BiPlanarFullRange. Is it the best? Is it the best for our use case of high quality photo + most accurate depth data?
Important comment: Our App only runs on iPhone 14 Pro, iPhone 15 Pro, iPhone 16 Pro on the latest iOS versions.
We hope someone with greater knowledge at Apple can help us and guide us on how we can have the photos of best quality and depth data with most accuracy.
Thank you very much!
Kind regards.
Latest version of Xcode 16.1.
I have an existing package dependency which is sitting on a git@ssh.dev.azure.com account.
So, now whenever I remove that package dependency, I can no longer add it within the Xcode UI. Just no possible way to add it or find it in the Search or Enter Package URL text field.
How on earth are we meant to add SSH packages now?
Anyone else have this issue? If so, have you found a work-around without having to manually edit the package dependencies in the project?
Hi,
Lately, I've been getting the same window each time I install an app for testing. Anyone else?