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

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

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


繁星淼淼
浏览 134回答 6
6回答

青春有我

我遇到了同样的问题,对我来说这个解决方案有效。从 android/app/src/main/kotlin -> android/app/src/main/java 移动文件夹 com.example.test_app (任何名称)将 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); }}删除以下代码 android/app/build.grandle...apply plugin: 'kotlin-android'...sourceSets {    main.java.srcDirs += 'src/main/kotlin'}在同一位置替换以下内容: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'}

慕侠2389804

默认情况下,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 相同)。不过,您需要重新应用自定义更改。

蛊毒传说

如果您从 cmd 创建新项目:flutter create -i objc -a java project_name注意:-a 表示 android 标志,-i 表示 ios 标志。如果你只想要java,你可以删除-i objc如果您想转换现有项目:flutter create -a java .转换现有项目时,上行末尾有一个点

凤凰求蛊

flutter create -a java .在您的项目目录中 运行flutter create:如果在已存在的项目上运行,这将修复该项目,重新创建丢失的所有文件。如果目录仅包含生成的示例代码,请删除该kotlin目录android/src/main

阿波罗的战车

只是想跟进这个问题,因为今天我必须将 Flutter 项目中的默认语言从 Kotlin 更改为 Java,并且遇到了一个小痛点,我发现flutter create -i swift -a java .在我的项目目录中运行可以工作,但导致我的项目名称根据它所在的目录进行更改,如果该目录名称是我的“包名称”的最后一个值(即:com.flutter.app并且目录是“app”),那么D8: Program type already present:当编译。这是由于原始 Kotlin src 的 MainActivity 造成的。我发现我必须(在将我的源代码签入我想在包名称中使用的“app”文件夹中之后),首先删除这个现有android/app/src/main/kotlin文件夹,然后运行flutter create -i swift -a java .命令。请注意,我没有将任何独特的代码添加到 Kotlin 文件夹中,因此无需担心删除该文件夹。希望这可以帮助遇到类似问题的其他人。

慕码人8056858

我也在使用 Kotlin /Flutter。通过最新的 Firebase Flutter 重写,大多数 kt 文件不再需要。切换到 v2 嵌入,您使用 Kotlin 并不重要......https://firebase.flutter.dev/docs/migration/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java