I am trying to submit my App CaptureEclipse (AppleID 1567295651; AlmadenObservatory.CaptureEclipse) for release on the Apple Mac App Store. I am having a problem with getting the App Validated. The app includes the Canon EDSDK framework which includes two bundles CHHLLITE and EdsImage. Using the simple path of submitting the running code to Archive I get the following error during Validate for each bundle
CFBundleIdentifier Collision The info.plist …. Is already in use by another application.
I have tried following the instructions I have found from Apple Websites {cited below} to no avail. I have also tried following advice from 3rd party websites. Some of them allow the app to validate, but then it is unable to load the bundles.
Note that A-5 asked the same question for the same code on the developer forum 4 years ago and never received an answer.
This cannot be a unique problem and I am sure it is an RTFM, but I cannot find the proper “M” to “R”. Please help
References - Apple
A-1 Signing a Mac Product For Distribution -
https://developer.apple.com/forums/thread/128166
Does not discuss included frameworks
A-2 TN2206
https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG314
robhawley@Robs-Mac-Pro EDSDK.framework % codesign -f -v -s "Apple Distribution: robert hawley" Versions/A
Versions/A: replacing existing signature
Versions/A: signed bundle with Mach-O thin (x86_64) [com.canon.edsdk]
Code Ran Successfully
Validate: Both bundles reported CFBundleIdentifier Collision {} already in use by another application
A-3 Code Signing Tasks
https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html
followed “Using Library Validation” but did not change result
A-4 Developer Forums: CFBundleIdentifier Collision for using FMOD
https://developer.apple.com/forums/thread/678131
Similar to O-2 below (but did not suggest resigning). I gave it a try
robhawley@Robs-Mac-Pro Framework % codesign -f -v --remove-signature EDSDK.framework/Versions/A/CHHLLite.bundle
EDSDK.framework/Versions/A/CHHLLite.bundle: replacing existing signature
EDSDK.framework/Versions/A/CHHLLite.bundle: signed []
robhawley@Robs-Mac-Pro Framework % codesign -f -v --remove-signature EDSDK.framework/Versions/A/EdsImage.bundle
EDSDK.framework/Versions/A/EdsImage.bundle: replacing existing signature
EDSDK.framework/Versions/A/EdsImage.bundle: signed []
robhawley@Robs-Mac-Pro Framework % codesign -f -v --remove-signature EDSDK.framework/Versions/A/EDSDK
EDSDK.framework/Versions/A/EDSDK: replacing existing signature
EDSDK.framework/Versions/A/EDSDK: signed []
The result is that code sign failed during the XCode build probably because the signing identifier (mine) did not match what was in the bundle (theirs). When I modified the bundles as suggested in O-2 then the bundles did not load
A-5 Developer Forums: CFBundleIdentifier Collision. The Info.plist CFBundleIdentifier value 'com.canon.EdsImage
https://developer.apple.com/forums/thread/73528
Identical problem, but received no response
Other Sources
O-1 Hussain
https://sayeedontech.wordpress.com/2014/06/26/mac-app-code-signing-frameworks/
Gives same advice as TN2206
O-2 FMod
https://qa.fmod.com/t/cfbundleidentifier-collision/17227
Suggests the most aggressive change. Remove the signature on all 3 components, modify the info.plists with a new product id, resign with my certificate. That does, in fact, allow validation, but the bundles do not load resulting in a crash in the framework during the first call into it.
Post
Replies
Boosts
Views
Activity
This is for MacOS
My app posts errors during its operation. Two years ago the following
used to be able to test whether the alert was correct (or
missing)
func isRightAlert(alertImgStr: String, target: String) -> Bool{
let app = XCUIApplication()
let ackdialog = app.dialogs["alert"]
let imageexists = ackdialog.images[alertImgStr/*"CaptureEclipse alert"*/].exists
//let full = app.debugDescription
XCTAssert(imageexists)
let acklist = ackdialog.children(matching: .staticText)
//NSLog( String(acklist.count))
var found = false
NSLog("Alert>>>>>>>>>>>")
for index in 0...acklist.count - 1{
<see if is is one of the expected ones>
}
<other tests>
}
Now that I am on Ventura with XCode 14.3 it is no longer able to detect
the alert. ackdialog returns as not found. imageexists is false which triggers the Assert
The alert is on the screen when the timeouts I added trigger
app.debugDescription justs lists all of my menu entries
These are my own alerts (NSAlert) and not system alerts.
My app includes a 3rd party framework that is embedded. The version from the Mac App Store runs just fine on 14.1.2. When I rebuild a released version of my app with XCODE 15 it now produces a "different Team ID" error and will not load the 3rd party framework.
Eskimo talked about this problem in https://developer.apple.com/forums/thread/126895
He provided a workaround, but that requires reducing the App security by turning off library validation. Since this was not necessary in XCODE 14 there is an error regarding 3rd party frameworks that was introduced in XCODE 15