Ответ 1
Рекомендованный React собственный способ установки реагирующих зависимостей - через npm install
. Очень простым решением может быть поставка вашей библиотеки без реагирования на исходный код, а затем разрешение пользователям SDK устанавливать реагировать на нативный с помощью рекомендуемого способа реакции.
https://facebook.github.io/react-native/docs/integration-with-existing-apps.html
Проблема с этим подходом состоит в том, что собственные разработчики не знакомы с npm install
и им не очень удобно решать проблемы, связанные с npm install
. Нативные разработчики больше привыкли к грейдлингу и кокоаподам для создания своего приложения, и, к сожалению, реагируют на нативные, перестали его поддерживать. Как разработчик SDK, мы не можем заставить наших пользователей SDK начать использовать npm и следовать действующим рекомендациям по интеграции.
Вот как мы решили эту проблему для нашего варианта использования,
Android:
Хост реагирует на собственный репозиторий maven и просит пользователей SDK добавить строку ниже в свой файл build.gradle уровня проекта,
allprojects {
repositories {
jcenter()
maven {
// All of React Native (JS, Android binaries) is installed from private maven repo
url "<Your private maven repo url.>"
}
}
}
Добавьте строку ниже в файл приложения build.gradle,
dependencies {
compile 'com.facebook.react:react-native:0.53.+'
}
Вы также можете использовать это частное хранилище maven для размещения своего aar файла SDK.
С этим изменением для разработчиков Android будет очень легко включить ваш SDK и реагировать нативно в свое приложение. Проблема этого подхода заключается в том, что вы в конечном итоге будете поддерживать множество реагирующих версий в своем собственном частном репозитории Maven (Затраты на обслуживание).
IOS:
Нашим первым решением было включить библиотеки реагирования в файл .framework
и создать толстый двоичный файл. Это требует, чтобы вы включили libReact.a и другие связанные с реакцией .a files
в ваш файл фреймворка и связали их.
С этим решением Ваш .framework
включает в себя все зависимости. Интеграция с SDK будет очень простой (просто перетащите в папку Frameworks). Проблема с этим подходом заключалась в том, что React-библиотека растет в размерах. Последний файл libReact.a имеет размер 105 Мб. Это означает, что размер файла фреймворка будет огромным, и пользователи SDK будут испытывать трудности при его переносе на github.
Недавно мы перешли к решению, в котором мы размещаем собственные зависимости React в частном модуле, и пользователи SDK могут загружать зависимости реагирования, добавив несколько строк в свой Podfile. Это решение похоже на рекомендуемый способ реагирования, и единственное, чего мы избегаем - это npm install
. Мы хотим предоставить нашим пользователям SDK оба варианта (один с установкой npm, а другой без него). Основываясь на отзывах пользователей SDK, мы определимся с процессом сборки в будущем.
Обратите внимание, что у этого решения есть несколько ограничений и накладных расходов на обслуживание, но оно решает наш вариант использования. Это может не работать для всех.