It depends how your dependencies are linked into your app.
If you use Cocoapods with use_frameworks!
all dependencies will be compiled as separate dynamic frameworks and will put into Frameworks folder inside your app and in this case XCode can generate dSYM files for each of them. But when you link your libraries statically the symbolication info is put into "YourApp.dSYM" file because libraries code is injected inside your app’s binary.
The same works with SPM. By default swift packages are compiled as static libraries so that its binaries will be inserted in your app's binary and all symbolication info will be inside "YourApp.dSYM" under __swift_ast
section.
To make your package as dynamic library you should state it implicitly inside Package.swift
file and after XCode can generate dSYM for it, e.g.:
let package = Package(
name: "MyDynamic",
products: [
.library(
name: "MyDynamic",
type: .dynamic,
targets: ["MyDynamic"]),
],
…
But if you want to link already static third party package dynamically you can make you own local dynamic package (wrapper) with needed static dependencies, for instance with Realm:
let package = Package(
name: "MyDynamic",
platforms: [
.iOS(.v12),
],
products: [
.library(
name: "MyDynamic",
type: .dynamic,
targets: ["MyDynamic"]),
],
dependencies: [
.package(name: "Realm", url: "https://github.com/realm/realm-swift.git", from: "10.28.1")
],
targets: [
.target(
name: "MyDynamic",
dependencies: [.product(name: "RealmSwift", package: "Realm")]),
.testTarget(
name: "MyDynamicTests",
dependencies: ["MyDynamic"]),
]
)
Next add it to your app (File > Add Packages… > Add local..) and then you can use Realm as usual inside your code because all MyDynamic dependencies are public to your app:
import RealmSwift
func load() {
let realm = try? Realm()
…
}
And “MyDynamic.framework.dSYM” will be generated and has all Realm symbolication info.