iOS 打包报错 x86_64 i386 问题

项目中既使用了 cocoapods 又使用了 Carthage,我使用 Carthage 集成了 box/box-ios-sdk 和 AzureAD/microsoft-authentication-library-for-objc,打包成功后,上传到 App Store 报错如下信息:

报错信息

网上查询了下资源,感觉大概是因为两个第三方的framworks 包含非 64 位架构,而现在 apple 要求新上传的包都要是64位了。

解决方法如下,在 Xcode 中的 Run Script 下添加脚步:

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
    FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

    EXTRACTED_ARCHS=()

    for ARCH in $ARCHS
    do
        echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
        lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
        EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
    done

    echo "Merging extracted architectures: ${ARCHS}"
    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
    rm "${EXTRACTED_ARCHS[@]}"

    echo "Replacing original executable with thinned version"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

done
Run Script setting

重新打包,问题解决。

附:

iOS app需要在许多不同的CPU架构下运行:

arm7: 在最老的支持iOS7的设备上使用
arm7s: 在iPhone5和5C上使用
arm64: 运行于iPhone5S的64位 ARM 处理器 上
i386: 32位模拟器上使用
x86_64: 64为模拟器上使用
每个CPU架构都需要不同的二进制数据,当你编译一个应用时,无论你目前正在使用那种架构,Xcode都会正确地依照对应的架构编译。例如,如果你想跑在虚拟机上,Xcode只会编译i386版本(或者是64位机的x86_64版本)

Apple will stop supporting Apps which have only 32-bit architecture. In other words, apps need to have 64-bit slices. Our framework actually has:
- arm7 32 bit - for iPhone 4 and 4s
- arm7s 32 bit - for iPhone 5
- arm64 64 bit - for iPhone 5S and newer
- x86 - for simulator
- x86_64 for the 64-bit simulator.

参考:

  1. http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/
  2. 打包framework教程
  3. https://spin.atomicobject.com/2011/12/13/building-a-universal-framework-for-ios/
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,684评论 1 180
  • 藏历马年,冈仁波齐百年一遇的本命年,藏民所信仰的教义使他们走上朝圣之路。普拉村村民尼玛扎堆在父亲去世后,决定完成父...
    海泰方圆阅读 655评论 0 3
  • 有时候,以为自己还年轻,也很阳光,有的是希望,总是叮嘱自己:一直都这样,都坚强了快半个世纪了,习惯了都一样! 那些...
    思念比西湖瘦阅读 279评论 0 1
  • 脱掉嘈杂的外套 穿上一件安静的新衣 我喜欢凝望 静静的凝望 看着天空 小鸟和飞机掠过树顶 风把叶子扫进泥土里 黄叶...
    兮阳阅读 344评论 0 2
  • 可能很多人看到这个题目会想到的是因果法则因果报应。今天我们分享的不是这个,我们今天不讲业力法则。今天我们重点分享的...
    桃夭的自在人生阅读 834评论 0 2