[Feature] 默认标题 Swift Package Manager
Closed this issue · 4 comments
Can we get Swift Package Manager support or xcframework
?
I do not use CocoaPods and tried the manual installation, but it will not compile on an M1 Mac with the error:
Building for iOS, but the linked and embedded framework 'BURelyAdSDK.framework' was built for iOS + iOS Simulator.
Using SPM or providing .xcframework
would fix this issue.
need to
Come on, we really need xcframework
as we cannot use it without.
Indeed SPM and xcframework
support is essential.
Up to recently, it was possible to forge a xcframework
manually from the Bytedance-UnionAD FAT frameworks, using either a tool such as xcframework-maker, or a mix of lipo
/ xcodebuild -create-xcframework
commands as in the following example :
# (inspired from https://gist.github.com/KaQuMiQ/5c02a27c736188e75d750c630cb9eb90)
# assuming that the fat framework `BUAdSDK.framework` containing code for arch `i386`, `x86_64`,
# `armv7` and `arm64` lies in "."
mkdir ./arm64
mkdir ./x86_64
cp -R BUAdSDK.framework arm64/
xcrun lipo -remove i386 -remove armv7 -remove x86_64 ./arm64/BUAdSDK.framework/BUAdSDK -o ./arm64/BUAdSDK.framework/BUAdSDK
cp -R BUAdSDK.framework x86_64/
xcrun lipo -remove i386 -remove armv7 -remove arm64 ./x86_64/BUAdSDK.framework/BUAdSDK -o ./x86_64/BUAdSDK.framework/BUAdSDK
xcodebuild -create-xcframework -framework ./arm64/BUAdSDK.framework -framework ./x86_64/BUAdSDK.framework -output BUAdSDK.xcframework
rm -rf ./arm64
rm -rf ./x86_64
(🔝 the above might be of interest for you @ddaddy and @charleyzhu)
Unfortunately, from my tests, this trick:
- works with version 4.0.0.5
- works with version 4.1.0.2
- fails with version 4.2.0.2
- fails with version 4.2.0.4
- fails with version 4.2.5.6
- fails with version 4.3.0.5
Since version 4.2.0.2
, xcodebuild -create-xcframework
now fails with this kind of error:
error: unable to find any architecture information in the binary at 'arm64/BUAdSDK.framework/BUAdSDK': Unknown header: 0xb17c0de
This issue is hardly documented ; from the comments on this Audience network issue, it seems it may come from LLVM LTO compilation options... Maybe you recently added a -flto
flag to your compilations options ? If so, could you disable them (that's what Facebook finally did) ?
Of course, the best solution would be to provide natively full xcframework
support, as most other Ad Networks already do (possibly including support for M1 simulator build, as expected by this other issue).
Thank you !