Перейти к содержанию

Связывание библиотек

Не каждое приложение использует все нативные возможности, и включение кода для поддержки всех этих возможностей повлияет на размер бинарного файла... Но мы все равно хотим поддерживать добавление этих функций, когда они вам понадобятся.

В связи с этим мы представили многие из этих функций в виде независимых статических библиотек.

Для большинства библиотек это будет так же быстро, как перетащить два файла, иногда потребуется третий шаг, но не более того.

Примечание

Все библиотеки, которые мы поставляем с React Native, находятся в папке Libraries в корне репозитория. Некоторые из них являются чистым JavaScript, и вам нужно только require.

Другие библиотеки также полагаются на некоторый нативный код, и в этом случае вам придется добавить эти файлы в ваше приложение, иначе приложение выдаст ошибку, как только вы попытаетесь использовать библиотеку.

Вот несколько шагов для линковки библиотек, содержащих нативный код.

Автоматическое связывание

Установите библиотеку с нативными зависимостями:

1
npm install <library-with-native-dependencies> --save

Флаг --save или --save-dev очень важен для этого шага. React Native свяжет ваши библиотеки на основе dependencies и devDependencies в вашем файле package.json.

Вот и все! В следующий раз, когда вы соберете свое приложение, нативный код будет связан благодаря механизму autolinking.

Ручное связывание

Шаг 1

Если библиотека содержит нативный код, в ее папке должен быть файл .xcodeproj. Перетащите этот файл в свой проект в Xcode (обычно в группе Libraries в Xcode);

Ручное связывание

Шаг 2

Нажмите на ваш основной файл проекта (тот, который представляет собой .xcodeproj), выберите Build Phases и перетащите статическую библиотеку из папки Products внутрь импортируемой библиотеки в Link Binary With Libraries.

Ручное связывание

Шаг 3

Не для каждой библиотеки потребуется этот шаг, но вам нужно подумать вот о чем: Нужно ли мне знать содержимое библиотеки во время компиляции?

Это означает, что вы используете эту библиотеку на родном языке или только в JavaScript? Если вы используете ее только в JavaScript, то все в порядке!

Если же вам нужно вызывать ее из родного языка, то нам нужно знать заголовки библиотеки. Для этого нужно зайти в файл проекта, выбрать Build Settings и найти Header Search Paths. Там вы должны указать путь к вашей библиотеке. (Раньше в этой документации рекомендовалось использовать recursive, но теперь это не рекомендуется, так как это может вызвать тонкие сбои сборки, особенно с CocoaPods).

Ручное связывание

Комментарии