ios objective-c xcode bitcode ios-universal-framework

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.