Я только что сделал один вручную, так что это определенно возможно, но утомительно больше, чем один или два. Со временем кто-то может написать скрипт для этого.
Пакеты
.xcarchive
- это просто каталоги, такие как пакеты .apparchive
перед ними. Более новый формат переместил некоторые вещи и упростил верхний уровень Info.plist
.
Xcode 3 хранит архивы в ~/Library/Application Support/Developer/Shared/Archived Applications
. Отдельные архивные пакеты называются GUID. Внутри каждого находится ArchiveInfo.plist
, фактический .app
и .dSYM
.
Xcode 4 хранит архивы в ~/Library/Developer/Xcode/Archives
, разделенные на папки, названные в честь даты создания архива. Внутри каждой папки с датами находится пакет .xcarchive
, использующий читаемое имя вместо GUID. Внутри него находится папка Info.plist
, папка Products
, в которой живет .app
, и папка dSYMs
для хранения связок .dSYM
.
Быстрый и грязный способ скопировать .apparchive
в .xcarchive
:
- Создать новую папку с датой создания архива.
- Скопируйте содержимое
.apparchive
в новую папку, заканчивающуюся .xcarchive
внутри этой новой папки.
cd
в эту новую папку .xcarchive
. С этого момента все относительно.
- Создание папок
Products
и dSYMs
.
- Переместите
.app
связку в Products
.
- Переместите
.dSYM
связку в dSYMs
.
- Удалить старый файл
ArchiveInfo.plist
.
- Создайте новый
Info.plist
, который выглядит следующим образом, заменив соответствующим образом.
(окончание списка, чтобы StackOverflow правильно форматировал XML ...)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ApplicationProperties</key>
<dict>
<key>ApplicationPath</key>
<string>AppBundleName.app</string>
<key>CFBundleIdentifier</key>
<string>com.example.app-id</string>
<key>IconPaths</key>
<array>
<string>AppBundleName.app/Icon.png</string>
<string>AppBundleName.app/Icon-Small.png</string>
</array>
</dict>
<key>ArchiveVersion</key>
<real>1</real>
<key>CreationDate</key>
<date>2010-12-15T15:10:34Z</date> <!-- this is a GMT time stamp -->
<key>Name</key>
<string>AppName</string>
<key>SchemeName</key>
<string>AppName</string>
</dict>
</plist>