2013-09-01 2 views
1

Как связать «.a» fat-static-libs с Apportable?Как связать «.a» fat-static-libs с Apportable?

В начале, я получил предупреждение,

Внимание: библиотека не найдена для Lib-имени. Попытайтесь добавить это в массив «deps» в разделе «add_params» вашего файла configuration.json . Проверьте ~/.apportable/SDK/System для имен каталогов, которые соответствуют элементам «deps».

я добавить его в "Deps" в JSON справа, где он говорит, что это:

// Список зависимостей. Как правило, они соответствуют структурам в проекте xcode.

Моя библиотека не является каркасом. Это всего лишь статическая библиотека .a с элементами armv7, armv7s и i386, которые я собрал с помощью lipo из двух библиотек (armv7 и armv7s .a и i386 .a), построенных с помощью Xcode. Они оба используют единый каркас, который равен this Boost framework.

Добавление его под deps сбрасывает это предупреждение, но компоновщик apportable по-прежнему дает неопределенные ссылки, поэтому он по-прежнему не связан надлежащим образом.

Теперь я знаю, что Apportable имеет в re-jitter всего этот материал, так как Android не будут знать, что делать с Mac-исполняемым форматом, так что, вероятно, должен пойти выбрать обособленно свою библиотеку и, возможно, превратить его в ELF - библиотеки до окончательной компоновки. Я не уверен, как сделать отладку на этом этапе, но поддерживается ли это вообще?

ответ

2

С тех пор, как вы получили «библиотека не найдена», что означает, что Apportable просто не может найти файл. Следовательно, проблема заключается только в местоположении файла (или его существовании), а не в библиотеке или ее построении.

Наиболее распространенная проблема с зависимыми объектами, особенно с проектами Xcode, сбрасываемыми в другие проекты Xcode, соответственно с рабочими пространствами с несколькими проектами, заключается в том, что итоговый вывод каждой цели/проекта переходит в разные папки. Тогда Apportable (а также xcodebuild при некоторых обстоятельствах) не может найти результирующие библиотеки.

Первый шаг, который вы должны попробовать - убедиться, что установлены целевые зависимости. Выберите целевую точку приложения, перейдите на страницу «Сборка фаз» и под . Зависимости от цели добавьте все фреймворки и библиотеки, которые отображаются в списке и зависят от вашего проекта. Это должно гарантировать, что зависимые структуры/библиотеки будут созданы, потому что встроенное автоматическое определение зависимостей Xcode недоступно инструментам командной строки из того, что я понимаю. Поэтому вам нужно явно указать зависимые проекты, соответственно, их выход.

Если это не поможет, вы можете заставить все цели записать свой вывод в одну и ту же папку.Под Строительства Настройки для каждых целевого изменить сборки продуктов Путь (символическое название: SYMROOT) в ту же папку, например ~/myprojectsbuildoutput

Таким образом, даже зависимые проекты будут размещать свою продукцию в той же папке и xcodebuild, а также Apportable (это зависит от xcodebuild) смогут найти файлы библиотеки.

Совет: убедитесь, что ваш проект успешно завершен в командной строке. Откройте терминал, cd, в папку, где находится пакет .xcodeproj, и введите xcodebuild. Если xcodebuild выходит из строя просто из-за проверки, отключите Подтвердите встроенный продукт под кодом Настройки установки целевой цели приложения. Если xcodebuild не работает, Apportable, вероятно, не будет работать, потому что это зависит от xcodebuild. Поэтому в качестве предварительного условия убедитесь, что xcodebuild работает над вашим проектом.

Если xcodebuild также дает вам «библиотека не найден» попробуйте вызвать его с конкретным SYMROOT:

xcodebuild SYMROOT=~/myprojectsbuildoutput 

Если что то работает вы знаете, вы должны обновить каждый целевой объект Build Projects Path. Из того, что я знаю, в настоящее время невозможно (или не документировано) передавать пользовательские параметры xcodebuild через Apportable, поэтому его необходимо настроить в самом .xcodeproj.

+0

Я не уверен, что это критический момент, который был пропущен, но как только я добавил путь к моему жирному '.a' в Apportable config.json, он прекратил выдавать предупреждение Not Found, но символы все еще не найден во время связывания. 'xcodebuild' работает отлично. Думаю, я попытаюсь переместить его в папку проекта и попробовать различные способы подключения оттуда. Это просто ссылка, потому что это несколько сотен МБ, которые я не хотел включать в Git. –