J'ai un cadre personnalisé que j'archive pour l'utiliser dans un autre projet. Après la mise à jour vers Xcode11, j'obtiens l'erreur suivante dans mon projet en utilisant le framework.
Impossible de trouver le module "MyCustomFramework" pour la cible "x86_64-Apple-ios-simulator"; trouvé: arm64, armv7-Apple-ios, arm64-Apple-ios, arm, armv7
Mon framework fonctionne bien sur Xcode10 mais pas sur 11. Ma cible est définie sur NO pour construire des architectures actives uniquement. J'ai les éléments suivants pour les architectures valides; arm64e, armv7s, armv7, arm64.
exec > ${PROJECT_DIR}/${PROJECT_NAME}_archive.log 2>&1
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
if [ "true" == ${ALREADYINVOKED:-false} ]
then
echo "RECURSION: Detected, stopping"
else
export ALREADYINVOKED="true"
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
echo "Building for iPhoneSimulator"
xcodebuild -workspace "${WORKSPACE_PATH}" -scheme "${TARGET_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 11 Pro Max' ONLY_ACTIVE_Arch=NO ARCHS='i386 x86_64' BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" ENABLE_BITCODE=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE=bitcode clean build
# Step 1. Copy the framework structure (from iphoneos build) to the universal folder
echo "Copying to output folder"
cp -R "${ARCHIVE_PRODUCTS_PATH}${INSTALL_PATH}" "${UNIVERSAL_OUTPUTFOLDER}/"
# Step 2. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory
SIMULATOR_Swift_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/Modules/${TARGET_NAME}.swiftmodule/."
if [ -d "${SIMULATOR_Swift_MODULES_DIR}" ]; then
cp -R "${SIMULATOR_Swift_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${TARGET_NAME}.framework/Modules/${TARGET_NAME}.swiftmodule"
fi
# Step 3. Create universal binary file using lipo and place the combined executable in the copied framework directory
echo "Combining executables"
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${EXECUTABLE_PATH}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${EXECUTABLE_PATH}" "${ARCHIVE_PRODUCTS_PATH}${INSTALL_PATH}/${EXECUTABLE_PATH}"
# Step 4. Create universal binaries for embedded frameworks
#for SUB_FRAMEWORK in $( ls "${UNIVERSAL_OUTPUTFOLDER}/${TARGET_NAME}.framework/Frameworks" ); do
#BINARY_NAME="${SUB_FRAMEWORK%.*}"
#lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${TARGET_NAME}.framework/Frameworks/${SUB_FRAMEWORK}/${BINARY_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${SUB_FRAMEWORK}/${BINARY_NAME}" "${ARCHIVE_PRODUCTS_PATH}${INSTALL_PATH}/${TARGET_NAME}.framework/Frameworks/${SUB_FRAMEWORK}/${BINARY_NAME}"
#done
# Step 5. Convenience step to copy the framework to the project's directory
ARCHIVE_PATH="${PROJECT_DIR}/Products"
rm -rf "${ARCHIVE_PATH}"
mkdir "${ARCHIVE_PATH}"
echo "Copying to project dir"
yes | cp -Rf "${UNIVERSAL_OUTPUTFOLDER}/${FULL_PRODUCT_NAME}" "${ARCHIVE_PATH}"
open "${ARCHIVE_PATH}"
fi
Swift 5.0-5.1, Xcode 11
Ouvrez Xcode, <votre projet>, Paramètres de construction, Construire l'architecture active uniquement et passez à <NON> pour le débogage et la publication. Architectures définies/quittées dans l'architecture standard - $ (ARCHS_STANDART), l'étape suivante est importante:
Architecture valide: armv7, armv7s, amr64, amr64e, AJOUTER ici x86_64 et si vous avez besoin d'ajouter i386 pour le débogage et la publication. (Chaîne: armv7, armv7s, amr64, amr64e, x86_64)
Choisissez n'importe quel simulateur dans votre liste de simulateurs et CONSTRUISEZ-LE. TERMINÉ.
J'espère que cela fonctionne pour vous.
Description de l'architecture:
armv64: iPhoneX, iPhone 5s-8, iPad Air - iPad Pro
armv7: iPhone3Gs-5c, iPad WIFI (4e génération)
armv6: iPhone - iPhone3G
-le dessus si pour de vrais appareils
i386: simulateur 32 bits
x86_64: simulateur 64 bits