将现有的 Flutter Kotlin 项目转换为 Flutter Java 项目

sha*_*mir 26 java android kotlin flutter

我使用默认值创建了一个 Flutter 项目,即 Android 的 Kotlin 和 iOS 的 Swift。在项目进行到一半时,我需要集成一个需要 Java 的 3rd 方 Android SDK。创建 Flutter 项目后,我可以将其转换为 Java for Android 吗?

我知道我需要使用 Platform Channels 将本机代码与我的 Flutter 应用程序集成,这不是我关心的问题。

小智 25

我有同样的问题,对我来说这个解决方案有效。

  1. 从 android/app/src/main/kotlin -> android/app/src/main/java 移动文件夹 com.example.test_app(您拥有的任何名称)
  2. 将 MainActivity.kt 替换为 Java 版本,或者复制到这里

    package com.example.test_app;
    
    import androidx.annotation.NonNull;
    import io.flutter.embedding.android.FlutterActivity;
    import io.flutter.embedding.engine.FlutterEngine;
    import io.flutter.plugins.GeneratedPluginRegistrant;
    
    public class MainActivity extends FlutterActivity {
     @Override
     public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
     GeneratedPluginRegistrant.registerWith(flutterEngine);
     }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除以下代码 android/app/build.grandle

    ...
    apply plugin: 'kotlin-android'
    ...
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在同一个地方替换以下内容:

    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test:runner:1.1.0'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
    }
    
    Run Code Online (Sandbox Code Playgroud)

    dependencies {
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    }
    
    Run Code Online (Sandbox Code Playgroud)


All*_*len 13

默认情况下,flutter 模板支持使用 Kotlin 编写 Android 代码,或使用 Swift 编写 iOS 代码。要使用 Java 或 Objective-C,请使用 -i 和/或 -a 标志:

在终端运行:flutter create -i objc -a java your_project_name

如果您想更改现有的应用程序平台语言选择,作为一种解决方法,您可以删除 android/ 目录并运行flutter create -a java以获取为新语言选择重新创建的目录(ios/ 和 Swift 相同)。不过,您需要重新应用自定义更改。

  • 你需要指定你的项目的目录。如果您在目录中,只需添加一个“.” 最后:`flutter create -a java 。` (5认同)
  • flutter create -a java 无法正常工作,它返回“没有为输出目录指定选项”,我建议所有人不要删除 android 目录,而是重命名它或将其移动到其他地方进行备份。直到确保新目录创建成功。 (3认同)

jef*_*eff 10

flutter create -a java .在您的项目目录中 运行

flutter create:如果在已经存在的项目上运行,这将修复该项目,重新创建任何丢失的文件。

如果kotlin目录android/src/main只包含生成的示例代码,则删除该目录


Nul*_*e08 8

如果您要从 cmd 创建一个新项目:

flutter create -i objc -a java project_name

注意:-a 表示 android 标志,-i 表示 ios 标志。如果你只想要java,你可以删除-i objc

如果要转换现有项目:

flutter create -a java .

上面一行的末尾有一个点,转换现有项目时

  • 就我而言,我必须添加组织标志 `--org you-app-package(com.example)` (2认同)