Одна кодовая база, несколько платформ. Мы слышали это обещание с тех пор, как Java был освобожден. Я беру продолжающуюся популярность Java в знак того, что он несколько доставлен на обещание.
Много лет спустя мы все еще в точке, где многие рамки, такие как флаттер, Xamarin, Cordova и React Reactious, обещают нам доставлять что Magic Silver Bullet: кроссплатформенная мобильная разработка. Основываясь на моем собственном опыте, я бы сказал, что они не могут.
Теперь я, конечно, не пытаюсь игнорировать тяжелую работу, проделанную команды указанных структур. Они все блестящие, и я люблю, что инструменты существуют. Но вы должны основывать свою работу от них по правильным причинам.
Если вы думаете, что можете просто написать свой код, а затем начать обналичивать в банке, потому что вы можете опубликовать свои приложения на множестве платформ, в одном переходе с небольшим количеством не работающих, вы находитесь за большой сюрприз.
Позвольте мне описать несколько наблюдений, которые я сделал:
Кроссплатформенные инструменты почти никогда не наравнете с инструментами, предлагаемыми нативной платформой. Таким образом, вам придется принять некоторые недостатки, такие как самые последние функции, которые вам не доступны.
Вы не собираетесь избегать писать родных кодов (или классов обертки), скажем, Kotlin/Java/Swift/Objective-C. Таким образом, вы должны быть опытными в одном из этих языков.
Чем дальше от собственной платформы вы шагаете, тем более вероятно, что ваша заявка становится нестабильной, потому что есть больше мест вашего кода или ваша насадочная информация может и сломается.
Устаревшие или неполные сторонние библиотеки. Первый, вероятно, блокирует или задерживает вашу возможность обновлять свое приложение. Последнее заставит вас придется переосмыслить недостающие функции, которые уже в родных библиотеках (мы не хотим изобретать колесо, мы?).
Ваш набор инструментов сломается в какой-то момент. Я потратил бесчисленные часы, пытаясь определить, разбился ли сборка в связи с ошибкой в кроссплатчатичной структуре или инструментах, поставляемых на платформе, которую я собираюсь. Однако это действительно структурная проблема, которую я полагаю, что происходит всякий раз, когда насадочная машина становится слишком сложной, как мы видели в последние годы с другими проектами, такими как Nodejs.
В целом, я думаю, что проблемы, с которыми я встречался по пути, поражает цель использования мобильной кроссплатформерной разработки инструмента. На одном из моих питомцев я вернулся к отдельным кодовым базам. Это означает длительное время разработки, что вполне облом, но наоборот, я забираю несколько новых языков, а не борьба с проблемами, связанными с набора инструментов. Совсем неплохо:)
Это мой опыт. Что тебя?:)
Оригинал: «https://dev.to/sjustesen/cross-platform-development-214p»