I am trying to create a source editor extension in Xcode 16, I just created a blank macOS project and added an extension target. I also changed "XcodeKit.framework" to Embed and sign, but when I run the extension on my Mac, I can't see the command under "Editor" menu.
I even tried to clone a sample extension from online and run it, even in this project I'm unable to see the commands under "Editor" menu.
Has anyone faced this issue?
Xcode
RSS for tagBuild, test, and submit your app using Xcode, Apple's integrated development environment.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
It'd be great if someone would give an overview of the steps to create a new app from an existing one. Can I copy my Xcode project to get started? After I copy my Xcode project, what do I need to do in Xcode? What do I need to do regarding certificate(s) and bundle id. Are there any steps where order is super important? Feel free, of course, to provide a link to an article and/or video on this as that'd be awesome if the information is current. What I've found online is typically out-of-date or more specific - not an overview.
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tags:
Bundle ID
Xcode
Signing Certificates
Code Signing
Summary:
At WWDC24, a new transition was introduced by the Apple Design team (.contentTransition(.symbolEffect(.replace)))
I was writing a post about it on my LinkedIn (https://www.linkedin.com/in/alex-fila/), and out of curiosity I tried multiple symbols with slashes. Many of them were not well center aligned during a new symbol effect. Some of the examples are: "speaker.fill" : "speaker.slash.fill”, "eye.fill" : "eye.slash.fill”. Please check the attached Swift file for more details and full SwiftUI View with issues.
Steps to Reproduce:
Create a new IOS App project in XCode.
Create a new SwiftUI File.
Initiate state variable: @State private var isSpeakerOn = true.
Create a new image with transition:
Image(systemName: isSpeakerOn ? "speaker.fill" : "speaker.slash.fill")
.contentTransition(.symbolEffect(.replace)).
5. Create a switcher or set a timer with a constant variable to toggle isSpeakerOn value (see attachment file).
6. Toggle isSpeakerOn value.
7. Observe the issue (2 symbols are not well center aligned during transition).
Expected Results:
During transition .contentTransition(.symbolEffect(.replace)) 2 SF symbols ("speaker.fill" : "speaker.slash.fill”) are well center aligned.
Actual Results:
During transition (when slash slowly appears on top of SF symbol), the main symbol is moved a few points up, creating a decentralized effect and making the user experience feel inconsistent.
Notes:
There are 200 SF Symbols with .slash that might be affected. It happens on latest Xcode and macOS versions, and could be a top priority for the Apple Design Team.
import SwiftUI
struct BUG: View {
@State private var isSpeakerOn = true
let timer = Timer.publish(every: 1.5, on: .main, in: .common).autoconnect()
let columns = [
GridItem(.flexible(), spacing: 20),
GridItem(.flexible(), spacing: 20)
]
var body: some View {
LazyVGrid(columns: columns, spacing: 60) {
Text("❌").font(.system(size: 100))
Image(systemName: isSpeakerOn ? "speaker.fill" : "speaker.slash.fill")
.font(.system(size: 200))
.frame(width: 200, height: 100, alignment: .center)
.contentTransition(.symbolEffect(.replace))
.symbolRenderingMode(.palette)
.foregroundStyle(
Color.primary,
Color.accentColor)
.onReceive(timer) { _ in
withAnimation(.spring(response: 0.3, dampingFraction: 0.7)) {isSpeakerOn.toggle()}}
Text("✅").font(.system(size: 100))
Image(systemName: isSpeakerOn ? "bell.fill" : "bell.slash.fill")
.font(.system(size: 170))
.frame(width: 150, height: 150, alignment: .center)
.contentTransition(.symbolEffect(.replace))
.symbolRenderingMode(.palette)
.foregroundStyle(
Color.primary,
Color.accentColor)
.onReceive(timer) { _ in
withAnimation(.spring(response: 0.3, dampingFraction: 0.7)) {isSpeakerOn.toggle()}}
Text("❌").font(.system(size: 100))
Image(systemName: isSpeakerOn ? "eye.fill" : "eye.slash.fill")
.font(.system(size: 150))
.frame(width: 200, height: 100, alignment: .center)
.contentTransition(.symbolEffect(.replace))
.symbolRenderingMode(.palette)
.foregroundStyle(
Color.primary,
Color.accentColor)
.onReceive(timer) { _ in
withAnimation(.spring(response: 0.3, dampingFraction: 0.7)) {isSpeakerOn.toggle()}}
}
.padding(40)
}}
#Preview { BUG() }
Hi everyone,
I've been working on an iOS app for about a year and a half. That application comes with unit and UI automated testings.
Recently I started the development of the tvOS application so I added a new target and used the same bundle id as I want to eventually share purchases.
What I need
I'm working on an application that uses VLC (Need to play media more exotic than MP4) through these two pods
pod 'MobileVLCKit', '3.6.0' (Only for iOS)
pod 'TVVLCKit', '3.6.0' (Only for tvOS)
What works
Compilation works fine for both targets
Unit tests work fine for both targets
UI tests work fine ONLY for the original iOS target
What doesn't work and how it fails
When I launch the UI tests for the tvOS target, the compilation succeeds, but I get an error when calling app.launch() from my XCTestCase.
Failed to get launch progress for <XCUIApplicationImpl: 0x600000c61e90 abergia.com.iptv at ...AppPath...>: App installation failed: Unable to Install “...AppName...”. This app is not made for this device. This app was not built to support this device family; app is compatible with ( 1, 2 ) but this device supports ( 3 ). (Underlying Error: Unable to Install “...AppName...”. This app is not made for this device. This app was not built to support this device family; app is compatible with ( 1, 2 ) but this device supports ( 3 ).
What I tried
Single target - Both Pods
It looks like I can 'cheat' a little the system and make the Xcode target compatible with both iOS and tvO, but when declaring both pods inside the same CocoaPod target, the installation fails as one of the library is not compatible.
Use a newer version of VLC (4.0.0)
Works BUT that version is way too unstable, I will eventually use it again once they fix all the issues.
Different Bundle ID
Changing the bundle id of the tvOS application resolves the issue BUT I really want to use the same bundle id to share the purchases.
Not UI testing the tvOS version
It's an option I'm starting to contemplate out of frustration but I'm sure that we have people here who can help me!
I'm working on an audio plugin, and when I set the target to VST3 instead of Standalone Plugin and check the "Debug Executable" box, I get this error:
Message from debugger: attach failed (Not allowed to attach to process. Look in the console messages (Console.app), near the debugserver entries, when the attach failed. The subsystem that denied the attach permission will likely have logged an informative message about why it was denied.)
I found this post, which seems to be about this same issue, and I followed the recommended solution:
I made sure CODE_SIGN_INJECT_BASE_ENTITLEMENTS is true and DEPLOYMENT_POSTPROCESSING is false. I also checked the entitlements on the .app using codesign -d --entitlements, and it returned:
[Key] com.apple.security.get-task-allow
[Value]
[Bool] true
This seems like it has the proper entitlements, but it is still breaking with the above error message when I clean and build. Any ideas?
I tried dragging an apns file for a live activity into my simulator to begin a Live Activity.
It didn't do anything. I didn't see it mentioned in the wwdc videos either. So I'm wondering if this experience is not yet developed, or maybe I'm doing something incorrectly?
Hi.
I have a xcframework that has a dependency on 'RxSwift' and 'RxCocoa'. I deployed it using SPM by embedding it in a Swift Package.
However when I import swift package into another project, I keep getting the following error:
"Missing required module 'RxCocoaRuntime"
How can I fix this?
Below are the steps to reproduce the error.
Steps
Create Xcode proejct, make a dependency on 'RxSwift' and 'RxCocoa' (no matter doing it through tuist or cocoapods)
Create XCFramework from that proejct. (I used commands below)
xcodebuild archive \
-workspace SimpleFramework.xcworkspace \
-scheme "SimpleFramework" \
-destination "generic/platform=iOS" \
-archivePath "./SimpleFramework-iphoneos.xcarchive" \
-sdk iphoneos \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild archive \
-workspace SimpleFramework.xcworkspace \
-scheme "SimpleFramework" \
-archivePath "./SimpleFramework-iphonesimulator.xcarchive" \
-sdk "iphonesimulator" \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild -create-xcframework \
-framework "./SimpleFramework-iphoneos.xcarchive/Products/Library/Frameworks/SimpleFramework.framework" \
-framework "./SimpleFramework-iphonesimulator.xcarchive/Products/Library/Frameworks/SimpleFramework.framework" \
-output "./SimpleFramework.xcframework"
Embed in Swift Package, and deploy.
// swift-tools-version: 6.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "SimplePackage",
platforms: [.iOS(.v16)],
products: [
.library(
name: "SimplePackage",
targets: ["SimplePackage"]),
],
dependencies: [
.package(url: "https://github.com/ReactiveX/RxSwift", from: "6.8.0")
],
targets: [
.binaryTarget(
name: "SimpleFramework",
path: "Sources/SimpleFramework.xcframework"
),
.target(
name: "SimplePackage",
dependencies: [
"SimpleFramework",
"RxSwift",
.product(name: "RxCocoa", package: "RxSwift")
]
)
]
)
Download Swift Package in another project and import module.
I resolved this by removing dependencies from the Swift Package, downloading package in another project, and fetching dependencies by cocoapods.
Thist works, but I don't want to use another dependency manager while using SPM.
Development Environment
CPU : Apple M4 Max
MacOS : Sequoia 15.3
Xcode : 16.2
Hi everyone,
I’m trying to detect if Developer Mode is enabled on iOS 16+ devices using Swift but haven’t found any official APIs or documentation for this. Are there Apple-recommended ways to achieve this, or is it restricted for privacy/security reasons?
Thanks!
I want to install the latest Xcode development software on my Mac, but the xip files won't open. I keep getting the following message:
There was a problem while reading the contents of "Xcode_15 xip":
Data is corrupted
I have tried several unarchiver packages, and keep getting this message. I have also downloaded several other Xcode versions with the same result. Any idea what is going on here and/or how to fix it?
Topic:
Developer Tools & Services
SubTopic:
Xcode
Hi,
When build our project on one Mac/Xcode, build got interrupt and failed, it state that
"The signature of
"xxxxxx.x-framework" cannot be validated and may have been compromised.
Validation Error: The signing certificate has been revoked
(CSSMERR_TP_CERT_REVOKED)"
One strang thing is this build failed only on Xcode/mac, but the exact the project could be built successfully.
So question here:
How can skip this warning to make the project build successfully?
More curious, how this interrupt only happened on one Xcode, while others are ok?
Thanks,
KK
Topic:
Developer Tools & Services
SubTopic:
Xcode
I am trying to follow the guide for automating creation of a DMG for distribution of a macOS application but can't figure out how to get the ExportOptions.plist from a manual export.
I am trying to follow this guide:
https://developer.apple.com/documentation/security/customizing-the-xcode-archive-process
What is a 'manual export' and what are the steps for creating a manual export.
`# Ask xcodebuild(1) to export the app. Use the export options
# from a previous manual export that used a Developer ID.
/usr/bin/xcodebuild -exportArchive -archivePath "$ARCHIVE_PATH" -exportOptionsPlist "$SRCROOT/ExportOptions.plist" -exportPath "$EXPORT_PATH"`
Where is "$SRCROOT" ? presumably I have to copy this ExportOptions.plist to this location.
Thanks - I am sure this must be blindingly obvious because there seems to be no reference as to how you do this 'manual export' or where one finds the resulting options file.
We are renaming the project and a Static Library the is critical to the operation on the app is not found during compiling.
We have the same project working fine. We have reviewed the project.pbxproj file and searched for erroneous linking, reviewed the Target settings and there is nothing obviously wrong. (Copied and secured the original)
Typically workflow is:
Clean
Delete Derived Data dir
D/l Swift Packages
Build/Run
The team has many years using Xcode / Swift and the project and this is not clear how to resolve. We have scoured SO and the solutions do not apply.
Facts:
-No cocoapods
-Search Paths all set
Linker all set
Thoughts?
Hi there -
when attempting to upload the latest build of my macOS app to App Store Connect via Xcode's Organizer I'm now greeted with this warning.
I don't even know what it's attempting to tell me..
Yes, I understand what dSYMs are for - but the UUIDs don't appear anywhere
in my workspace (full text search on the folder),
in the build log,
or the ..thing.. the 'Export' button generates.
Any help much appreciated, ATM I don't even know where to start.
Cheers,
Jay
When you build a static library that includes DWARF information, you may encounter error messages in the binary package generated by Xcodebuild. Upon examining the DWARF information with dwarfdump, you will find that any entries containing keywords like dir are all absolute paths specific to the publisher's computer.
This is quite alarming, as it poses a risk of leaking private information. Additionally, when debugging an app, you can encounter consistent warning notes indicating that the referenced path addresses cannot be found. This is because the absolute path addresses generated during the 'xcodebuild' process reflect the paths from the computer used to build it. When distributing this to others, how can anyone access these paths?
Has the design of the secondary linking process for DWARF considered the issues related to binary distribution?
Are there existing solutions to address and handle privacy concerns?
Is there a solution to allow the distributed DWARF files to be correctly recognized during compilation and debugging of the app?
BTW: Incorrect paths can indeed affect LLDB's ability to load and debug the application effectively?
Hello everyone,
My team is in the process of migrating from Xcode 15.2 to Xcode 16.2, and we are also transitioning from Intel Macs to M3 Max Macs. During this transition, we had to update the "Excluded Architectures" settings to include arm64 for compatibility with our new machines.
Everything seemed fine when testing builds locally on our individual machines. However, when we merged our changes into a shared branch and attempted to archive the build or run it on Codemagic, we encountered the following error:
Build input file cannot be found: '/Users/.../DerivedData/.../UninstalledProducts/iphoneos/Router.framework/Router'.
Did you forget to declare this file as an output of a script phase or custom build rule which produces it?
Steps We Have Taken:
Checked Derived Data: We cleared DerivedData and rebuilt the project, but the issue persists.
New Branch Testing: We combined all the merged changes into a new branch on a single machine to rule out any Xcode version mismatches, but we still see the same issue.
Any guidance would be much appreciated. Thanks in advance!
Topic:
Developer Tools & Services
SubTopic:
Xcode
The following function could run several hundred times with no problem but will occasionally cause a EXC_BAD_ACCESS (SIGBUS). The last time it was a KERN_PROTECTION_FAILURE perhaps meaning it is trying to write to a read only memory but previously it was KERN_INVALID_ADDRESS. I have tried debugging tools to no avail. Can anyone see any reason why the following function could be causing this. Just in case the function is a red herring the only other thing that was running is a AVQueuePlayer that contains 11 tracks, but the crash happens mid song making it unlikely.
The function includes running other functions so below is all related functions that happen as a result of a swipe gesture.
func completeLeft() {
let add1 = Int(tiles[Square - (squares2move + 2)].name ?? "0") ?? 0
let add2 = Int(currentNode.name ?? "0") ?? 0
let add = add1 + add2
if add.isMultiple(of: 9) == false {
if squares2move == 0 {
self.moveinprogress = 0
return
}
moveLeft1()
}
if add.isMultiple(of: 9) {
squares2move += 1
moveLeft2()
}
func moveLeft1() {
var duration = TimeInterval(0.1)
duration = Double(squares2move) * duration
self.soundEffect = "swipe"
self.playEffects(Volume: self.effectsVolume)
let move = SKAction.move(to: positions[Square - (squares2move + 1)], duration: duration)
currentNode.run(move, completion: {
self.tiles[Square - (squares2move + 1)].name = self.currentNode.name
self.tiles[Square - 1].name = ""
self.currentNode.position = self.positions[Square - (squares2move + 1)]
self.newNumber()
})
}
func moveLeft2() {
var duration = TimeInterval(0.1)
duration = Double(squares2move) * duration
self.soundEffect = "swipe"
self.playEffects(Volume: self.effectsVolume)
let move = SKAction.move(to: positions[Square - (squares2move + 1)], duration: duration)
currentNode.zPosition = currentNode.zPosition - 1
currentNode.run(move, completion: {
self.currentNode.position = self.positions[Square - (squares2move + 1)]
self.tiles[Square - 1].name = ""
self.currentNode.name = "\(add)"
self.tiles[Square - (squares2move + 1)].name = "\(add)"
if add > self.score {
self.score = add
}
if add >
self.currentgoal {
self.levelComplete()}
else {
self.playEffects2(soundEffect: "Tink", Volume: self.effectsVolume, Type: "caf")}
if self.currentNode.childNode(withName: "Label") == nil {
self.currentNode.texture = SKTexture(imageNamed: "0.png")
let Label = SKLabelNode(fontNamed: "CHALKBOARDSE-BOLD")
Label.text = "\(add)"
Label.name = "Label"
let numberofdigits = Label.text!.count
if numberofdigits == 1 {
Label.fontSize = 45 * self.hR}
if numberofdigits == 2 {
Label.fontSize = 40 * self.hR}
if numberofdigits == 3 {
Label.fontSize = 32 * self.hR}
if numberofdigits == 4 {
Label.fontSize = 25 * self.hR}
Label.horizontalAlignmentMode = .center
Label.verticalAlignmentMode = .center
Label.fontColor = .systemBlue
Label.zPosition = 2
self.currentNode.addChild(Label)
self.currentNode.zPosition = self.currentNode.zPosition + 1
var nodes = self.nodes(at: self.positions[Square - (squares2move + 1)])
nodes = nodes.filter { $0.name != "Tile" }
nodes = nodes.filter { $0 != self.currentNode }
nodes = nodes.filter { $0 != self.currentNode.childNode(withName: "Label") }
for v in nodes {
v.removeFromParent()}
}
else {
let Lbl = self.currentNode.childNode(withName: "Label") as? SKLabelNode
Lbl!.text = "\(add)"
let numberofdigits = Lbl!.text!.count
if numberofdigits == 1 {
Lbl!.fontSize = 45 * self.hR}
if numberofdigits == 2 {
Lbl!.fontSize = 40 * self.hR}
if numberofdigits == 3 {
Lbl!.fontSize = 32 * self.hR}
if numberofdigits == 4 {
Lbl!.fontSize = 25 * self.hR}
self.currentNode.zPosition = self.currentNode.zPosition + 1
var nodes = self.nodes(at: self.positions[Square - (squares2move + 1)])
nodes = nodes.filter { $0.name != "Tile" }
nodes = nodes.filter { $0 != self.currentNode }
nodes = nodes.filter { $0 != self.currentNode.childNode(withName: "Label")
}
for v in nodes {
v.removeFromParent()}
}
self.moveinprogress = 0
})
}
}
func moveLeft() {
var duration = TimeInterval(0.1)
duration = Double(squares2move) * duration
self.soundEffect = "swipe"
self.playEffects(Volume: self.effectsVolume)
let move = SKAction.move(to: positions[Square - (squares2move + 1)], duration: duration)
currentNode.run(move, completion: {
self.tiles[Square - (squares2move + 1)].name = self.currentNode.name
self.tiles[Square - 1].name = ""
self.currentNode.position = self.positions[Square - (squares2move + 1)]
self.newNumber()
})
}
Topic:
Developer Tools & Services
SubTopic:
Xcode
DocC supports treating build warnings as errors using the --warnings-as-errors flag. Is there a way to pass this flag to xcodebuild docbuild command or do I need to use xcrun docc convert after generating the symbol graph?
Hello!
I'm trying to flutter run my app but I get this error (Xcode): Command SwiftEmitModule failed with a nonzero exit code
So far I've tried:
rm -rf ios/Pods ios/Podfile.lock
flutter clean && flutter pub get
clean xcode workspace
reinstall xcode
None of the solutions actually work.
Xcode: Version 16.2 (16C5032a)
Topic:
Developer Tools & Services
SubTopic:
Xcode
Hi there,
I uploaded an update bundle for the posted app, but I got a rejection message.
ITMS-90048: This bundle is invalid - Your archive contains paths that are not allowed: [._Symbols]
The XCode version I'm using is 16.2, and I've been trying to find a route using Run Script and Finder, but I don't know what the hell it is about.
Does anybody know what could cause this issue?
Any help would be appreciated.
Thanks.
Versions
XCode version: 16.2
iOS version: 17.0
Background
I am trying to generate a QR code inside the ActivityReportExtention which encoded the FamilyActivitySelection information. The code is roughly:
Question
Can I create Image inside the ActivityReportExtension? I cannot even render a simple image (not QR code) inside the extension.
How can I debug inside the extension? Logs of the extension are not shown in the console.
Code
A function to generate QR Code
import CoreImage
import UIKit
func generateQRCode(from string: String) -> UIImage? {
let data = string.data(using: .ascii)
guard let filter = CIFilter(name: "CIQRCodeGenerator") else { return nil }
filter.setValue(data, forKey: "inputMessage")
filter.setValue("Q", forKey: "inputCorrectionLevel") // Q for medium quality
guard let outputImage = filter.outputImage else { return nil }
// Scale the QR code image so it looks clear on screen
let transform = CGAffineTransform(scaleX: 10, y: 10)
let scaledImage = outputImage.transformed(by: transform)
// Create a CIContext and generate a CGImage from the CIImage
let context = CIContext()
if let cgImage = context.createCGImage(scaledImage, from: scaledImage.extent) {
return UIImage(cgImage: cgImage)
} else {
return nil
}
}
Inside ActivityReportExtension sandbox:
struct LineChartView: View {
var body: some View {
VStack {
if let qrImage = generateQRCode2(from: "this is a test") {
Image(uiImage: qrImage)
.resizable()
.scaledToFit()
.frame(width: 200, height: 200)
} else {
Text("QR Code generation failed")
}
}
}
}