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/
添加回答
舉報