[英]Convert an existing Flutter Kotlin project to Flutter Java project
I created a Flutter project using default values, which are Kotlin for Android and Swift for iOS. 在项目进行到一半时,我需要集成需要 Java 的第 3 方 Android SDK。 我可以在创建后将 Flutter 项目转换为 Java 用于 Android 吗?
我知道我需要你使用平台通道将本机代码与我的 Flutter 应用程序集成,这不是我关心的问题。
我有同样的问题,对我来说这个解决方案有效。
将 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' }
By default flutter template supports writing Android code using Kotlin, or iOS code using Swift. 要使用 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.
在您的项目目录中
flutter 创建:如果在已经存在的项目上运行,这将修复项目,重新创建丢失的所有文件。
如果它只包含生成的示例代码,请删除android/src/main
中的kotlin
目录
如果您从 cmd 创建一个新项目:
flutter create -i objc -a java project_name
注意:-a 表示 android 标志,-i 表示 ios 标志。 如果你只想要 java,你可以去掉-i objc
如果要转换现有项目:
flutter create -a java.
转换现有项目时,上述行末尾有一个点
Just wanted to follow up with this, as I had to change the default language in my Flutter project from Kotlin to Java today, and ran into a little pain point, where I found that running flutter create -i swift -a java.
在我的项目目录中工作,但导致我的项目名称根据它所在的目录而更改,如果该目录名称是我的“包名称”的最后一个值(即:com.flutter.app 并且目录是“ app"),然后抛出D8: Program type already present:
编译时出错。
这是由于原始 Kotlin src 的 MainActivity。 我发现我必须(在将我的源代码签入我想在 package 名称中使用的这个“app”文件夹之后) ,首先删除这个现有的android/app/src/main/kotlin
文件夹,然后运行flutter create -i swift -a java.
命令。
请注意,我没有向 Kotlin 文件夹添加任何唯一代码,因此无需担心删除此文件夹。
希望这可以帮助其他遇到类似问题的人。
我也在 Kotlin /Flutter 上。
使用最新的 Firebase Flutter 重写,不再需要大多数 kt 文件。 切换到 v2 嵌入,使用 Kotlin 并不重要...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.