当前位置: 首页 > 知识库问答 >
问题:

提交到应用商店问题:不支持的体系结构x86

傅安宁
2023-03-14

所以我尝试使用Shopify API。当我存档应用程序和验证它,然后没有问题,但当我提交到应用程序商店,然后它给我以下问题。

共有3个答案

袁高峰
2023-03-14

如果您使用的是Carthage,那么您可能会遇到这个问题,因为该项目是:

  • 缺少 生成阶段。/li> 框架(不完整的列表)。>

此操作将框架筛选到一个有效体系结构(代码)列表。

从迦太基大楼了解iOS步骤:

在“应用程序目标构建阶段设置”选项卡上,单击+图标,然后选择“新建运行脚本阶段”。创建一个运行脚本,在其中指定shell(例如:bin/sh),将以下内容添加到shell下面的脚本区域:

并在输入文件下添加要使用的框架的路径,例如:

该脚本围绕通用二进制文件触发的App Store提交bug工作,并确保在存档时复制必要的与位码相关的文件和DSYM。

闾丘树
2023-03-14

null

echo "Target architectures: $ARCHS"

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

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"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")

FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp"

# remove simulator's archs if location is not simulator's directory
case "${TARGET_BUILD_DIR}" in
*"iphonesimulator")
    echo "No need to remove archs"
    ;;
*)
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "i386 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "x86_64 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    ;;
esac

echo "Completed for executable $FRAMEWORK_EXECUTABLE_PATH"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")

done

如果运行的不是模拟器(这意味着目标文件夹不像“debug-iphonesimulator”),此脚本只是从fat二进制文件中删除i386和x86_64片(如果它们存在)。

对不起,我不熟悉shell脚本,所以可能有人可以用更优雅的方式编写它。但它有效)

爱繁
2023-03-14

问题是Buy框架包含模拟器(x86_64)和实际设备(ARM)的构建。

当然,您不允许向App Store提交不受支持的体系结构的二进制文件,因此解决方案是在提交之前,从最终的二进制文件中“手动”删除不需要的体系结构。

DanielKennett提出了一个很好的解决方案,并提供了以下脚本以添加到构建阶段:

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

我用了它,效果很好。

null

 类似资料:
  • Cocos Creator 内置了插件商店,可供用户浏览、下载和自动安装第三方插件。插件商店的使用方法可见 安装与分享。要分享或贩卖编辑器扩展包,需要将插件提交到插件商店,下面是提交流程。 打包插件 假设开发完成的插件目录结构如下: foobar |--panel | |--index.js |--package.json |--main.js 插件开发者需

  • 在 Windows 10 中,一些不错的旧 win32 程序迎来了一个新朋友:通用 Windows 平台。 新的 .appx 格式不仅启用了许多新的强大的 API,如 Cortana 或推送通知,而且通过 Windows 应用商店,也同时简化了安装和更新。 Microsoft 开发了一个工具,将 Electron 应用程序编译为 .appx 软件包,使开发人员能够使用新应用程序模型中的一些好东西。

  • 我已经推了几个版本的应用在过去的几个月。然而,现在我有一个关于架构的错误,而我没有改变任何东西。 我的项目:体系结构:armv7、ARM64-$(ARCHS_STANDARD)有效的体系结构:arm64、armv7、armv7s 我的目标:体系结构:armv7,ARM64-$(ARCHS_STANDARD)有效体系结构:arm64,armv7 子项目目标:体系结构:armv7、ARM64-$(AR

  • 问题内容: 我在我正在研究的项目中使用reactjs和助焊剂架构。我对如何将嵌套数据正确地拆分到存储中以及为什么应该将数据拆分到多个存储中感到困惑。 为了说明问题,我将使用以下示例: 想象一下您有项目的Todo应用程序。每个项目都有任务,每个任务都可以有注释。 该应用程序使用REST api检索数据,返回以下响应: 虚拟应用程序的界面在左侧显示一个项目列表,当您选择一个项目时,该项目变为活动状态,

  • 然后,我遇到了这篇文章/帖子旅使用MVC替代方案的经验,它描述了我目前正在做的事情。 在实际尝试在一个新的iOS项目上实现VIPER之后,我遇到了一些问题: 演示者可以在视图中查询信息吗?还是“信息传递”应该总是从视图开始?例如,如果视图触发了演示者中的某个操作,但根据通过该操作传递的参数,演示者可能需要更多信息。我的意思是:用户点击“donewithstate:”,如果state==“somet

  • 在App商店上进行更新 只剩下这个最后的主题了。【译者:原话很长,我懒得一个字一个字的去翻译了,翻译的话比我罗嗦的这段加上前面那句还长】 当应用活在应用商店之中的时候,会需要是不是的对他更新 — 添加一些新功能或者修改一些上线后发现的bug。 幸运的是更新应用非常简单。只需要修改config.xml文件提升版本号: <widget id="com.yourname.yourproject" ver

  • Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。 Cep

  • 当用户导航到Likes或Comments屏幕时,他/她将分别看到用户指定帖子的Likes或Comments列表。 用这种结构能正确处理这两种情况吗?或者将评论和喜欢集合放在/posts/{userId}/userposts/{postId}/(也可以作为子集合)中会更好 Firestore可以同时执行“多个集合查询”吗?以便在我的“交互”屏幕中,我可以从按日期排序的不同集合中获取所需的数据 我很感