Russian Qt Forum
Сентябрь 21, 2024, 12:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Публикация приложения в Apple Store [РЕШЕНО]  (Прочитано 5052 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Февраль 14, 2014, 12:38 »

Добрый день. Прошу отписаться тех кто сталкивался с подобной задачей. Удалось дойти до последнего шага публикации приложения (отправка), после отправки приложения приходит ошибка в которой говорится о том, что софт нужно подписать Apple sandbox. Ну раз просят значит сделать нужно, но тут возникают следующие проблемы:

После сборки приложения зависимости (Qt) подтягиваются из папки /usr/local/..... ..... , понятное дело что у пользователй этой папки не будет и библиотеки нужно положить рядом с приложением + для самого приложения указать откуда подгружать библиотеки ( install_name_tool ) Так вот теперь в чем заключается проблема, сразу после сборки, приложение подписывает Apple sandbox и если после этого проделать какие либо махинации в том числе и install_name_tool то приложение перестанет запускаться с ошибкой

Killed:9

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

P.S.

ссылка на пост где описано решение публикации
« Последнее редактирование: Февраль 17, 2014, 15:20 от ecspertiza » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Февраль 14, 2014, 12:49 »

macdeployqt же вроде разруливает библиотечные зависимости. а подписать можно ручками (пишу по памяти): /usr/bin/codesign ляляля

для примера, ад-хок сборки для иос приложения (на выходе .ipa) через командную строку делаются так, вдруг пригодится:
Код
Bash
# Create .ipa
xcrun -sdk "${TARGET_SDK}" PackageApplication -v "${APP_PATH_ABSOLUTE}" -o "${IPA_PATH_ABSOLUTE}" --sign "${DEVELOPER_NAME}" --embed "${PROVISIONING_PROFILE}"
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Февраль 14, 2014, 13:26 »

macdeployqt - разруливает, но он по сути просто копирует файлы и выполняет тот же install_name_tool .

codesign - подписывает просто сертификатом разработчика, а sandbox насколько понял выставляет правила, что делает софт, куда ломится (Интернет, файлы и т.д.)
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Февраль 17, 2014, 13:05 »

Каждый раз как пишу на этот форум ответ находится сам собой, видимо карма Улыбающийся Удалось опубликовать приложение, полный ход публикации для Qt приложенек описал тут . Жалобы, пожелания и вопросы приветствуются Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #4 : Февраль 17, 2014, 14:55 »

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

предлагаю засунуть ссылку на статью в первый пост и дописать в название темы [РЕШЕНО]. также можно добавить скрипт, чтобы действия не приходилось выполнять руками.

P.S. «это делается тремя командами в консолеи»
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Февраль 17, 2014, 15:00 »

спасибо за отзыв, правки сделал, скрипт постараюсь написать.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Февраль 17, 2014, 15:34 »

...и библиотеки нужно положить рядом с приложением + для самого приложения указать откуда подгружать библиотеки ( install_name_tool )
Я все оттягиваю разбирательство с этим (пока линкую статычно).

Позиция 1: просто "положить рядом с exe-шником" не катит в OSX. Хоть внутри бандла - хоть снаружи. Нужно каким-то образом записать путь в само приложение (как и сказал ТС)

Позиция 2: посмотрев неск солидных Qt приложений на OSX вижу что все они используют одну технику: линкуют динамически, но все dylib (дин либы) помещают внутрь бандла. Ясно это лучше всего: для пользователя приложение - одна бубочка, install = скопировал ее и все. Ничего ставить не надо, а хоть и поставил, приложение все равно юзает свои. Но как добиться чтобы оно так "собиралось" (какое мерзкое слово Плачущий) в Xcode - хз. Нашел инструкцию/указания, делал по ней - не выходит. Провозился пару дней и плюнул.

ecspertiza, Ваша инструкция может и хороша (не мне судить), но что мне делать в Xcode? Куда тулить @executable_path (или еще кого) чтобы dylib'ы ложились в bandle?

Спасибо
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #7 : Февраль 17, 2014, 16:14 »

можно почитать исходники macdeployqt и посмотреть как он прописывает @executable_path Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #8 : Февраль 17, 2014, 16:43 »

Во первых, да, можно просто почитать исходники macdeployqt. Но насколько я понял для себя, он просто копирует библиотеки куда нужно, а затем как раз для каждой скопированной библиотеки выполняет install_name_tool так же выполняет его и для бинарника.

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

1. Для Apple store, тут скорее всего без костылей не выйдет и придется писать свои какие то мудреные скрипты.
2. В Xcode для каждого этапа есть возможность задать выполнение скриптов, "Edit scheme", там можно выбрать этап "Build" и создать пост скрипт, который в свою очередь может просто вызвать macdeployqt или же любые команды которые вам захочется.

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

Код:
macdeployqt ${PROJECT_DIR}/bin/myapp.app



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

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.065 секунд. Запросов: 23.