Flutter-импорт из существующего проекта android

в настоящее время я работаю над проектом android, который ~75% завершен. Мне нужно аналогичное приложение для iOS.

можно ли импортировать этот проект в flutter? Как?

кроме того, будет ли flutter поддерживать библиотеки, которые я использовал в этом проекте?

5 ответов


приложения Flutter работают совершенно по-другому, т. е. не как Android или iOS. Flutter имеет свою собственную архитектуру и, следовательно, собственные плагины и т. д.

резюме

нет нельзя преобразование существующий код Android в Дарт код для Flutter, который необходим для включения кросс-платформенного поведения, потому что весь код, используемый Flutter SDK, должен быть записан в Дротик.

, вы можете использовать свой код Android, просто включив его в папку Android и попытка интегрировать его с Flutter SDK, что, вероятно, будет намного больше работы, чем просто переписать его полностью в Dart. Это тоже не что вы вообще хотите сделать, потому что родной код Android и iOS имеет смысл использовать для включения функций, которые вы не можете достичь с помощью Flutter, в виде Плагины.

существует также третий подход, который заключается в том, что вы держите свой код Android и только добавить особенности с флаттером. Это сложнее реализовать, потому что вам придется создать интерфейс для "переключения", чтобы порхать из кода Android. Используя это, вам также нужно будет переписать оставшиеся части для iOS в Flutter или native iOS, что вам совсем не поможет.

разработки

есть довольно прямой прямой ответ на это.

флаттер это слой сверху родного SDK. это значит что ты мог бы держите свой код, потому что, если вы когда-либо заглядывали в Flutter проект, то увидели бы, что в нем есть, на данный момент, по существу три структуры вы можете работать с:

  • на Дарт код + файлы Flutter необходимо например, включить Плагины, короткое: Дарт код на флаттер

  • либо Java или Котлин (или C++) код и все другие файлы gradle и т. д.

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

вы можете полностью игнорировать android и ios папки во время разработки, если вы хотите`.

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

флаттер ' s цель написать весь код в Dart и только в Flutter SDK, что означает, что ваш существующий код Android мог бы быть включенным в проект, но он не будет иметь никакого использования для iOS, потому что вся кросс-платформенная работа выполняется в Dart с использованием Flutter SDK.

вывод

если вы действительно хотите переключиться на Flutter SDK, ваш лучший выбор-полностью переключиться на Flutter, т. е. рерайтинг все функции в Дарт.

там нет возможности "импорта" для "преобразования" кода Android в код Flutter. Это даже не сработало бы, если бы они были написаны на одном языке, потому что архитектура Flutter совершенно другая, и то, как вы создаете приложения, не имеет отдаленного отношения к приложениям Android.

если вы считаете, что изучение дротика и переписывание вашего приложения для кросс-платформенной не стоит того, но вы все еще хотите поддержку iOS, я бы предложил вам написать в iOS native, но мое общее предложение для проблема заключается в переписывании всего приложения в Dart.


Flutter использует радикально другую архитектуру рендеринга. Весь рендеринг вычисляется с помощью кода Dart, без использования собственных элементов.

таким образом, вы не только не можете использовать собственный код, вы также не можете иметь что-то вроде "импортировать родной для flutter".

для библиотек, это сложная тема. Вы can использовать их. Но только внутри того, что флаттер называет платформа канал. Который является api для выполнения системного вызова, написанного в коде, который выполняется изначально в ОС.

поэтому библиотеки, такие как Firebase, в порядке. Но компоненты библиотек или вещи, как rxjava вышли. Вам понадобится аналогичная библиотека дротиков.


из того, что я видел, вам, вероятно, придется перенести его на Dart по большей части. Однако, поскольку ваши 75%, вероятно, включают в себя намного больше, чем кодирование (например, дизайн, взаимодействие, поток), легкая часть будет перекодировать это в Dart, чтобы закончить.


Я бы сказал, Нет, нет. И причина хорошо объясняется @creativecreatorormaybenot. Я бы добавил, что это не только языковая разница, которая делает его сложным, но и все родные представления android, иерархия представлений отличается от иерархии представлений Flutter. Если вы знакомы с Cocos framework, у которого есть своя иерархия представлений, flutter похож на то, что только лучше, богат и засвидетельствован Google(я думаю,;)). Точка запуска по-прежнему является обычной деятельностью android в трепете, но это все. Затем управление перетекает в flutter для измерения и рисования виджетов пользовательского интерфейса. Возможно, Вам все равно придется реализовать некоторые функции, требующие системных служб, аппаратный доступ к которым должен быть написан в собственном стиле Java/Kotlin android/ IOS.

рекомендации: На данный момент я бы не рекомендовал вам использовать хакерский способ преобразования dart в java/kotlin и Android UI для Flutter UI, даже если вы видите что-то онлайн, что это делает. Причина будучи, Flutter сам по себе является экспериментом Google и еще не созрел как Android. Вы должны ожидать, что некоторые нюансы будут меняться часто. Поскольку вы уже сделали 75 процентов, я бы сказал, что все родные (Android и IOS) или все трепещут.

чтобы точно ответить на ваш вопрос: могу ли я импортировать этот проект в flutter? в данный момент нет.

кроме того, will flutter поддерживает библиотеки, которые я использовал в этом проект? вид. Поскольку вы не упомянули ни одну из библиотек, которые вы использовали, я приведу несколько примеров, чтобы сделать его более ясным: - Библиотека загрузки изображений (glide, picasso)может быть заменена родной изображения виджет - Если вы используете какие-либо основные библиотеки java, которые вы хотите портировать для Flutter, вы можете следовать документации flutter о разработка пакетов и плагинов, который по существу говорит, чтобы объявить контракт / API в Java-пакетах dart и imlementation в папке "android". Контракт остается прежним для IOS и android. - Если вы хотите использовать компоненты системного уровня, как я уже упоминал ранее, пакеты и плагины путь. здесь это список плагинов из первых рук, разработанных командой Dart.


можно ли импортировать этот проект в flutter? Как?

Как я исследовал до сих пор, нет опции импорта, доступной в flutter для проектов из любой другой структуры. Архитектура Flutter совершенно другая и новая по сравнению с другими. Мы можем включить наш существующий код android в наш проект, но он не будет использовать iOS, потому что вся кросс-платформенная работа выполняется в Dart с использованием Flutter SDK.

будет трепыхаться поддерживает библиотеки, которые я использовал в этом проекте?

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

Итак, нам нужно написать полный проект на языке dart и использовать существующие библиотеки flutter и построить новый проект.