10

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

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

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

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

在此处输入图像描述

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


编辑:

最好的解决方案(如果您可以创建一个新项目)是在设置项目时取消选中“包括对 Android 代码的 Kotlin 支持”。这会自动创建 MainActivity.java。Objective-C 和 Swift 也是如此。如果要使用 Objective-C,请取消选中“包括 Swift 对 iOS 代码的支持”

在此处输入图像描述

4

6 回答 6

31

如果您在这里是因为您正在按照设置firebase_messaging的步骤操作,您可以查看这个答案并在您的文件旁边创建Application.kt文件(而不是 Java)MainActivity.kt。这里是:

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"));
    }
}
于 2020-08-04T13:40:50.477 回答
9
flutter create -a java .

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

于 2021-01-04T12:30:08.727 回答
5

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

public class MainActivity extends FlutterActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this);
  }
}
于 2019-12-07T13:09:03.727 回答
5

屏幕

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

于 2020-04-10T12:57:33.957 回答
2

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

flutter create .

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

flutter create -a kotlin .

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

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

于 2020-12-06T08:02:16.543 回答
0

Flutter 的默认 android 语言是 Kotlin,但是您可以在创建 Flutter 项目时使用以下技术在开始时更改它,

1.

在 Android Studio 中创建 Flutter 项目时

  1. 或者你可以使用,

    颤振创建-a java

于 2021-09-11T08:39:55.160 回答