Простой способ обновления вашего приложения React Native
Итак, у вас есть Реагировать на родной приложение, да? Но это старая версия, и вам нужно обновить ее до последней? Поверь мне, это боль в твоей знаешь что если у вас много версий позади. Моя компания поставила передо мной задачу обновить наше приложение с версии 0.44.0 до последней (v 0.57.0).
Вот базовая версия того, что вам нужно сделать:
1. Просмотрите примечания к выпуску React Native и найдите критические изменения между вашей версией и целевой версией.
2. Проверьте все свои пакеты/библиотеки, чтобы убедиться, что они будут работать с новой целевой версией React Native. При необходимости обновите библиотеки.
3. Используйте доступные инструменты для обновления.
Официальная документация React Native предлагает вам использовать react-native-git-upgrade
. Но я обнаружил много проблем в Интернете с другими разработчиками после его использования, например, конфликты в project.pbxproj
файл, Unable to open .xcodeproj file
и тому подобное.
Есть репо rn-diff
который я нашел очень простым в использовании. Я использовал этот метод для обновления нашего приложения. В этом репозитории есть таблица, в которой показано сравнение изменений файлов между двумя ближайшими версиями, а также файл исправления для обновления.
Вот как это использовать.
Вы можете просмотреть сравнение и изменить содержимое вручную или использовать предоставленный файл исправления.
Я рекомендую вам обновлять одну версию за раз.
Когда вы будете искать сравнение между версиями, вы обнаружите, что большинство изменений просто увеличивают react-native
а также react
версия на package.json
файл. Просто измените версию и запустите yarn install
.
Например, если вы находитесь на версии 0.54.0 и вам нужно обновить его до версии 0,54,4 то вы уже знаете, что делать.
Теперь ты на v0.54.4 и вам нужно обновить до v0.55.0 , вы увидите изменения в 7 файлах. Либо вы вносите изменения в эти файлы вручную, либо лучше выполните следующие шаги:
Предполагая, что вы все еще находитесь внутри своего проекта и в своем терминале:
- Загрузите файл исправления
$ curl [ > upgrade-rn.patch
Он загружает файл патча (он отличается для разных версий, поэтому вам нужно будет предоставить конкретную ссылку из таблицы) с именем файла обновление-rn.patch.
- Подготовьте патч
Патч сделан для RnDiffApp, расположенного в RnDiffApp папка этого репозитория. Чтобы использовать его в собственном репозитории, необходимы некоторые изменения.
Вы можете либо заменить RnDiffApp с вашим Имя приложения на обновление-rn.patch файл вручную или используйте следующие команды, чтобы сделать это автоматически:
$ appNameCamelCase=MyApp
$ appNameLowerCase=myapp
$ sed -i "" "s-ios/RnDiffApp-ios/${appNameCamelCase}-" upgrade-rn.patch
$ sed -i "" "s-java/com/rndiffapp-java/com/${appNameLowerCase}-" upgrade-rn.patch
sed
это unix-команда. Над s-ios/RnDiffApp-ios/${appNameCamelCase}-
от sed
команда заменяет все вхождения ios/RnDiffApp
по ios/MyApp
а другая команда похожа на android.
- Настройте трехстороннее слияние
По умолчанию в случае конфликтов
git apply
команда завершится ошибкой и оставит файлы нетронутыми. Было бы интересно отказаться от трехстороннего слияния (опция--3way
), чтобы разрешить конфликты с вашим любимым инструментом слияния.
Для этого git должен знать блоб, на который ссылается патч. Поэтому вам нужно добавить rn-diff в качестве удаленного репозитория и получить его.
$ git remote add rn-diff
$ git fetch rn-diff
- Применить патч
$ git apply upgrade-rn.patch --exclude=package.json -p 2 --3way
-p 2
говорит Git игнорировать подпапку при применении исправления.
Здесь package.json
файл исключен, поэтому вам придется вручную редактировать этот файл.
$ yarn install
Кроме того, будет лучше, если вы перекомпонуете свои родные библиотеки.
После этого процесса запустите приложение для обеих платформ.
PS: Как вы видете, закругленные значки приложений был введен для Android в версии 0.56.0. Вы можете получить ошибку при попытке применить патч для v0.55.4-v0.56.0. Я бы порекомендовал вам удалить патч для значков приложений из файла патча и применить его. Позже вы можете использовать свой собственный округлый значок для своего приложения для Android.
Вуаля! теперь ваше приложение обновлено. 🎉🎉🎉