#!/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 copyd 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}"
J'ai ci-dessus script shell pour créer un cadre pour périphérique et universel à partir des options de construction Xcode.
Est-il possible de créer / générer un framework iOS à partir du terminal de command avec le script shell ci-dessus avec la configuration ci-dessous ???
S'il vous plaît laissez-moi savoir les étapes pour créer / générer un cadre iOS à partir du terminal de command. Doit apprécier pour la meilleure explication
Ajoutez simplement l'argument à votre xcodebuild
ENABLE_BITCODE=NO
pour la désactivation du bitcode
ENABLE_BITCODE=YES
pour l'activation du bitcode
Par exemple
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
Dans le script shell que vous avez posté, remplacez le code sous # Step 1. Build Device and Simulator versions
avec les éléments suivants de manière appropriée.
1) Créer un cadre pour la désactivation du bitcode de l'appareil:
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) Créer un cadre pour l'activation du bitcode de l'appareil
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) Créer un cadre pour la désactivation universelle de bitcode
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) Création d'un cadre pour l'activation universelle des codes binarys
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
MODIFIER:
Pour créer le framework, vous pouvez effectuer l'une des opérations suivantes:
1. En remplaçant le code pour chaque config, allez au terminal et exécutez le script shell en naviguant vers le dossier contenant le script shell et en exécutant ./<nameOfTheShellScriptFile>.sh
. Mais assurez-vous que vous avez les parameters de construction disponibles là-bas. Cela créera le framework avec la configuration appropriée dans le directory ${BUILD_DIR}/${CONFIGURATION}-universal
.
2. Ajoutez un script d'exécution dans le Xcode. Ouvrez votre projet dans Xcode, click la list déroulante des schémas (à côté du button Arrêter) et choisissez votre schéma d'infrastructure. Ouvrez à nouveau la list déroulante et click "Modifier le schéma …". Vous voyez 6 actions à gauche. Vous choisissez quelle action a le plus de sens d'append le script (voulez-vous créer ce cadre universel à chaque exécution ou seulement lorsque vous archivez?). Faites glisser cette action et click Post-actions. Cliquez sur le button + pour append une nouvelle action et click "New Run Script Action". Définissez "Fournir les parameters de génération" à votre cible de structure pour get les parameters de construction appropriés. Collez le script dans la textbox et click Fermer. Maintenant, à chaque fois que vous exécutez l'action dans laquelle vous avez placé le script, le script exécute à nouveau le framework pour les architectures de périphérique et de simulateur et place le framework universel dans le directory de votre projet. Cela prend un certain time, surtout si votre projet est important, alors attendez patiemment jusqu'à ce que le chercheur s'ouvre pour révéler votre directory de projet contenant le framework. Maintenant, vous pouvez soit changer le code dans le script chaque fois que vous voulez une config différente (bitcode activé ou désactivé), soit append des schémas différents pour différentes config et suivre toute cette étape pour chacun des schémas avec le script approprié.