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

2022-09-01 11:24:47

我使用默认值创建了一个 Flutter 项目,这些默认值是 Android 的 Kotlin 和 iOS 的 Swift。在项目的中途,我需要集成一个需要Java的第三方Android SDK。我可以在创建后将Flutter项目转换为Java for Android吗?

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


答案 1

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

  1. 将文件夹从 android/app/src/main/kotlin com.example.test_app(您拥有的任何名称)移动到 > android/app/src/main/java
  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);
     }
    }
    
  3. 删除以下代码 android/app/build.grandle

    ...
    apply plugin: 'kotlin-android'
    ...
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    
  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'
    }
    

    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'
    }
    

答案 2

默认情况下,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也是如此)。但是,您需要重新应用自定义更改。


推荐