gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:10:40 29 4
gpt4 key购买 nike

我正在使用 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 文件时,我确实看到了一个“Frameworks”文件夹,其中包含通用框架。但是对于我包括的任何其他框架,我都没有看到这一点。 Crashlytics/Fabric 等。所以这里有些地方不正确。

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

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

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

最佳答案

来自 Xcode 6.1.1 & 6.2: iOS frameworks containing simulator slices can't be submitted to the App Store .您需要从胖框架中删除模拟器切片才能提交到 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com