我试图在Flutter项目中创建一个平台通道,以访问Android特定的Java代码。我正在Android Studio中创建一个新的Flutter Application项目,并遵循以下提到的this教程:
1-导航到包含Flutter应用程序的目录,然后选择其中的android文件夹。点击确定。
2-在“项目”视图的java文件夹中打开MainActivity.java文件。
但是,该项目仅包含MainActivity.kt而不包含Java:
我尝试通过使用上下文菜单>“ New”>“ Activity”在java文件夹中手动创建一个新的活动,但是它不起作用。
非常感谢您的帮助。
答案 0 :(得分:17)
如果您在这里是因为您正在按照设置firebase_messaging的步骤进行操作,则可以查看this answer,只需在{旁边创建 var loadData = function () {
..
return $http.get(url).then(function (requestResponse) {
$scope.pageLoaded = true;
......
}
文件(而不是Java) {1}}文件。在这里:
Application.kt
答案 1 :(得分:6)
flutter create -a java .
试试这个命令。和 '。'最后。它代表当前项目目录。 从项目根文件夹应用此命令。 此命令将尝试使用 java 重新创建 android 项目(这将设置您的 MainActiviy.java)。它不会影响当前设置的清单或任何其他与 Firebase 相关的设置。
答案 2 :(得分:4)
创建MainActivity.java并记住将其放置在此方向上: Android / App / src / MainActivity.java
答案 3 :(得分:1)
您只需使用Java代码创建类文件MainActivity.java并删除Kotlin文件即可。它应该可以工作:
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}
答案 4 :(得分:0)
我尝试了@emran的建议,但是当我运行我的应用程序时,出现以下错误
失败:构建失败,并出现异常。
出了什么问题: 任务':app:compileDebugJavaWithJavac'的执行失败。
编译失败;有关详细信息,请参见编译器错误输出。
尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的见解。
8秒内失败 Gradle任务assembleDebug失败,退出代码为1
答案 5 :(得分:0)
如果您的项目缺少mainactivity文件,则可以运行此命令
flutter create .
以上命令将添加与项目相关的所有丢失文件,包括mainActivity.java
如果要更改平台语言,例如将Java更改为android的kotlin,则可以运行此命令
flutter create -a kotlin .
这将创建一个kotlin目录,并添加丢失的文件,并在末尾添加一个点,表示项目名称将不会更改