Estoy intentando cargar en TestFlight una compilación de proyecto para arm64, armv7 y armv7s. Está utilizando un marco de otro proyecto. Pero el frameowork parece estar construido solo para arm64 y no para arm64 (file was built for arm64 which is not the architecture being linked (armv7)).

La pregunta es ¿cómo hago el marco que contiene todas las arquitecturas? Quiero mantener los proyectos separados. Y no me interesan los simuladores. Quiero asegurarme de que esté construido para su lanzamiento.

Este es el objetivo del marco:

enter image description here

EDITAR: Mi proyecto se basa en Córdoba. Por lo tanto, está utilizando un complemento que utiliza un marco prediseñado. Hay instrucciones para construir un marco pesado, que contiene simuladores y dispositivos, y luego concatenarlo con lipo. Lo que necesito es la arquitectura del dispositivo que tampoco tengo. ¿Eso realmente significa que necesito tres dispositivos de arm64, armv7 y armv7s para poder concatenarlos por completo?

11
huggie 22 feb. 2018 a las 12:29

2 respuestas

La mejor respuesta

Apple ha descontinuado el soporte para 32 bits en iOS 11. No puede ejecutar aplicaciones de 32 bits en iOS 11 ni ejecutar iOS 11 en procesadores de 32 bits. Por lo tanto, debe configurar su Destino de implementación en una versión de iOS anterior a iOS 11 para su marco.

12
Sarp Başaraner 19 nov. 2018 a las 15:53

Puede intentar crear un objetivo agregado y escribir un script que sea compatible con toda la plataforma. Este es un script de muestra de uno de mis proyectos.

unset TOOLCHAINS #Xcode 7.3 BUG FIX  http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode

# define output folder environment variable

C_PROJECT_NAME="<<YOUR_FRAMEWORK_NAME>>"

UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# Step 1. Build Device and Simulator versions
xcodebuild -target <<YOUR_FRAMEWORK_NAME>> ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

xcodebuild -target <<YOUR_FRAMEWORK_NAME>> ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 -arch x86_64 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

rm -rf ./${C_PROJECT_NAME}.framework
cp -R ${BUILD_DIR}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${C_PROJECT_NAME}.framework ./

# Step 2. Create universal binary file using lipo

lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}"

mv ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME} ./${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}
0
Shohrab 5 mar. 2018 a las 21:35