web-dev-qa-db-fra.com

Impossible de trouver le module «MyCustomFramework» pour la cible «x86_64-Apple-ios-simulator»; trouvé: arm64, armv7-Apple-ios, arm64-Apple-ios, arm, armv7

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.

Mon script de construction

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

4
FSUWX2011

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

0
Serg Fugol