Как мне распространять iOS SDK в виде статической библиотеки? - PullRequest
4 голосов
/ 03 июня 2011

Сейчас я собираю статическую библиотеку для iOS, назовем ее libMySDK.a.Я копирую любые заголовочные файлы, которые понадобятся конечному пользователю, и помещаю их в папку с libMySDK.a.Эту папку можно перетащить в новый проект XCode, и все будет работать как положено, если я установлю флаг компоновщика -all_load в настройках сборки нового проекта (в разделе «Другие флаги компоновщика»).

Я никогда не распространялстатическая библиотека - это папка с несколькими заголовочными файлами и файлом .a, который вы ожидаете получить, если хотите использовать MySDK?

1 Ответ

2 голосов
/ 03 июня 2011

Openfeint предоставляет свою структуру в качестве статической структуры. Мы можем использовать фреймворк в качестве фреймворка из iOS SDK.

Пожалуйста, посмотрите на github - Eskipol / OpenFeint-iOS-Framework . Откройте проект OpenFeint и погрузитесь в цель «OpenFeint-iOS». Он имеет фазы «Сборка статической библиотеки», «Сборка универсальной библиотеки», «Копирование заголовков» и «Копирование ресурсов». На этих этапах есть сценарий оболочки для создания статической структуры. Это поможет вам распространять вашу статическую библиотеку.

РЕДАКТИРОВАНИЕ:

Необходимым является сценарий оболочки для фазы 'Build universal lib'. Правильно создайте каталог фреймворка (Versions / A / Headers and Resources), создайте универсальный двоичный файл из скомпилированных статических библиотек, скопируйте заголовки и универсальный двоичный файл и правильно создайте символические ссылки.

# Create framework directory structure.
rm -rf "${FRAMEWORK}" &>/dev/null
mkdir -p "${UNIVERSAL_LIBRARY_DIR}"
mkdir -p "${FRAMEWORK}/Versions/A/Headers"
mkdir -p "${FRAMEWORK}/Versions/A/Resources"

# Generate universal binary from desktop, device, and simulator builds.
lipo "${SIMULATOR_LIBRARY_PATH}" "${DEVICE_LIBRARY_PATH}" -create -output "${UNIVERSAL_LIBRARY_PATH}"

# Move files to appropriate locations in framework paths.
cp "${UNIVERSAL_LIBRARY_PATH}" "${FRAMEWORK}/Versions/A"
cd "${FRAMEWORK}"
ln -sf "A" "Versions/Current"
ln -sf "Versions/Current/Headers" "Headers"
ln -sf "Versions/Current/Resources" "Resources"
ln -sf "Versions/Current/${PRODUCT_NAME}" "${PRODUCT_NAME}"
...