6 回答
TA贡献1784条经验 获得超8个赞
我遇到了同样的问题,对我来说这个解决方案有效。
从 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'
}
TA贡献1719条经验 获得超6个赞
默认情况下,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 相同)。不过,您需要重新应用自定义更改。
TA贡献1895条经验 获得超3个赞
如果您从 cmd 创建新项目:
flutter create -i objc -a java project_name
注意:-a 表示 android 标志,-i 表示 ios 标志。如果你只想要java,你可以删除-i objc
如果您想转换现有项目:
flutter create -a java .
转换现有项目时,上行末尾有一个点
TA贡献1825条经验 获得超4个赞
flutter create -a java .
在您的项目目录中 运行
flutter create:如果在已存在的项目上运行,这将修复该项目,重新创建丢失的所有文件。
如果目录仅包含生成的示例代码,请删除该kotlin
目录android/src/main
TA贡献1862条经验 获得超6个赞
只是想跟进这个问题,因为今天我必须将 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 文件夹中,因此无需担心删除该文件夹。
希望这可以帮助遇到类似问题的其他人。
TA贡献1803条经验 获得超6个赞
我也在使用 Kotlin /Flutter。
通过最新的 Firebase Flutter 重写,大多数 kt 文件不再需要。切换到 v2 嵌入,您使用 Kotlin 并不重要......
https://firebase.flutter.dev/docs/migration/
添加回答
举报