AIR: ошибка компоновщика со сторонним расширением iOS

В настоящее время я пытаюсь включить .ane в свое приложение для iOS. .ane предоставлен третьей стороной, и у меня нет его источника.

Я связал прилагаемый файл .swc со своим проектом (внешняя ссылка в соответствии с рекомендациями Adobe и третьей стороны) и успешно создал .swf. Моя проблема начинается при использовании adt для создания .ipa для развертывания. Ниже приведен макет команды adt, которую я использую. Можно считать, что все ‹>d заполнено правильно, т.к. я все тщательно проверил, и сборка идет довольно долго. Хотя, возможно, мне не хватает каких-то сладких крупиц добра...

adt -package -target ipa-ad-hoc -provisioning-profile <the-file> -storetype <the-store-type> -storepass <the-password> -keystore <the-certificate> ./../myapp.ipa MyApp-app.xml MyApp.swf -extdir <path-to-ane-files>

Все идет довольно хорошо, пока я не получаю следующую ошибку, и мы резко останавливаемся:

ld: library not found for -lsqlite3

Это говорит мне о том, что сторонний файл .ane либо путем указания через xml-файл -platformoptions, либо иным образом, пытаясь связать библиотеку sqlite3, и в той точке процесса adt, которую базовый проект Xcode должен выполнить быть построена, эта библиотека не может быть найдена.

Моя установка выглядит следующим образом:
Mac OSX Lion
Adobe Flash Builder 4.5 с PHP
Xcode 4.4.1 Flex 4.6.0 (AIR 3.3) SDK

Итак, sqlite3 находится в /usr/lib, так что я знаю, что он там, и на самом деле это может быть любая библиотека. Поскольку это утилита командной строки AIR, у меня нет доступа к базовому проекту Xcode (насколько я знаю) чтобы просто указать, где находится библиотека, так что на данный момент у меня нет идей.

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

Спасибо!


person cstays    schedule 16.08.2012    source источник


Ответы (1)


Хорошо, так что это оказалось проблемой с моей настройкой, я думаю. Указав в команде adt версию iOS SDK, которую я явно использовал проблема решена. Вот что я думаю произошло:

  • Несколько дней назад я скачал Flex 4.6.0AIR3.3 и установил его. Adobe говорит, что поставляется с запеченной версией iOS (но я не могу ее найти), поэтому я предполагаю, что она использует версии /Developer/Platforms/iPhoneIS.platform для Snow Leopard и Xcode 3.

  • Затем я обновляюсь до Lion, чтобы затем я мог перейти на Xcode 4, чтобы затем создавать вещи для iOS 5. Xcode 4 теперь установлен из App Store, поэтому я сначала полностью удаляю Xcode и затем переустановите его из App Store.

  • Xcode 4 помещает SDKS в пакет приложений, а не обратно в /Developer/Platforms. Потенциально «вытягивая ковер из-под ног» Adobe?

В любом случае, это решено, просто нужно было понять, что SDK «ушли» ... о, и понять, что sqlite3.a был не тем, что искал компоновщик, а скорее libsqlte3.dylib.

Вот модифицированная команда adt, обратите внимание на наличие ключа -platformsdk:

adt -package -target ipa-ad-hoc -provisioning-profile <the-file> -storetype <the-store-type> -storepass <the-password> -keystore <the-certificate> ./../myapp.ipa MyApp-app.xml -plaformsdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/<version> MyApp.swf -extdir <path-to-ane-files>

:)

person cstays    schedule 16.08.2012