为了账号安全,请及时绑定邮箱和手机立即绑定

将现有 Flutter Kotlin 项目转换为 Flutter Java 项目

将现有 Flutter Kotlin 项目转换为 Flutter Java 项目

繁星淼淼 2024-01-05 10:51:58
我使用默认值创建了一个 Flutter 项目,即 Android 的 Kotlin 和 iOS 的 Swift。在项目进行到一半时,我需要集成需要 Java 的第 3 方 Android SDK。我可以在创建 Flutter 项目后将其转换为 Java for Android 吗?我知道我需要使用 Platform Channels 将本机代码与我的 Flutter 应用程序集成,这不是我关心的。
查看完整描述

6 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

我遇到了同样的问题,对我来说这个解决方案有效。

从 android/app/src/main/kotlin -> android/app/src/main/java 移动文件夹 com.example.test_app (任何名称)

将 MainActivity.kt 替换为 Java 版本,或复制到此处


package com.example.test_app;


import androidx.annotation.NonNull;

import io.flutter.embedding.android.FlutterActivity;

import io.flutter.embedding.engine.FlutterEngine;

import io.flutter.plugins.GeneratedPluginRegistrant;


public class MainActivity extends FlutterActivity {

 @Override

 public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {

 GeneratedPluginRegistrant.registerWith(flutterEngine);

 }

}

删除以下代码 android/app/build.grandle


...

apply plugin: 'kotlin-android'

...

sourceSets {

    main.java.srcDirs += 'src/main/kotlin'

}

在同一位置替换以下内容:


dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'androidx.test:runner:1.1.0'

    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'

}


dependencies {

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'com.android.support.test:runner:1.0.2'

    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}


    查看完整回答
    反对 回复 2024-01-05
    ?
    慕侠2389804

    TA贡献1719条经验 获得超6个赞

    默认情况下,flutter 模板支持使用 Kotlin 编写 Android 代码,或使用 Swift 编写 iOS 代码。要使用 Java 或 Objective-C,请使用 -i 和/或 -a 标志:

    在终端中运行:flutter create -i objc -a java your_project_name.

    如果您想更改现有的应用程序平台语言选择,作为解决方法,您可以删除 android/ 目录并运行flutter create -a java以重新创建新语言选择的目录(ios/ 和 Swift 相同)。不过,您需要重新应用自定义更改。


    查看完整回答
    反对 回复 2024-01-05
    ?
    蛊毒传说

    TA贡献1895条经验 获得超3个赞

    如果您从 cmd 创建新项目:

    flutter create -i objc -a java project_name

    注意:-a 表示 android 标志,-i 表示 ios 标志。如果你只想要java,你可以删除-i objc

    如果您想转换现有项目:

    flutter create -a java .

    转换现有项目时,上行末尾有一个点


    查看完整回答
    反对 回复 2024-01-05
    ?
    凤凰求蛊

    TA贡献1825条经验 获得超4个赞

    flutter create -a java .在您的项目目录中 运行

    flutter create:如果在已存在的项目上运行,这将修复该项目,重新创建丢失的所有文件。

    如果目录仅包含生成的示例代码,请删除该kotlin目录android/src/main


    查看完整回答
    反对 回复 2024-01-05
    ?
    阿波罗的战车

    TA贡献1862条经验 获得超6个赞

    只是想跟进这个问题,因为今天我必须将 Flutter 项目中的默认语言从 Kotlin 更改为 Java,并且遇到了一个小痛点,我发现flutter create -i swift -a java .在我的项目目录中运行可以工作,但导致我的项目名称根据它所在的目录进行更改,如果该目录名称是我的“包名称”的最后一个值(即:com.flutter.app并且目录是“app”),那么D8: Program type already present:当编译。

    这是由于原始 Kotlin src 的 MainActivity 造成的。我发现我必须(在将我的源代码签入我想在包名称中使用的“app”文件夹中之后),首先删除这个现有android/app/src/main/kotlin文件夹,然后运行flutter create -i swift -a java .命令。

    请注意,我没有将任何独特的代码添加到 Kotlin 文件夹中,因此无需担心删除该文件夹。

    希望这可以帮助遇到类似问题的其他人。


    查看完整回答
    反对 回复 2024-01-05
    ?
    慕码人8056858

    TA贡献1803条经验 获得超6个赞

    我也在使用 Kotlin /Flutter。

    通过最新的 Firebase Flutter 重写,大多数 kt 文件不再需要。切换到 v2 嵌入,您使用 Kotlin 并不重要......

    https://firebase.flutter.dev/docs/migration/


    查看完整回答
    反对 回复 2024-01-05
    • 6 回答
    • 0 关注
    • 115 浏览

    添加回答

    举报

    0/150
    提交
    取消
    意见反馈 帮助中心 APP下载
    官方微信