Flutter Project: MainActivity.java is missing

HemOdd picture HemOdd · Dec 7, 2019 · Viewed 18.6k times · Source

I am trying to create a Platform Channel in a Flutter project to access Android-specific java code. I am creating a new Flutter Application project in Android Studio and following this tutorial which mentions:

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.

However, the project only contains MainActivity.kt and not Java:

enter image description here

I tried creating a new activity inside the java folder manually by using context menu>New>Activity but it doesn't work.


EDIT:

The best solution for this (if you can create a new project) is to uncheck "Include Kotlin support for Android code" when you are setting up the project. This automatically creates MainActivity.java. The same goes for Objective-C and Swift. If you want to use Objective-C, uncheck "Include Swift support for iOS code"

enter image description here

Answer

J. Saw picture J. Saw · Aug 4, 2020

If you are here because you are following the steps for setting up firebase_messaging, you can look at this answer and just create the Application.kt file (instead of Java) next to your MainActivity.kt file. Here it is:

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"));
    }
}