Проблемы с получением TestFlight для работы с приложением Monotouch
Я изо всех сил пытаюсь заставить TestFlight работать с моим приложением MonoTouch (Monotouch 5, IOS5) и не нашел никакой документации MonoTouch для TestFlight.
Вот что я попробовал до сих пор.
Загруженные привязки TestFlight с https://github.com/mono/monotouch-bindings/tree/master/TestFlight - после добавления этого в качестве ссылки казалось, что методы TestFlight на самом деле вообще не были представлены, поэтому я искал другой набор привязок.
Загрузил привязки TestFlight от yyng с https://github.com/ayoung/monotouch-testflight. Построил monotouch-testflight.dll с помощью Make, скопировал его в проект и добавил в References - на этот раз все методы TestFlight были видны.
Добавлен libTestFlight.a в папку Lib в моем проекте MonoTouch с установленным для BuildAction значением Nothing. (У меня также есть RedLaser там).
В течение дня я включил LLVM-компилятор (с ARMv7); Вы заявляете, что это необходимо. В опциях проекта -> iPhone Build мои дополнительные аргументы mtouch:
-cxx -nosymbolstrip -nostrip -gcc_flags "-lgcc_eh -создание системы конфигурации
Примечание: приложение работало нормально с RedLaser до того, как TestFlight был добавлен в проект.
Здесь -lgcc_eh как и у меня - я не смог выяснить, что это такое и для чего оно. Возможно, у меня должен быть gcc_eh.dll (?), Но я не AFAIK, и я не знаю, где я мог найти такую вещь.
В Main.cs я добавил
используя TestFlightSdk;
и в FinishedLaunching я добавил
TestFlight.TakeOff( "(downloaded team token is here)" );
Скомпилировано и установлено без ошибок (Release|iPhone).
Когда я сейчас запускаю приложение на устройстве, оно сразу же завершает работу без диагностики, которую я могу обнаружить.
Приложение также закрывается немедленно, если оно скомпилировано в Debug | iPhone. В этом случае, однако, если я выключаю LLVM, несмотря на ограничения, сделанные молодыми, то в выходных данных приложения я вижу следующее:
TestFlight: запущенный сеанс TestFlight: обработчики сбоев установлены Поток запущен: поток запущен: TestFlight: токен команды распознан TestFlight: конец сеанса TestFlight: связь с TestFlight в настоящее время отключена, подробности проверьте в журнале ранее.
Это может быть потому, что я еще не загрузил.ipa файл приложения в TestFlight?? (Однако в этом случае приложение запускается.)
- Я пытаюсь выяснить, как создать файл.ipa. Документация по TestFlight показывает, как это сделать из XCode, но мое приложение предназначено только для кода без.xib, так что эта опция, кажется, отсутствует? В документации TestFlight также показано, как создать файл.ipa из файла.app. Вот моя проблема, как я возлагаю руки на файл.app для сборки устройства?
Любая помощь по этим вопросам будет очень цениться.
4 ответа
-lgcc_eh необходим для включения библиотеки GCC "Обработка исключений", которая часто требуется, если вы связываетесь с библиотеками C++.
У вас также есть много опций -framework, которые не выглядят необходимыми (MonoTouch уже добавляет их), но это не будет причиной вашей проблемы. Если вам интересно, что mtouch использует / предоставляет во время компиляции, тогда вы можете добавить "-v -v -v" к "дополнительным аргументам касания" в опциях вашего проекта (и посмотреть на результаты сборки).
Что касается основной проблемы, я думаю, что это связано с тем, что обработчики TestFlight несовместимы (в настоящее время) с MonoTouch (5.0). Обработка исключений MonoTouch уже предоставляет свои собственные обработчики сбоев (например, для NullReferenceException
) и добавление других обработчиков должно быть сделано с осторожностью (как и когда это сделать, очень важно). Вероятно, поэтому текущие привязки в привязках monotouch не включают все функции, доступные в testflight.
Я предлагаю вам открыть отчет об ошибке на bugzilla.xamarin.com, и вы будете получать по электронной почте обновления о ходе работы (и точно знать, когда эта функция станет доступной).
ps постарайтесь разбить свои проблемы на несколько вопросов (переполнение стека), вы, скорее всего, получите ответы таким образом, поскольку не все знают все ответы на все ваши вопросы:-)
Распространение через testflightapp - это совсем другое, чем использование testflightsdk в вашем приложении.
Первый - щелкнуть кнопку "Загрузить в тестовый полет" в меню.
Во-вторых, путем включения фактического SDK. В последние несколько дней они (xamarin) выпустили новые привязки testflight sdk. Это не требует от вас изменения параметров mtouch. Так что включить его должно быть намного проще.
Лично мне очень нравится testflight sdk... Помогает мне лучше (пусть) тестировать мои приложения.
Я шел по неправильному пути полностью. Наконец нашел документацию MonoTouch, в которой описана встроенная поддержка TestFlight:
http://docs.xamarin.com/ios/tutorials/TestFlight_Support
Постараюсь это, это должно решить проблему.
Судя по звуку этого сообщения об ошибке Xamarin, кажется, что даже если вы получите собственную библиотеку TestFlight SDK, работающую с привязками MonoTouch, или, связав ее самостоятельно, у вас все равно будет проблема, заключающаяся в том, что TestFlight не будет правильно обрабатывать какие-либо Исключения NullReference и просто собирается вывести приложение из строя при его обнаружении. Это делает бессмысленным весь смысл TestFlight SDK до тех пор, пока либо a) MonoTouch не будет переопределен для работы с ним, либо b) TestFlight не выпустит управляемую библиотеку Mono.
Не поймите меня неправильно, я ДЕЙСТВИТЕЛЬНО хочу иметь возможность использовать TestFlight SDK с MonoTouch. Я бился головой о стену, пытаясь заставить ее работать весь день. Что-то не работает, когда я вызываю метод TestFlight.TakeOff("MyKey"). Элемент управления возвращается из метода, но затем происходит сбой вскоре после этого... примерно через 1 секунду после вызова. Weird.
Если бы кто-то еще сработал, я бы хотел услышать о вашем опыте. Благодарю.