美文网首页
2021-11-17 xcode12.3 &xcode13.1

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

作者: 我是小胡胡分胡 | 来源:发表于2021-11-17 17:55 被阅读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

    相关文章

      网友评论

          本文标题:2021-11-17 xcode12.3 &xcode13.1

          本文链接:https://www.haomeiwen.com/subject/ysaltrtx.html