Flutter 项目:缺少 MainActivity.java
Flutter Project: MainActivity.java is missing
我正在尝试在 Flutter 项目中创建平台通道以访问 Android 特定的 java 代码。我正在 Android Studio 中创建一个新的 Flutter Application 项目并遵循 this 教程,其中提到:
1- Navigate to the directory holding your Flutter app, and select the android folder inside it. Click OK.
2- Open the MainActivity.java file located in the java folder in the Project view.
但是,该项目只包含 MainActivity.kt 而不是 Java:
我尝试使用上下文菜单>新建>Activity 在 java 文件夹中手动创建一个新的 activity,但它不起作用。
编辑:
最好的解决方案(如果您可以创建一个新项目)是在设置项目时取消选中“包括对 Android 代码的 Kotlin 支持”。这会自动创建 MainActivity.java。 Objective-C 和 Swift 也是如此。如果要使用 Objective-C,请取消选中“包括 Swift 对 iOS 代码的支持”
您可以简单地使用 Java 代码创建 class 文件 MainActivity.java 并删除 Kotlin 文件。它应该有效:
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}
screen
创建MainActivity.java并记住将它放在这个方向:Android/App/src/MainActivity.java
如果您来到这里是因为您正在按照设置 firebase_messaging, you can look at this answer 的步骤进行操作,只需在您的 MainActivity.kt
旁边创建 Application.kt
文件(而不是 Java)文件。这是:
package com.example.yourapp
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}
override fun registerWith(registry: PluginRegistry?) {
io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}
如果您的项目缺少主活动文件,那么您可以运行此命令
flutter create .
以上命令将为项目支持的所有平台添加与项目相关的任何缺失文件,包括 mainActivity.java 并且如果您想更改平台语言,例如 java 为 kotlin android 然后你可以使用 -a
标志指定语言
flutter create -a kotlin .
这将创建一个 kotlin 目录并添加缺少的文件,在末尾添加一个点表示项目名称不会更改
注意:如果您的项目目录名称包含(space,-,大写字母),则此命令将不起作用,它应严格为小写字母,并用 _ 分隔,而不是 space。
flutter create -a java .
试试这个命令。和 '。'最后。它代表当前项目目录。
从项目根文件夹应用此命令。
此命令将尝试使用 java 重新创建 android 项目(这将设置您的 MainActiviy.java)。它不会影响当前设置清单或任何其他与 firebase 相关的设置。
flutter 的默认 android 语言是 Kotlin,但您可以在创建 flutter 项目时通过以下技巧在开始时更改它,
1.
或者你可以使用,
flutter create -a java
我正在尝试在 Flutter 项目中创建平台通道以访问 Android 特定的 java 代码。我正在 Android Studio 中创建一个新的 Flutter Application 项目并遵循 this 教程,其中提到:
1- Navigate to the directory holding your Flutter app, and select the android folder inside it. Click OK.
2- Open the MainActivity.java file located in the java folder in the Project view.
但是,该项目只包含 MainActivity.kt 而不是 Java:
我尝试使用上下文菜单>新建>Activity 在 java 文件夹中手动创建一个新的 activity,但它不起作用。
编辑:
最好的解决方案(如果您可以创建一个新项目)是在设置项目时取消选中“包括对 Android 代码的 Kotlin 支持”。这会自动创建 MainActivity.java。 Objective-C 和 Swift 也是如此。如果要使用 Objective-C,请取消选中“包括 Swift 对 iOS 代码的支持”
您可以简单地使用 Java 代码创建 class 文件 MainActivity.java 并删除 Kotlin 文件。它应该有效:
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}
screen
创建MainActivity.java并记住将它放在这个方向:Android/App/src/MainActivity.java
如果您来到这里是因为您正在按照设置 firebase_messaging, you can look at this answer 的步骤进行操作,只需在您的 MainActivity.kt
旁边创建 Application.kt
文件(而不是 Java)文件。这是:
package com.example.yourapp
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}
override fun registerWith(registry: PluginRegistry?) {
io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}
如果您的项目缺少主活动文件,那么您可以运行此命令
flutter create .
以上命令将为项目支持的所有平台添加与项目相关的任何缺失文件,包括 mainActivity.java 并且如果您想更改平台语言,例如 java 为 kotlin android 然后你可以使用 -a
标志指定语言
flutter create -a kotlin .
这将创建一个 kotlin 目录并添加缺少的文件,在末尾添加一个点表示项目名称不会更改
注意:如果您的项目目录名称包含(space,-,大写字母),则此命令将不起作用,它应严格为小写字母,并用 _ 分隔,而不是 space。
flutter create -a java .
试试这个命令。和 '。'最后。它代表当前项目目录。 从项目根文件夹应用此命令。 此命令将尝试使用 java 重新创建 android 项目(这将设置您的 MainActiviy.java)。它不会影响当前设置清单或任何其他与 firebase 相关的设置。
flutter 的默认 android 语言是 Kotlin,但您可以在创建 flutter 项目时通过以下技巧在开始时更改它,
1.
或者你可以使用,
flutter create -a java