繁体   English   中英

Flutter 项目:缺少 MainActivity.java

[英]Flutter Project: MainActivity.java is missing

我正在尝试在 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”

在此处输入图片说明

如果您在这里是因为您正在按照设置firebase_messaging的步骤操作,您可以查看此答案并在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 -a java .

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

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

public class MainActivity extends FlutterActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this);
  }
}

屏幕

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

如果您的项目在这种情况下缺少 mainactivity 文件,您可以运行此命令

flutter create .

上面的命令将为您的项目支持的所有平台添加与您的项目相关的任何丢失的文件,包括 mainActivity.java 并且如果您想更改平台语言,例如 java 到 kotlin for android 那么您可以使用-a指定语言旗帜

flutter create -a kotlin .

这将创建一个 kotlin 目录并添加丢失的文件,在末尾添加一个点表示不会更改项目名称

注意:如果您的项目目录名称有(空格,-,大写字母),则此命令将不起作用,它应该严格使用小写字母并用 _ 而不是空格分隔。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM