Связанный с адаптацией проект как iOS или (.aar) Android-библиотека

Я изучаю возможность использования response-native для создания iOS-структуры (андроидной библиотеки), которая может быть распространена и может быть интегрирована с приложениями, включая при создании приложения.

Например, поддерживая одну кодовую базу для создания ".framework" для ios или .jar для android (в основном скомпилированный код вместо кода компонента) в качестве дистрибутива для сообщества разработчиков.

Ответ 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, мы определимся с процессом сборки в будущем.

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