Dear Ed Ford,
We've managed to achieve reproducible builds! We're not using the dSYM files, we're actually checking the executables.
Here's how we did it:
Sample App
`-- Frameworks
|-- Baseframework1.framework (Embed & Sign)
|-- Baseframework2.framework (Embed & Sign)
|-- Baseframework3.framework (Embed & Sign)
`-- MiddlemanFramework.xcodeproj (Embed & Sign, Mach-O type=dynamic)
`-- Frameworks
|-- Baseframework1.xcodeproj (Do not embed, Mach-O type=dynamic)
|-- Baseframework2.xcodeproj (Do not embed, Mach-O type=dynamic)
`-- Baseframework3.xcodeproj (Do not embed, Mach-O type=dynamic)
Accomplished with:
Main App
References Middle Layer Framework by .xcodeproj and .framework
References base frameworks by .framework
Embed setting set to Embed & Sign (both base frameworks and middle layer framework)
Middle Layer Framework
Mach-O type set to dynamic
References base frameworks by .xcodeproj and .framework
Embed setting set to Do not embed
Base Framework:
Mach-O type set to dynamic
Since compiled libraries (xcframework) have to be of type static, we couldn't get it to work, but by having all frameworks be of type dynamic and reference them the way you said with Do Not Embed and Embed & Sign, we actually managed to compile an IPA with every framework as a dynamic executable and main application executable, which complies with the dwarfdump --uuid.
I want to express my deep appreciation for your kindness and willingness to help us out, it truly has been a great help. Without your guidance, we wouldn't have been able to make it!
Thank you very much!
Kind regards
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tags: