Как включить поддержку Swift для существующего проекта в flutter

Я хочу знать, есть ли способ включить быструю поддержку проекта флаттера. Я только включил поддержку Kotlin при создании проекта. Мне тоже нужно включить Swift. Есть ли команда, которую я могу выполнить, или любая настройка в плагине флаттера для Android studio, где я могу включить, или есть возможность включить в Xcode?

This is what I want to do but for existing Flutter project

Это то, что я хочу сделать, но для существующего проекта Flutter

Ответ 1

  1. Удалить существующую папку ios из корня проекта флаттера.
  2. Запустите эту команду flutter create -i swift.

Эта команда создаст только каталог ios с поддержкой swift.

Ответ 2

Ну, я сейчас ищу то же самое, также я включаю поддержку kotlin... так, как включить поддержку swift или kotlin для существующего проекта?

  1. Для быстрой поддержки вам необходимо переместить папку ios за пределы папки вашего проекта, если у вас нет никаких изменений в файлах внутри этой папки (например, info.plist, appDelegate, Podfile или Splash Screens), вы можете удалить ее.,
  2. Запустите команду ниже в терминале /cmd, в корневой папке вашего проекта...
    -i swift для swift
    -a kotlin для kotlin (Вам не нужно ничего удалять раньше)
    Вы можете использовать только один из них или оба, (не забывайте точку "." В конце команды)
    flutter create -i swift -a kotlin .
  1. * Снова примените свои изменения в папке iOS (он же info.plist), теперь в папке Runner, теперь у вас нет файлов main.m и AppDelegate.h, вместо этого у вас есть AppDelegate.swift на быстром языке, так что если вам нужно поставить API там код другой.

  2. * Если вы применили строку -a kotlin, проверьте предыдущие изменения файлов в папке Android (пример: проверьте код миграции AndroidX в build.gradle - gradle.properties, проверьте манифест), потому что команда добавляет некоторый код или полностью изменяет некоторые файлы.

    Также, если вы хотите, вы можете удалить папку android/app/src/main/java, потому что теперь приложение использует папку kotlin

Ответ 3

Малоизвестный секрет - вы можете запустить flutter create. в каталоге приложения Flutter, и он восстановит проект, воссоздав все отсутствующие файлы. Так что, если у вас уже есть проект, созданный с помощью Objective-C и Java, вы можете запустить:

flutter create . -i swift -a kotlin

конвертировать хост-приложение в Kotlin и Swift.

(Игнорируй Kotlin ты хочешь, но мой опыт таков, что просто оставь это там)

Ответ 4

Просто откройте свой PodFile в [Your_Project]/ios/Podfile

И добавьте config.build_settings['SWIFT_VERSION'] = '4.1' в часть post_install. При необходимости измените Swift Version.

Пример:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '4.1'  # required by simple_permission
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

Ответ 5

Для сценария, в котором у вас уже есть модуль ios частично написанный на Objective-C, и теперь вы просто хотите использовать код Swift, тогда я предлагаю вам щелкнуть правой кнопкой мыши на ios в project window и выбрать Open iOS module in XCode из контекстного меню.

context menu

Чем вы можете просто следовать этим инструкциям: https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/importing_swift_into_objective-c

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

Ответ 6

Заголовок моста должен быть создан. Откройте проект с помощью XCode. Затем выберите Файл → Создать → Файл → Файл Swift. При создании файла swift будет отображаться диалоговое окно (поскольку этот файл удален, можно использовать любое имя). XCode спросит вас, хотите ли вы создать Bridging Header, нажмите yes. Убедитесь, что у вас есть use_frameworks! в блоке Runner, в ios/Podfile。 Убедитесь, что в вашем XCode выбран SWIFT_VERSION 4.2 → Настройки сборки Сделать трепетать чистым Перейдите в папку ios, удалите Podfile.lock и Pods, а затем выполните pod install --repo-update

Ответ 7

Сначала вам нужно получить файл AppDelegate.swift Вы можете сделать это, сгенерировав новый проект flutter create -i swift Файл будет расположен по пути: ios/Runner/AppDelegate.swift Или скопируйте приведенный ниже код и создайте файл с тем же именем (взят из нового проекта для флаттера 1.9.x)

import UIKit
import Flutter

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

Затем удалите файлы из ios/Runner: AppDelegate.m, AppDelegate.h, main.m (если он существует). Затем мы заходим в xcode и удаляем в нем эти файлы.

First screenshot

В диспетчере файлов скопируйте файл AppDelegate.swift в ios/Runner. Откройте папку ios/Runner Затем возьмите и перетащите файл AppDelegate.swift в ios/Runner. Перетащите только в xcode!

Second screenshot

Отметьте указанные пункты, после завершения нажмите

Third screenshot

Создать мост

Fourth screenshot

Запустите flutter clean, pod install (в папке ios) по одному. И запустить с помощью flutter run

Готово!