Flutter 项目:缺少 MainActivity.java
Posted
技术标签:
【中文标题】Flutter 项目:缺少 MainActivity.java【英文标题】:Flutter Project: MainActivity.java is missing 【发布时间】:2020-04-01 04:51:57 【问题描述】:我正在尝试在 Flutter 项目中创建一个平台通道来访问特定于 android 的 java 代码。我正在 Android Studio 中创建一个新的 Flutter 应用程序项目,并遵循 this 教程,其中提到:
1- 导航到保存 Flutter 应用程序的目录,然后选择其中的 android 文件夹。点击确定。
2- 在项目视图中打开位于 java 文件夹中的 MainActivity.java 文件。
但是,该项目只包含 MainActivity.kt 而不是 Java:
我尝试使用上下文菜单>New>Activity 在 java 文件夹中手动创建一个新活动,但它不起作用。
编辑:
最好的解决方案(如果您可以创建一个新项目)是在设置项目时取消选中“包括对 Android 代码的 Kotlin 支持”。这会自动创建 MainActivity.java。 Objective-C 和 Swift 也是如此。如果你想使用 Objective-C,取消勾选“Include Swift support for ios code”
【问题讨论】:
创建项目时,您可以选择 Android 原生语言。默认值最近从 Java 更改为 Kotlin。如果您更喜欢 Java,只需在创建新项目时选择它即可。 【参考方案1】:如果您在这里是因为您按照设置firebase_messaging 的步骤操作,您可以查看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"));
【讨论】:
【参考方案2】:flutter create -a java .
试试这个命令。和 '。'最后。它代表当前项目目录。 从项目根文件夹应用此命令。 此命令将尝试使用 java 重新创建 android 项目(这将设置您的 MainActiviy.java)。它不会影响当前设置清单或任何其他与 Firebase 相关的设置。
【讨论】:
如果项目已经有minactivity.kt,则需要手动删除。在此命令之后或之后。【参考方案3】:您可以简单地使用 Java 代码创建类文件 MainActivity.java 并删除 Kotlin 类文件。它应该工作:
public class MainActivity extends FlutterActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
【讨论】:
需要什么进口?使用this
似乎不再正确。
导入 io.flutter.embedding.engine.FlutterEngine; .....然后 GeneratedPluginRegistrant.registerWith(new FlutterEngine(this));【参考方案4】:
screen
创建 MainActivity.java 并记住把它放在这个方向:Android/App/src/MainActivity.java
【讨论】:
【参考方案5】:如果您的项目在这种情况下缺少 mainactivity 文件,您可以运行此命令
flutter create .
上述命令将为您的项目支持的所有平台添加与您的项目相关的任何缺失文件,包括 mainActivity.java 并且如果您想更改平台语言,例如 java 到 kotlin for android,那么您可以使用指定语言-a
标志
flutter create -a kotlin .
这将创建一个 kotlin 目录并添加缺少的文件,在末尾添加一个点表示项目名称不会被更改
注意:如果您的项目目录名称有(空格、-、大写字母),则此命令将不起作用,它应该严格使用小写并用_而不是空格分隔。
【讨论】:
【参考方案6】:flutter 的默认安卓语言是 Kotlin,但是您可以在创建 Flutter 项目时使用以下技术在开始时更改它,
1.
或者你可以使用,
flutter create -a java
【讨论】:
以上是关于Flutter 项目:缺少 MainActivity.java的主要内容,如果未能解决你的问题,请参考以下文章
升级 gradle 时,Flutter 项目无法构建。错误:类型“FlutterTask”属性“资产”缺少输入或输出注释[关闭]
Flutter Android Studio 中缺少设备文件资源管理器选项
颤振项目的 Android Studio 中缺少“图像资产”选项
错误 App Store Connect:“ITMS-90683:Info.plist 中缺少目的字符串”和“ITMS-90078:缺少推送通知权利”[Flutter]