Ошибка при создании библиотеки webrtc для iOS

Я пытался создать webrtc для iOS, следуя указаниям Google на http://www.webrtc.org/native-code/ios (и ссылки по теме). Хотя я помню, что с помощью подобных шагов мне удавалось построить его в прошлом, это уже не так.

Вот шаги, которые я сделал:

  1. Предварительные требования для скачивания:

    $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git < / а>

    $ export PATH = `pwd` / depot_tools:" $ PATH "

  2. Скачать репо:

    $ export GYP_DEFINES = "OS = ios"

    $ fetch webrtc_ios

  3. Подготовить сборку:

    $ cd webrtc / src

    $ export GYP_DEFINES = "build_with_libjingle = 1 build_with_chromium = 0 libjingle_objc = 1"

    $ export GYP_DEFINES = "$ GYP_DEFINES OS = ios target_arch = armv7"

    $ export GYP_GENERATOR_FLAGS = "output_dir = out_ios"

    $ экспорт GYP_CROSSCOMPILE = 1

    $ gclient runhooks

  4. Строить:

    $ ninja -C out_ios / Debug-iphoneos AppRTCDemo

Все в порядке, пока последняя команда не завершится с / bin / sh: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc: Нет такого файла или каталога:

ninja: Entering directory `out_ios/Debug-iphoneos'
[3/1664] CC obj/chromium/src/third_party/boringssl/src/crypto/bio/boringssl.bio_mem.o
FAILED: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -MMD -MF obj/chromium/src/third_party/boringssl/src/crypto/bio/boringssl.bio_mem.o.d -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2 -DDISABLE_NACL -DCHROMIUM_BUILD -DCR_CLANG_REVISION=247874-1 -DUSE_LIBJPEG_TURBO=1 -DENABLE_CONFIGURATION_POLICY -DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DDONT_EMBED_BUILD_METADATA -DFIELDTRIAL_TESTING_ENABLED -DDISABLE_FTP_SUPPORT=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DBORINGSSL_IMPLEMENTATION -DBORINGSSL_NO_STATIC_INITIALIZER -DOPENSSL_NO_ASM -DUSE_LIBPCI=1 -DUSE_OPENSSL=1 -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -Igen -I../../chromium/src/third_party/boringssl/src/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -O0 -gdwarf-2 -fvisibility=hidden -Wnewline-eof -miphoneos-version-min=7.0 -arch arm64 -Wendif-labels -Wno-unused-parameter -Wno-missing-field-initializers -Wno-selector-type-mismatch -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -Wno-inconsistent-missing-override -Wno-shift-negative-value -Wno-bitfield-width -Wno-unused-function -Wno-unused-variable -m32 -arch i386 -pipe -no-cpp-precomp -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/include/ -m32 -arch i386 -pipe -no-cpp-precomp -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/include/ -std=c99 -Xclang -load -Xclang /Volumes/store/code/webrtc/src/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.dylib -Xclang -add-plugin -Xclang find-bad-constructs -fcolor-diagnostics -fstack-protector-all -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare  -c ../../chromium/src/third_party/boringssl/src/crypto/bio/bio_mem.c -o obj/chromium/src/third_party/boringssl/src/crypto/bio/boringssl.bio_mem.o
/bin/sh: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc: No such file or directory

По какой-то причине ниндзя думает, что мы строим для Симулятора, плюс, даже если бы мы это сделали, это был бы неправильный путь для получения gcc. Обратите внимание, что в моей системе установлен XCode 7.

Есть идеи, что может быть не так или как я могу это обойти?

С уважением, Антонис


person atsakiridis    schedule 12.10.2015    source источник
comment
Можете ли вы попробовать этот сценарий в своем каталоге src? webrtc / build / ios / build_ios_libs.sh. Также я вижу, что на шагах отсутствует синхронизация gclient. Пожалуйста, проверьте, делаете ли вы то же самое.   -  person manishg    schedule 29.01.2017
comment
Спасибо за комментарий. Обратите внимание, что я давно не писал этот вопрос. Прямо сейчас я создаю без проблем, используя официальное руководство Google по адресу: webrtc.org/native-code/ios   -  person atsakiridis    schedule 30.01.2017


Ответы (1)


Год назад я тоже хотел создать библиотеку по инструкциям Google, но не смог. Произошло много ошибок, и я закончил поиск в Google сценария сборки. В конце концов я нашел этот скрипт. Сделайте следующие шаги, и вы успешно его построите:

  • Установите Инструменты командной строки, но вставив эту команду в терминал: xcode-select --install
  • Скрипт клонирования: git clone https://github.com/lunastorm/webrtc-ios.git
  • Войдите в репозиторий git в Терминале и запустите скрипт с помощью следующей команды: make -j4, где j4 обозначает количество ядер ЦП (поправьте меня, если я ошибаюсь). Это может занять некоторое время, поэтому приготовьте себе чашку кофе.
  • Сборка не удастся в первый раз, но не беспокойтесь, просто удалите папки, в которые загружен скрипт. Я напишу какие в редактировать
  • Найдите свой идентификатор подписи кода, который действителен для создания приложений iOS. Введите security find-identity в терминал. Выберите один под Valid identities only
  • Откройте файл глобальной конфигурации src / build / common.gypi и найдите текст «CODE_SIGN_IDENTITY». Замените ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]‘: ‘iPhone Developer’ информацией о вашем разработчике, например ‘CODE_SIGN_IDENTITY[sdk=iphoneos*]‘: ‘iPhone Developer: Josip Bernat (2V3DKW6SDC)’
  • Снова запустите скрипт, используя make -j4, и, надеюсь, он создаст вам WebRTC.framework.
person Josip B.    schedule 13.10.2015
comment
Большое спасибо за ваш ответ, Джосиб Б. Этим утром мне тоже удалось без проблем построить, используя решение, аналогичное тому, что вы предлагаете (github.com/pristineio/webrtc-build-scripts). Итак, моя неизбежная проблема решена, но мне все еще интересно, что не так с официальными объектами. Обычно я стараюсь избегать использования сценариев сборки оболочки, поскольку они имеют тенденцию к проблемам и обычно отстают от официальных средств сборки webrtc. - person atsakiridis; 13.10.2015