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

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

Могу ли я импортировать этот проект в флаттер? Как?

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

Ответ 1

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

Резюме

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

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

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

разработка

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

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

  • папка lib для кода Dart + файлы Flutter должен включать, например, плагины, кратко: код Dart для Flutter

  • Папка iOS для кода Objective-C или Swift, который также включает в себя обычные аксессуары для iOS

  • папка android для кода Java или Kotlin (или C++) и всех других файлов Gradle и т.д.

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

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

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

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

Заключение

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

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

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

Кроме того, будет флаттер поддерживает библиотеки, которые я использовал в этом проекте? Вид. Так как вы не упомянули любые из библиотек, которые вы использовали, я собираюсь сделать несколько примеров, чтобы сделать его более ясным: - изображение загрузки библиотека (глиссады, Picasso) может быть заменена на флаттере родного изображения виджета - Если вы используете какое - либо которые вы хотите портировать на Flutter, вы можете следить за документацией о флаттерах по разработке пакетов и плагинов, которые, по сути, заявляют, что объявляют контракт /apis в пакетах jart и imlementation java в папке "android". Контракт остается таким же для IOS и Android. - Если вы хотите использовать компоненты системного уровня, как я уже упоминал ранее, пакеты и плагины - это путь. Вот список первых плагинов, разработанных командой Dart.

Ответ 5

Могу ли я импортировать этот проект в флаттер? Как?

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

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

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

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

Ответ 6

Однако вы можете добавить флаттер в ваше приложение для Android. Этот урок может помочь вам в этом.