Универсальный фреймворк с использованием Xcode 8.3?

Я пытаюсь построить универсальные быстрые рамки. Когда я закончил разработку фреймворка, следуя нескольким учебникам, таким как

https://medium.com/swiftindia/build-a-custom-universal-framework-on-ios-swift-549c084de7c8

Создание универсального фреймворка с использованием Xcode 8?

Также с помощью Aggregate target, но не удается запустить в симуляторе.

Примечание: я разработал с использованием Swift 3, Xcode Version 8.3

Я пытался с учебниками сценарии тоже, но не удалось.

Также моим фреймворком Xcode является расширение xcodeproj.

Мой вопрос: как разработать универсальный фреймворк Swift, который будет выпущен для клиента, где он сможет тестировать через симулятор и на реальном устройстве?

Заранее спасибо.

Изменить: я следовал этой инструкции ответа и успешно построить быстрый дизайн.

/questions/5024685/xcode-6-ios-sozdanie-cocoa-touch-framework-problemyi-s-arhitekturoj/5024703#5024703

1 ответ

Решение

Вы также можете использовать следующий скрипт. Поддержка Swift и Simulator.

  1. просто добавьте содержимое в Настройки проекта -> Фаза сборки как новая фаза запуска сценария
  2. Построить проект
  3. Папка откроется, показывая ваши ZIP-рамки

https://gist.github.com/PaulEhrhardt/6d2be145c5d1b51c216914e7f032013e

#!/bin/sh

# iOS universal library build script supporting swift modules inclusive simulator slices

# prevention from running xcodebuild in a recusive way
if [ "true" == ${ALREADYINVOKED:-false} ]; then
    echo "RECURSION: Detected, stopping"
else
    export ALREADYINVOKED="true"

# output directory for universal framework
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}/iOS"

# build both device and simulator versions for iOS
xcodebuild -project "${PROJECT_NAME}.xcodeproj" -scheme "${PROJECT_NAME}"  -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 8' ONLY_ACTIVE_ARCH=NO clean build
xcodebuild -project "${PROJECT_NAME}.xcodeproj" -scheme "${PROJECT_NAME}" -sdk iphoneos ONLY_ACTIVE_ARCH=NO clean build

# copy the framework structure from iphoneos build to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/iOS"

# copy existing Swift modules from iphonesimulator build to the universal framework directory
SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/"
if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then
    cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"
fi

# create universal binary file using lipo and place the combined executable in the universal framework directory
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"

# intermediate step for copying the framework to the project's directory
mkdir -p "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
cp -R "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework" "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"

# create a zip file and move it to the project's directory
cd "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
zip -r "${PROJECT_NAME}.framework.zip" "${PROJECT_NAME}.framework"
mkdir -p "${PROJECT_DIR}/universal-framework"
mv "${PROJECT_NAME}.framework.zip" "${PROJECT_DIR}/universal-framework"

# optional: show the project's directory in Finder
open "${PROJECT_DIR}/universal-framework"
fi
Другие вопросы по тегам