Creación de iOS Framework para dispositivos y configuración universal con habilitación de bitcodes y deshabilitación de códigos de bits desde la terminal de línea de comandos
objective-c xcode (2)
#!/bin/sh
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
# Step 1. Build Device and Simulator versions
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO /
-configuration ${CONFIGURATION} -sdk iphoneos /
BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} /
-sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" /
BUILD_ROOT="${BUILD_ROOT}" clean build
# Step 2. Copy the framework structure (from iphoneos build) to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" /
"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" /
"${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
# Step 5. Convenience step to copy the framework to the project''s directory
cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}"
# Step 6. Convenience step to open the project''s directory in Finder
open "${PROJECT_DIR}"
Tengo el script de shell anterior para crear el marco para el dispositivo y el universal de las opciones de compilación de Xcode.
¿Es posible crear / generar un marco de iOS desde el terminal de comando con el script de shell anterior con la siguiente configuración?
- 1) Crear marco para deshabilitar el código de bits del dispositivo
- 2) Crear marco para habilitar el bitcode del dispositivo
- 3) Crear marco para deshabilitar el código de bits universal
- 4) Crear el marco para habilitar el código de bits universal
Por favor, hágamelo saber los pasos para crear / generar iOS Framework desde el terminal de comando. Debe apreciar por la mejor explicación
Solo agrega el argumento a tu xcodebuild
ENABLE_BITCODE=NO
para deshabilitar el código de bits
ENABLE_BITCODE=YES
para habilitar el código de bits
Por ejemplo
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO
En el script de shell que publicó, reemplace el código en # Step 1. Build Device and Simulator versions
la siguiente manera.
1) Crear marco para deshabilitar el código de bits del dispositivo:
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO /
-configuration ${CONFIGURATION} -sdk iphoneos /
BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} /
-sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" /
BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES
2) Crear marco para habilitar el bitcode del dispositivo
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO /
-configuration ${CONFIGURATION} -sdk iphoneos /
BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} /
-sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" /
BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES
3) Crear marco para deshabilitar el código de bits universal
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO /
-configuration ${CONFIGURATION} -sdk iphoneos /
BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} /
-sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" /
BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO
4) Crear el marco para habilitar el código de bits universal
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO /
-configuration ${CONFIGURATION} -sdk iphoneos /
BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} /
-sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" /
BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES
EDITAR:
Para construir el marco, puede hacer cualquiera de los siguientes:
1. Reemplazando el código para cada configuración, vaya al terminal y ejecute el script del shell navegando a la carpeta que contiene el script del shell y ejecutando ./<nameOfTheShellScriptFile>.sh
. Pero asegúrese de tener la configuración de compilación disponible allí. Eso creará el marco con la configuración adecuada en el directorio ${BUILD_DIR}/${CONFIGURATION}-universal
.
2. Agregue un script de ejecución en Xcode. Abra su proyecto en Xcode, haga clic en el menú desplegable de esquemas (al lado del botón Detener) y elija su esquema de marco. Abra el menú desplegable de nuevo y haga clic en "Editar esquema ...". Ves 6 acciones a la izquierda. Eliges qué acción tiene más sentido para agregar el guión (¿quieres crear este marco universal en cada acción Ejecutar o solo cuando archivas?). Despliegue esa acción y haga clic en Post-actions. Haga clic en el botón + para agregar una nueva acción y haga clic en "Nueva ejecución de acción de script". Establezca "Proporcionar configuración de compilación desde" a su objetivo de infraestructura para obtener la configuración de compilación adecuada. Pegue el script en el área de texto y haga clic en cerrar. Ahora, cada vez que lleva a cabo la acción, coloca el guión, el guión ejecuta y crea el marco nuevamente para las arquitecturas de dispositivos y simuladores y coloca el marco universal en el directorio de proyectos. Lleva tiempo completarlo, especialmente si su proyecto es grande, así que espere pacientemente hasta que se abra el buscador para revelar su directorio de proyecto que contiene el marco. Ahora puede cambiar el código en el script cada vez que desee una configuración diferente (bitcode habilitado o deshabilitado), o agregar diferentes esquemas para diferentes configuraciones y seguir este paso completo para cada uno de los esquemas con el script apropiado.