• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 在 AppStore 应用程序中使用第三方框架会引入 iPhoneSimulator 位

[复制链接]
菜鸟教程小白 发表于 2022-12-13 12:55:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 Xcode 6.4 将第三方框架集成到我的 AppStore 应用程序中。第三方的框架是一个通用二进制文件,当我执行文件命令时,它具有以下内容:

DeviceTester (for architecture i386):   Mach-O dynamically linked shared library i386
DeviceTester (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
DeviceTester (for architecture armv7):  Mach-O dynamically linked shared library arm
DeviceTester (for architecture arm64):  Mach-O 64-bit dynamically linked shared library

我已尝试将此框架添加为嵌入式二进制文件。这很好用,但是当我将“ipa”上传到 AppStore 时,它​​会提示 ipa 具有不受支持的架构,即模拟器部分。当我检查 ipa 文件时,我确实看到了一个“框架”文件夹,其中包含通用框架。但是对于我包括的任何其他框架,我都没有看到这一点。 Crashlytics/Fabric 等。所以这里有一些不正确的地方。

我也尝试将它添加为框架,然后确保它处于复制阶段,但运行它会在设备上出现以下错误:

dyld: Library not loaded: @rpath/DeviceTester.framework/DeviceTester
 Referenced from: /var/mobil....

任何指针都很高兴,我今天花了一整天的时间试图弄清楚发生了什么没有运气.. 干杯。



Best Answer-推荐答案


来自 Xcode 6.1.1 & 6.2: iOS frameworks containing simulator slices can't be submitted to the App Store .您需要从 fat 框架中删除模拟器切片才能提交到 AppStore。

这是一个执行魔法的脚本。在构建步骤中添加一个运行脚本步骤,将其放在嵌入框架的步骤之后,将其设置为使用 /bin/sh 并输入以下脚本:

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

这个答案可能会解释你在问什么。 https://stackoverflow.com/a/31270427/4160199

关于ios - 在 AppStore 应用程序中使用第三方框架会引入 iPhoneSimulator 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34347810/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap