2021-11-17 xcode12.3 &xcode13.1

2021-11-17  本文已影响0人  我是小胡胡分胡

dynamically linked shared library

xcode12.3 dynamically linked shared library 合并 动态库 一度失败.解决方法,是用

xcodebuild -create-xcframework 

替代

lipo -create

然而xcode13.1 Version 13.1 (13A1030d) 又没问题了

# 设置 framework 名称
FMK_NAME="xxx"

# 合并后的 framework 将在此文件夹中生成
LIBDIR=${SRCROOT}/Products/
INSTALL_DIR=${LIBDIR}${FMK_NAME}.framework

# framework 生成后,移除 build 文件夹
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Debug-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Debug-iphonesimulator/${FMK_NAME}.framework

# 编译模拟器和真机的 framework
xcodebuild -configuration "Debug" -target "${FMK_NAME}" -sdk iphoneos build
xcodebuild -configuration "Debug" -target "${FMK_NAME}" -sdk iphonesimulator build

# 清理旧文件 创建新文件
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/"

# 合并真机和模拟器的 framework
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

# 移除 biuld 文件夹
#rm -r "${WRK_DIR}"

# 打开 products 文件夹
open "${LIBDIR}"


2种方式编译framework:

xcodebuild -configuration 
xcrun, clang, -dynamiclib,

可以确认的当时flutter编译framework也是使用的lipo create 合并,合并没问题:


[
xcrun, clang, 
-x, c, 
-arch, armv7, 
-arch, arm64, 
/var/folders/cs/wtst0jh91yl2ggxdp9zth5gc0000gn/T/flutter_tools_stub_source.Hjw6dY/debug_app.cc, 
-dynamiclib,
 -fembed-bitcode-marker, 
 -Xlinker, -rpath, 
 -Xlinker,  @executable_path/Frameworks, 
 -Xlinker, -rpath, 
 -Xlinker, @loader_path/Frameworks, 
 -install_name, @rpath/App.framework/App, 
 -isysroot, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk, 
 -o, /xxx/debug/arm64/App.framework/App
 ]




[
xcrun, clang, 
-x, c,
-arch, x86_64, 
/var/folders/cs/wtst0jh91yl2ggxdp9zth5gc0000gn/T/flutter_tools_stub_source.JDCQn7/debug_app.cc,
-dynamiclib, 
-fembed-bitcode-marker, 
-Xlinker, -rpath, 
-Xlinker, @executable_path/Frameworks, 
-Xlinker, -rpath, 
-Xlinker, @loader_path/Frameworks, 
-install_name, @rpath/App.framework/App, 
-isysroot, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.0.sdk, 
-o, /xxx/debug/x86/App.framework/App]

lipo 
-create /xxx/debug/arm64/App.framework/App /xxx/debug/x86/App.framework/App 
-output /xxx/debug/product/App.framework/App


难道当时失败是有什么问题?

动态库。 在app包下面Framework拷贝不进去。

通过

s.vendored_frameworks = 'App.framework'

的方式。 动态库拷贝不到app包下面去:

image.png

xcode13 不支持vendored_frameworks 了吗?

s.vendored_frameworks

上一篇下一篇

猜你喜欢

热点阅读