flutter:android manifest无法读取Kotlin文件(Application.kt)

nwlls2ji  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(159)

我试图暗示firebase云消息到我的应用程序,我已经尝试添加两个MainActvity.kt和Application.kt到我的项目,我没有Kotlin安装在我的项目,所以我下载了Kotlin插件,然后重新启动我的IDE,然后添加.kt文件,但是,当我尝试添加应用程序.kt到我的android清单的应用程序不会构建,并说“应用程序”已停止,但没有它工作正常,我做错了什么?
这是我的申请表.kt代码

package com.example.tamataapp

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) {
        GeneratedPluginRegistrant.registerWith(registry)
    }
}

我的MainActivity.kt

package com.example.tamataapp

import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        GeneratedPluginRegistrant.registerWith(this)
        // getWindow().addFlags(LayoutParams.FLAG_SECURE)
    }
}

这是我的Android清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tamataapp">
    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. "io.flutter.app.FlutterApplication" -->
    <application
        android:name=".Application"
        android:label="tamataapp"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <meta-data
                android:name="com.google.firebase.messaging.default_notification_channel_id"
                android:value="default_notification_channel_id”>Channel ID"/>
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme"
                />
            <!-- Displays an Android View that continues showing the launch screen
                 Drawable until Flutter paints its first frame, then this splash
                 screen fades out. A splash screen is useful to avoid any visual
                 gap between the end of Android's launch screen and the painting of
                 Flutter's first frame. -->
            <meta-data
                android:name="io.flutter.embedding.android.SplashScreenDrawable"
                android:resource="@drawable/launch_background"
                />
            <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
            <action android:name="FLUTTER_NOTIFICATION_CLICK" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
        <service
            android:name=".java.MyFirebaseMessagingService"
            android:exported="false">
        </service>
    </application>
</manifest>
pes8fvy9

pes8fvy91#

很可能Flutter项目尚未配置为支持Android的Kotlin。您可以按照此guide升级Flutter项目。
另一种方法是通过运行flutter upgrade沿着您在IDE中使用的Flutter插件来升级您正在使用的Flutter SDK。在此之后创建一个新的Flutter项目,Android构建应该默认为Kotlin。

相关问题