Игра с Google Analytics не может быть построена из-за ошибок компоновщика

Я делаю проект единства, который представляет собой игру с дополненной реальностью, в которую играют на мобильных устройствах. Он использует vuforia для части AR. Недавно я добавил Google Analytics для Unity (пакет googleanalyticsv3.unity с сайта разработчика). После этого, когда я пытаюсь выполнить сборку на iOS, я получаю много ошибок «Apple Mach-O Linker» (Android по-прежнему отлично работает). Я смог удалить некоторые из них, добавив необходимые фреймворки, но у меня их все еще около 50. Я добавил libsqlite3.dylib, libz.dylib, SystemConfiguration.framework и CoreData.framework. Затем я также добавил security.framework, который также уменьшил количество ошибок при сборке. Затем я вернулся к нескольким коммитам в проекте, прежде чем добавить Analytics, и он по-прежнему отлично работал на тех же версиях Unity и Xcode.

Ниже приведены ошибки, которые я получаю:

Undefined symbols for architecture armv7:
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsgetn(char*, int)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::uflow()", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::mutex::~mutex()", referenced from:
      StateHolder::~StateHolder() in libQCARUnityPlayer.a(Tracker.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(double&)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::clear(unsigned int)", referenced from:
      l12810 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::cerr", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12905 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::tellg()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char)", referenced from:
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18636 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char)", referenced from:
      l18629 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18636 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_istream<char, std::__1::char_traits<char> >&, bool)", referenced from:
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::showmanyc()", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18597 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::__next_prime(unsigned long)", referenced from:
      l18338 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18347 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18357 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::sync()", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(double)", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::init(void*)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from:
      l12804 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(int&)", referenced from:
      l12806 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "non-virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(std::__1::fpos<__mbstate_t>)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(float&)", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::ios_base::getloc() const", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
      l12805 in libVuforia.a(libVuforia.a-armv7-master.o)
      l17392 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18583 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18584 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18585 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18592 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18593 in libVuforia.a(libVuforia.a-armv7-master.o)
      ...
  "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "non-virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from:
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18612 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18626 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18627 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18628 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18630 in libVuforia.a(libVuforia.a-armv7-master.o)
      ...
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18612 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18626 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18627 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18628 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::allocator<char> const&)", referenced from:
      l12808 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::basic_streambuf()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::locale::~locale()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::cout", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(unsigned int&)", referenced from:
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ios<char, std::__1::char_traits<char> >::~basic_ios()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18612 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18626 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18627 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18628 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      l12808 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12810 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12811 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12846 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12848 in libVuforia.a(libVuforia.a-armv7-master.o)
      ...
  "std::__1::ctype<char>::id", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18582 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18591 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18730 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::mutex::lock()", referenced from:
      StateHolder::QCAR_onUpdate(QCAR::State&) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::setStateBufferSize(unsigned int) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::updateCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::getCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::hasStateBeenSet() in libQCARUnityPlayer.a(StateHolder.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18594 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
      l18649 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::get()", referenced from:
      l12806 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12811 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      l18629 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned long)", referenced from:
      l12922 in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::setbuf(char*, int)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::mutex::unlock()", referenced from:
      StateHolder::QCAR_onUpdate(QCAR::State&) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::setStateBufferSize(unsigned int) in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::updateCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::getCurrentState() in libQCARUnityPlayer.a(StateHolder.o)
      StateHolder::hasStateBeenSet() in libQCARUnityPlayer.a(StateHolder.o)
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsputn(char const*, int)", referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in libVuforia.a(libVuforia.a-armv7-master.o)
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from:
      l12809 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12812 in libVuforia.a(libVuforia.a-armv7-master.o)
      l12858 in libVuforia.a(libVuforia.a-armv7-master.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я много раз видел эту проблему в сети, но, похоже, в основном она решается простым добавлением правильных фреймворков, но у меня должны быть все они, по крайней мере, все, что я видел в сети. Я также пытался использовать AdSupport.framework, но это не дало никакого эффекта, поэтому я удалил его, так как это, по-видимому, могло привести к сбою проверки iOS (и мне не нужно такое отслеживание). Я также собирал этот же проект 4 раза (чисто, каждый раз в новой папке), добавлял фреймворки, удалял их и добавлял снова. Я также удалил Vuforia и Google Analytics из проекта и снова добавил их, а затем создал новую версию, но без изменений. Буду очень признателен, если кто-нибудь поможет мне это исправить!

Вот изображение фреймворков и библиотек.

Версия Unity — 4.6.7f1, Xcode — 6.4. Я скачал последние версии Analytics и Vuforia.


person Steelfraud    schedule 12.08.2015    source источник


Ответы (1)


Ну, я добрался туда сам. После достаточно долгого просмотра коммитов git и достаточного количества попыток я обнаружил, что Google Analytics заменила PostProcessBuildPlayer (в Assets/Editor/), когда я добавила его в проект, а это означало, что Vuforia неправильно строит себя. Я добавил версию Vuforia обратно и переименовал версию Analytics в PostProcessBuildPlayer_GA, а также добавил правильные фреймворки при сборке. После этого он строился красиво.

person Steelfraud    schedule 13.08.2015