Как собрать ipa файл

Обновлено: 05.07.2024

Я написал полный код для своего iPhone-приложения, и теперь я хочу сделать файл .ipa.

спросил(а) 2011-01-17T12:21:00+03:00 10 лет, 10 месяцев назад ответил(а) 2011-01-17T12:49:00+03:00 10 лет, 10 месяцев назад

Самый простой способ, предложенный @heinklein, заключается в следующем:

    Добавьте необходимые профили и настройте параметры сборки. Установите устройство в качестве цели для запуска приложения. Создайте продукт. Перейдите в раздел Products- > yourAppName.app. Щелкните правой кнопкой мыши и покажите в Finder. Перетащите в профиль itunes и двоичный файл. Выберите приложение в iTunes и щелкните правой кнопкой мыши, чтобы отобразить в Finder. И там вы можете получить .ipa файл.
ответил(а) 2011-12-01T09:19:00+04:00 9 лет, 11 месяцев назад

Иногда может случиться так, что Xcode Archiver не сможет создать файл ipa. Тогда вот еще один вариант.

    Создайте приложение.
    После успешной сборки перейдите в папку "Продукты" в навигаторе проекта.
    Щелкните правой кнопкой мыши по нему и перейдите к "Показать в Finder".
    Скопируйте файл .app.
    Создайте новую папку в другом месте, скажем, на рабочем столе с именем "Полезная нагрузка" .
    Вставьте этот файл .app в папку "Полезная нагрузка" .
    Замените папку "Полезная нагрузка" .
    Переименуйте эту ZIP-папку с помощью .ipa

Обратная процедура используется для извлечения файла приложения из файла ipa.

Надеюсь, что этот ответ поможет.

Пошаговая процедура создания файла IPA,

1. Прежде всего, выберите ваше устройство как IOS Device в Схеме рядом с точкой останова в Xcode.

2.В меню Xcode, Product- > Очистите и создайте приложение.

3.Если сертификат инициализации недействителен, это приведет к сбою сборки с ошибкой. Если вам нужно изменить его на действительный сертификат с помощью настроек project- > build.Else, если сборка выполнена успешно, просто оставьте этот шаг.

4. Затем выберите Product- > archive, он создаст файл архива в Organiser- > архивах и откроет его для вас после завершения архива.

5. Выберите вкладку поделиться в Органайзер, а затем → . ipa и Identity- > выберите действующий сертификат распространения и нажмите далее.

6. Через минуту он попросит имя вашего файла IPA сохранить. Дайте имя и сохраните его на рабочем столе.

нужно создать .ipa файл для распространения Ad-Hoc. Клиент предоставил только сертификаты, закрытые ключи и профили подготовки, которых было достаточно для создания .ipa до Xcode 5. Но в Xcode 6.1, когда я экспортирую как Save For Ad Hoc Deployment дает

enter image description here
enter image description here

есть ли способ создания .ipa без учетных данных учетной записи разработчика?

наконец-то нашел способ создания .ipa построить с xcodebuild.

  1. Правой Кнопкой Мыши на Archive на организатора.
  2. клик Show in Finder .

enter image description here

вы можете ознакомиться .xcarchive файл в Finder.

открыть Terminal и cd to .xcarchive путь.

это сэкономит .ipa на Рабочий стол.

все еще ищет лучшее решение, не знаю, почему Apple удалила эту функцию из Xcode 6 : (

здесь 3 способы создать .ИПА без Команда И Учетная Запись Разработчика Apple.

1. Быстрый И Лучший

(работает на всех Xcode, все Mac OS, в комплекте пакет может быть использован для OTA ссылки, как Diawi)

  1. просто построить (Command+B) ваше приложение из XCode, установив правильные идентификаторы подписи кода
  2. С XCode's поиск файлов на левом внизу, поиск .app (это будет в каталоге продукта)
  3. щелкните правой кнопкой мыши на этом и выберите показать в Finder
  4. Теперь создайте каталог и назовите его как полезная нагрузка, копией .app в каталог полезной нагрузки.
  5. Архивация/Сжатие(.zip) этот каталог полезной нагрузки, переименуйте расширение файла .zip to .ИПА

2. Извлекать.ipa с организатор

(работает на всех Xcode, все Mac OS)

  1. Создать Архив
  2. перейдите к организатору
  3. получить местоположение архива по Щелкните Правой Кнопкой Мыши и выберите показать в Finder

enter image description here

    теперь щелкните правой кнопкой мыши на этом .xcarchive файл и выберите Показать Пакет Содержание

на пути Products > Applications > YourAppFile

откройте iTunes на Mac и перетащите это YourAppFile сверху путь в приложения tab. (Примечание: удалите предыдущее приложение с тем же идентификатором, если таковые имеются)

теперь щелкните правой кнопкой мыши на вашем приложении в разделе приложения вкладка iTunes и выберите показать в Finder, это ваше .файл .

3. Для разработчиков, имеющих Xcode 5.x

(Примечание: Xcode 5.x не работает на El Capitan, таким образом, вы можете архивировать с помощью любого Xcode, но вам понадобится Xcode 5.X для создания .ipa)

  1. Создать архив, используя любую версию Xcode.
  2. Закрыть Xcode.
  3. перейдите в окно органайзера Xcode 5.X и на вкладке архив выберите архив.
  4. в правом верхнем углу выберите Export , нажмите переключатель с названием Save for Ad Hoc Deployment
  5. клик Next и выберите нужные идентификаторы подписи кода для сохранения .ИПА

вы также можете создать файл IPA с помощью Xcode 6 & latest выполните следующие действия:

  1. создать файл сборки проекта Command+B
  2. перейдите в папку продуктов , и он покажет файл приложения Правой Кнопкой Мыши "показать в Finder".
  3. создайте пустую папку и назовите ее "полезной нагрузкой", затем скопируйте файл приложения в эту папку.
  4. архив полезной папку и переименовать файл zip YourApp.ipa

есть еще лучший способ, не делая все вещи командной строки.

Выберите "Сохранить Для Специального Развертывания" И Нажмите Кнопку Далее. Затем откройте раскрывающийся список "выберите команду разработчиков". В нижней части будет опция "использовать местные певческие активы". Выберите этот параметр и нажмите кнопку Выбрать.

вот. Сборка будет создана Xcode без учетной записи Apple ID.

другое решение-использовать Xcode 5.1.

С некоторого времени (например, Swift & Xcode7), когда вы должны сделать Формулу сборки более сложной-xcodebuild требует параметра exportOptionsPlist:

Theos. Разрабатываем твики для iOS устройств с jailbreak-ом

Прикрепленное изображение

В FAQ занесена информация актуальная для iOS 7.x - 14.x

- /
Корневая директория. Всё начинается от сюда.

- /bin
Сокращение "двоичный". Исполняемые файлы, которые обеспечивают основные функции на уровне пользователя.

- /boot
Хранит все необходимые файлы для загрузки. Этот каталог пуст на iOS.

- /dev
Сокращенно от “устройство”, сохраняет файлы BSD устройств. Каждый файл представляет собой блочное устройство или символ устройство.

- /sbin
Сокращение “системные файлы”. Двоичные файлы, которые обеспечивают основные системные функции (статистика и перезагрузка).

- /etc
В этом каталоге хранятся конфигурационные файлы системы и скрипты (пароли пользователя и хост).

- /lib
В этом каталоге хранятся на системном уровне lib-файлы, файлы ядра и драйверов устройств. Этот каталог пуст на iOS.

- /mnt
Сокращение от "монтировать", хранит временно смонтированные файлы систем (на iPad тут могут хранится переданные файлы по Camera connection kit). Этот каталог пуст на iOS.

- /private
Содержит два подкаталога: /private/etc и /private/var.

- /tmp
Временный каталог. Является ссылкой на /private/var/tmp.

- /usr
Каталог, содержащий большинство инструментов и программ на уровне пользователя. /usr/bin используется для других основных функций, которые не предусмотрены в /bin or /sbin. /usr/include содержит все стандартные заголовки C, и /usr/lib файлы lib.

- /var
Сокращение от "переменной", сохраняет файлы, которые часто изменяются, например файлы журнала, данные пользователя и временные файлы.
/var/mobile/ для пользователя и /var/root/ для суперпользователя, эти два подкаталога наша основная специализация.

- /Applications (Приложения)
Каталог для всех системных приложений и приложений из Cydia. Не содержит приложения из AppStore.

- /Developer (Разработчик)
При подключении в Xcode появляется этот каталог. В этой директории есть несколько файлов данных и инструменты для отладки.

- /Library (Библиотека)
Этот каталог содержит некоторые данные системы. Одна из подкатегорий - MobileSubstrate, в ней хранятся все твики (кроме приложений, который установленны из Cydia см. Applications (Приложения) )

- /System/Library (Система/Библиотека)
Один из наиболее важных каталогов на iOS, хранит множество системных компонентов.

- /System/Library/Frameworks и /System/Library/PrivateFrameworks
Эти каталоги содержат различные APIs для iOS.

- /System/Library/CoreServices/SpringBoard.app
Содержит графический пользовательский интерфейс IOS.

- /var/mobile/Media/DCIM и /Library/Wallpaper
Тут хранятся ваши фотографии и стандартные фотографии соответсвенно.

- /var/mobile/Media/Recording
Файлы из диктофона.

- /var/mobile/Containers
Каталог содержит приложения из AppStore. /var/mobile/Containers/Bundle - тут находятся файлы приложений (.app), а здесь /var/mobile/Containers/Data - файлы данных (Documents).

iOS разработка: архив, ipa и пакет приложений для похудения

Автор | Цянь Кай

640?wx_fmt=jpeg

Инженер по разработке мобильных приложений Almond, бывший инженер по встраиваемым технологиям, обращает внимание на новую тенденцию в области больших интерфейсных технологий.

Завершающим этапом разработки iOS является упаковка и распространение приложения. Здесь есть два этапа:

ArchiveДа Target Компилировать, архивировать, генерировать .xcarchive Файл.

Export: Дальнейшая обработка архивных файлов .xcarchive для создания разных каналов .ipa Пакет для распространения.

Как пакет ipa, который в конечном итоге будет установлен на мобильный телефон пользователя, важным атрибутом является его занимаемый объем. Благодаря некоторым методам мы можем эффективно уменьшить размер окончательного установочного пакета, сэкономить трафик при загрузке, улучшить взаимодействие с пользователем и помочь в продвижении продукта.

Ниже приводится краткое введение в методы составления и анализа архивных файлов и файлов ipa, а также некоторые общие идеи для похудения пакетов приложений.

Понимание архива .xcarchive

Когда мы выбираем в меню Xcode Product -> Archive После этого система компиляции проанализирует, скомпилирует и упакует текущий проект Xcode и, наконец, сгенерирует целевой объект. Target Один из Архив (архив) Мы можем Window -> Organizer -> Archives Просмотр всей кэшированной информации исторического архива на странице:

640?wx_fmt=png

Так называемое «архивирование» означает, что после компиляции исходного кода различные файлы, ресурсы и записи, сгенерированные этой компиляцией, инкапсулируются в одном месте, что удобно для управления и отслеживания.

Щелкните правой кнопкой мыши, чтобы выбрать архив и нажмите Show in Finder Вы можете видеть это в Finder .xcarchive Суффиксные файлы.

Этот файл .xcarchive содержит наше приложение и информацию о его таблице символов (информацию о символах) с другими соответствующими ресурсами, щелкните правой кнопкой мыши, чтобы выбрать Показать содержимое пакета Мы можем просмотреть конкретную файловую структуру в архиве:

640?wx_fmt=png

Смысл каждой папки:

BCSymbolMaps

Таблица сравнения, сгенерированная после того, как Xcode скрывает таблицу символов BitCode (Symbol Hiding), будет соответствовать файлу dSYM один за другим.

dSYMs

Сохраните таблицу символов (символы отладки), скомпилированную на этот раз, чтобы символизировать и анализировать стек сбоя.

Products

Сохраните пакет приложения (.app), созданный этой компиляцией.

Следует отметить, что хотя этот пакет включает в себя исполняемые файлы и другие ресурсы, необходимые для запуска приложения, он будет отличаться от версии, загруженной конечным пользователем. последующее export Операция будет дальше обрабатывать его.

SCMBlueprint

Если Xcode открывает управление версиями (Preferences-> Source Control-> Enable Source Control), папка SCMBlueprint будет хранить информацию об управлении версиями для этой компиляции, включая версию git, хранилище, ветку и т. Д.

Если вы хотите вернуться к исходной версии этой компиляции в будущем, вы можете найти необходимую информацию из этого SCMBlueprint.

SwiftSupport

Если вы находитесь в цели Build Settings Открыть ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES Стандартный файл библиотеки (.dylib), соответствующий версии Swift, используемой в этом сборнике, будет помещен в эту папку.

При публикации приложения эти стандартные библиотеки также будут скопированы в комплект ipa.

Но сейчас Свифт ABI стабилизировался, и пакетам, выпущенным Xcode 10.2 и более поздними версиями, больше не нужно приносить свои собственные библиотеки ссылок в комплект приложений iOS 12.2 и более поздних систем, что экономит определенный объем.

Понимание файлов ipa

Файл .ipa (iOS App Store Package) - это формат приложения, которое окончательно установлено на iPhone, и содержит подписи, двоичные пакеты и ресурсы, необходимые для запуска приложения.

в Organizer Неважно, каким образом export Пакет установки приложения в конечном итоге сгенерирует файл ipa.

Если мы хотим просмотреть содержимое в ipa, мы можем просто изменить имя суффикса на .zip Затем распакуйте, вы также можете использовать командную строку для распаковки:

Соблюдайте пакет после распаковки, в основном включающий следующее:

Исполняемый файл

Исполняемые файлы являются ядром ipa и занимают самый большой объем.

640?wx_fmt=png

Мы можем использовать lipo Команда для просмотра набора инструкций, поддерживаемых исполняемым файлом:

640?wx_fmt=png

Файл подписи

Информация о подписи приложения будет размещена _CodeSignature Папка.

info.plist

Файл plist, в котором хранится основная информация о приложении, также будет упакован в ipa.

entitlements

Право буквально в переводе с китайского означает «права и интересы» и «авторитет».

Когда вы Capabilities Когда вы открываете некоторые определенные разрешения в XCode, XCode автоматически генерирует .entitlements Файл, в этом файле, запишите эти полномочия в формате xml.

Общие разрешения включают в себя:

Apple Pay и PassKit

Помимо использования на этапе CodeSign, этот файл разрешений будет в конечном итоге упакован в ipa, а операционная система будет использоваться для определения того, является ли авторизация приложения законной во время выполнения.

App Plugins

Если ваше приложение реализует расширение приложения, расширенный пакет будет .appex Суффикс хранится в PlugIns В папке:

640?wx_fmt=png

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

Библиотека ссылок

Различные библиотеки ссылок, необходимые для работы приложения, будут помещены в Frameworks Папка.

Файл ресурсов

Различные файлы ресурсов, необходимые для запуска приложения, также составляют основную часть тома ipa.

Различные мультимедийные ресурсы: картинки, аудио и видео

XIB-файл: .nib .storyboardc

Различные упакованные ресурсы .bundle

Другие виды ресурсов: шрифты, базы данных, сертификаты и т. Д.

App slim

Чтобы сжать объем установочного пакета приложения, нам сначала нужно узнать, сколько места занимает установочный пакет и какие части этих пространств состоят, а затем выполнить целевую оптимизацию.

Просмотр размера установочного пакета конечного пользователя

Фактически, пакет приложения из локального архива XCode или пакет ipa из экспорта будет отличаться от версии, загруженной конечным пользователем (обычно объем будет намного больше). Поскольку Apple может перекомпилировать приложение (если загружен BitCode), оно также будет распределять различные ресурсы (например, 2x, 3x картинки) для разных моделей устройств и версий iOS и, наконец, сжимает весь .ipa в Сократите потребление данных при загрузке из App Store.

Итак, как оценить размер пакета окончательной версии загрузки пользователя? На самом деле, мы можем найти его прямо на странице iTunes Connect.

Откройте iTunes Connect и выберите Мое приложение -> деятельность -> Все версии сборки , А затем выберите версию для просмотра:

640?wx_fmt=png

найти Размер файла App Store Кнопка:

640?wx_fmt=png

Во всплывающем списке вы можете увидеть Последняя версия iOS Далее размер пакета, загружаемого разными устройствами:

640?wx_fmt=png

Два столбца в списке:

Размер загрузки: указывает на размер сжатого приложения, загруженного по беспроводной сети.

Размер установки: объем дискового пространства, которое это приложение будет занимать на пользовательских устройствах после установки.

Анализировать размер пакета приложения

Чтобы более наглядно увидеть, какие ресурсы занимают объем установочного пакета приложения, мы можем использовать некоторые файловые инструменты для анализа распакованного пакета ipa, например derlien

640?wx_fmt=png

Вы можете интуитивно увидеть соотношение различных типов файлов.

Проверьте неиспользованные ресурсы

Поскольку приложение продолжает итерацию, мы часто непреднамеренно вводим много неиспользуемых ресурсов, или некоторые ссылки на ресурсы были удалены из кода, но они не были удалены из пакета вовремя, что приводит к потере размера пакета приложения.

Чтобы найти эти ресурсы, которые больше не используются, мы можем использовать инструменты с открытым исходным кодом LSUnusedResources Чтобы проверить весь проект.

Для некоторых особых ситуаций, таких как, например, использование в коде [UIImage imageNamed:[NSString stringWithFormat:@"icon_tag_%d", index]] Способ обращения к ресурсам, LSUnusedResources также поддерживает использование регулярных выражений для нечеткого соответствия.

Сжать картинки

Файлы изображений являются наиболее распространенным ресурсом в установочном пакете и часто занимают значительную долю. Объем несжатого изображения часто довольно большой. Сжатие ресурса изображения с помощью некоторых инструментов для экономии места:

Сжатие без потерь:ImageOptim

Сжатие с потерями:tinypng

Используйте каталоги активов для хранения активов

По сравнению со способом прямого перетаскивания изображений в каталог проекта, используйте Asset Catalogs Сохранит больше объема. Каталоги активов будут хранить все изображения в высоко оптимизированном специальном формате, а также обеспечат максимальное сжатие изображений PNG.

Шаблон проекта XCode автоматически сгенерирует Assets.xcassets Файл, мы также можем создать дополнительные .xcassets Наконец, в пакете ipa эти xcassets будут сжаты в файл Assets.car, который также в определенной степени гарантирует безопасность.

640?wx_fmt=png

В дополнение к ресурсам изображений каталоги активов также могут хранить текст, данные и даже AR, ресурсы, связанные с Apple TV, что очень универсально, поэтому рекомендуется:

Ресурсы, которыми можно управлять с помощью каталогов активов, попробуйте использовать каталоги активов для управления

Анализ файлов LinkMap

Как упоминалось выше, большую часть пространства, занимаемого пакетами приложений, составляет исполняемый файл (MACH-O), сгенерированный окончательной компиляцией.Размер исполняемого файла не только связан с объемом кода, но также зависит от версии компилятора, параметров компиляции, библиотеки ссылок Целевая архитектура и другие воздействия.

Мы можем проанализировать сгенерированный LinkMap Чтобы понять компоненты файла MACH-O.

Чтобы найти соответствующий LinkMap, сначала в Xcode Target -> Build Settings -> Write Link Map File Установите ДА, а затем Target -> Build Settings -> Path to Link Map File Задайте адрес генерации LinkMap в настройках (обычно используйте адрес по умолчанию в папке сборки), после того, как архив будет успешным, мы можем найти скомпилированный LinkMap по соответствующему адресу:

640?wx_fmt=png

LinkMap записывает информацию о ссылках во время компиляции, используемую для описания структуры исполняемых файлов, включая сегменты кода __TEXT И сегмент данных __DATA Распределение:

640?wx_fmt=png

В Интернете существует множество сценариев, которые могут анализировать и анализировать LinkMap, таких как:

Инструмент командной строки

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

640?wx_fmt=png

Для некоторых модулей с большой пропорцией общие идеи оптимизации:

Найти альтернативные, зависимые от небольшого объема библиотеки или реализовать их самостоятельно

Удалите ненужные инструкции из статической библиотеки, такие как armv7s, x86 и т. Д., Оставьте только armv7 и arm64, необходимые для освобождения

Улучшить повторное использование кода

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

Использовать битовый код

Битовый код - это промежуточный язык между языком интерфейса (OC, Swift, C) и языком интерфейса (X86, машинный код ARM) в системе LLVM.

640?wx_fmt=png

Полная компиляция (из исходного кода в объектный файл .O) состоит из трех основных этапов:

Фронтенд (Фронтенд)Ответственный за компиляцию различных типов исходного кода в промежуточное представление битового кода.

Оптимизация (Optimizer)Ответственный за различные типы оптимизации битового кода, некоторое логическое эквивалентное преобразование битового кода, делающий код более эффективным и меньшим по размеру.

Backend (Backend)Также называется CodeGenerator, который отвечает за компиляцию оптимизированного битового кода в машинный код с указанием целевой архитектуры, такой как x86, arm64 и т. Д.

Мы можем сделать это в Xcode Target -> Build Settings -> Enable Bitcode Включите параметр bitcode, чтобы во время архивирования сгенерированный посередине битовый код был встроен в связанный двоичный файл (.o) для отправки в App Store.

Как упомянуто выше, в качестве промежуточного языка LLVM битовый код может напрямую компилировать конечную программу из него. После того как Apple получит загруженный нами битовый код, она будет использовать новейшие технологии и компилятор для перекомпиляции приложения для различных терминальных устройств. Перекомпилированная версия часто меньше и эффективнее нашей локальной скомпилированной версии XCode.

Если вам необходимо поддержать новую платформу или позже внедрить новые технологии компиляции, Apple не нужно полагаться на разработчика для повторной загрузки, и он напрямую использует существующий битовый код для компиляции новой версии корабля.

Стоит отметить, что: при упаковке, если в некоторых сторонних зависимых библиотеках не включен битовый код, или они включены, но не имеют битовый код в библиотеке окончательных ссылок, тогда весь проект не может быть скомпилирован с битовым кодом.

Загрузка ресурсов по требованию (ресурсы по требованию)

640?wx_fmt=png

После iOS9 Apple предоставляет On-Demand Resources Функция уменьшения размера установочного пакета. Мы можем пометить некоторые ресурсы как «загрузка по требованию» и запросить загрузку операционной системы из App Store, когда нам нужно ее использовать. Эта функция очень подходит для некоторых крупных игр, приложений с платным контентом или множества мультимедийных ресурсов, которые обычно не используются.

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

Ресурсы по требованию могут быть легко настроены в XCode.

Сначала в Target -> Resource Tags Создайте тег ресурса, тег представляет группу ресурсов, которые могут быть загружены независимо, и мы будем использовать этот тег позже в программе, чтобы запросить у операционной системы загрузить соответствующий пакет ресурсов в локальный каталог.

640?wx_fmt=png

Ресурсы, содержащиеся в разных тегах, могут повторяться. Магазин приложений будет отличаться сам по себе и не будет загружаться повторно.

Затем найдите файлы ресурсов, которые вы хотите загрузить по требованию, и назначьте ихОдин или несколькоТег создан ранее.

640?wx_fmt=png

Наконец, в коде мы можем использовать NSBundleResourceRequest:

Запрос на скачивание ресурсов по запросу

Пометить ресурс как использованный (таким образом загруженный ресурс будет очищен, сохраняя локальное пространство)

Управление процессом загрузки ресурсов, настройка приоритетов, отслеживание хода загрузки и т. Д.

Определить предупреждение о емкости диска

Следующий код представляет собой простой запрос на загрузку ресурса:

Следующая диаграмма суммирует жизненный цикл ресурса по требованию:

640?wx_fmt=png

резюме

Apple недавно сняла ограничение на загрузку мобильных устройств в 150 млн., Указав, что с ростом емкости мобильных телефонов и популярности мобильных сетей все перестают быть чувствительными к размеру установочного пакета приложения. Пока мы следуем некоторым рекомендациям, обычно это не относится к этой области. Слишком много проблем.

Читайте также: