Xcode 10 Неправильная двоичная архитектура? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть iOSapp, который поддерживает iOS 11/12.Я отправляю сборки в App Store Connect для TestFlight без проблем с использованием Xcode 10. Сегодня я отправил сборки с использованием Xcode 10 и получил следующее электронное письмо:

Уважаемый разработчик, мы определили одинили другие проблемы с недавней доставкой для вашего приложения "DevelopAP".Пожалуйста, исправьте следующие проблемы, затем загрузите снова.Неверная двоичная архитектура - в iOS 3.0 появилась поддержка нескольких двоичных архитектур.Если ваш двоичный файл создан для нескольких архитектур, ваш Info.plist должен иметь ключ MinimumOSVersion со значением не менее 3,0.Кроме того, если ваше приложение предназначено для поддержки более ранних моделей iPhone и iPod touch, оно должно содержать как минимум двоичный файл armv6;«тонкие» двоичные файлы, предназначенные только для armv7, не будут приняты, если только требуемая возможность устройства armv7 также не присутствует в ключе Info.plist UIRequiredDeviceCapabilities или ключ MinimumOSVersion имеет значение 4,3 или выше.В частности, мы обнаружили следующие неподдерживаемые архитектуры в вашем двоичном файле:

x86_64.Цель развертывания - 10.0 Swift Language version - 3.3 Целевая версия развертывания модулей - 10.0

Я пытался использовать armv6 в info.plist.И попробуйте встроить в Xcode 9.4.1.И попробуйте использовать начальные сценарии, но эта проблема все еще есть в этом проекте.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Они нашли архитектуру "x86_64".Это 64-битный процессор Intel.Можете ли вы показать мне любой iPhone с процессором Intel?Их не существуетТак что выясните, где 64-битный код Intel проник в ваш проект и удалите его.

Попытка добавить armv6 серьезно ошибочна.armv6 - это то, что вы найдете на iPhone 3GS.Ваше приложение должно поддерживать aarch64 или arm64 (это необходимо) и armv7, если вы заинтересованы в поддержке 32-битных устройств, это будет iPhone 5 / 5c или старше.

0 голосов
/ 14 октября 2018

Добавьте этот скрипт запуска в ваш проект

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    
...