Flutter 项目:缺少 MainActivity.java

Hem*_*Odd 10 java android android-studio flutter flutter-platform-channel

我正在尝试在 Flutter 项目中创建一个平台通道来访问特定于 Android 的 java 代码。我正在 Android Studio 中创建一个新的 Flutter 应用程序项目,并遵循教程,其中提到:

1- 导航到 Flutter 应用所在的目录,然后选择其中的 android 文件夹。单击确定。

2- 打开位于项目视图中 java 文件夹中的 MainActivity.java 文件。

但是,该项目仅包含 MainActivity.kt 而不是 Java:

在此处输入图片说明

我尝试使用上下文菜单>新建>活动在java文件夹中手动创建一个新活动,但它不起作用。


编辑:

对此的最佳解决方案(如果您可以创建新项目)是在设置项目时取消选中“Include Kotlin support for Android code”。这会自动创建 MainActivity.java。Objective-C 和 Swift 也是如此。如果您想使用 Objective-C,请取消选中“Include Swift support for iOS code”

在此处输入图片说明

J. *_*Saw 30

如果您在这里是因为您正在遵循设置firebase_messaging的步骤,您可以查看此答案Application.kt在您的MainActivity.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"));
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

flutter create -a java .
Run Code Online (Sandbox Code Playgroud)

试试这个命令。和 '。' 最后。它代表当前项目目录。从项目根文件夹应用此命令。此命令将尝试使用 java 重新创建 android 项目(这将设置您的 MainActiviy.java)。它不会影响当前设置的清单或任何其他与 Firebase 相关的设置。

  • 如果项目已经有minactivity.kt,则需要手动删除。在该命令之后或之后。 (3认同)

Emr*_*ran 5

您可以简单地使用 Java 代码创建类文件 MainActivity.java 并删除 Kotlin 类文件。它应该工作:

public class MainActivity extends FlutterActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this);
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 需要进口什么?使用“this”似乎不再正确。 (6认同)

小智 5

屏幕

创建 MainActivity.java 并记住把它放在这个方向:Android/App/src/MainActivity.java