Android项目如何添加Flutter Module

软件各个版本号

Android Studio的版本是Ladybug Feature Drop,patch版本是2024.2.2。Flutter的版本如下图所示:

gradle-wrapper.properties中定义的gradle的版本是:gadle-8.10.2-bin.zip。

Android项目中集成Flutter模块

Flutter模块的集成方式

Flutter可以作为源代码Gradle子项目或AAR逐个嵌入到您现有的Android应用程序中。可以使用带有 Flutter插件的Android Studio IDE或手动完成集成流程。首先需要创建Flutter Module,可以使用命令行,也可以使用Android Studio。注意:Flutter Module的目录和Android项目中的app Module是在同一个父目录下面,也就是说Flutter Module和app Module是在Android项目的同一个层级。Flutter要求你的项目声明与Java 11或更高版本兼容。app Module需要声明Java版本,示例如下:

ini 复制代码
android{
compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }
}
 

Flutter Module如何编译成AAR

Flutter Module编译成aar,命令行到Flutter Module路径下,然后执行flutter build aar命令。效果图如下:

根据上图中的步骤添加相应的配置,但上面的配置有需要调整的地方。命令执行完成之后,生成的aar相关的目录和信息如下图所示:

settings.gradle.kt增加相应的maven配置

scss 复制代码
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        //下面两行是新增的
        maven("https://storage.googleapis.com/download.flutter.io")
        maven(url="/Users/caicai/AndroidStudioProjects/MyApplication/FlutterAddDemo/flutter_module/build/host/outputs/repo")
    }
}

app mudule增加相应的配置

在app mudule中buildTypes增加配置:

javascript 复制代码
create("profile") {
  initWith(getByName("debug"))
}

在app mudule中dependencies增加如下配置:

csharp 复制代码
    debugImplementation ("com.example.flutter_module:flutter_debug:1.0")
    add("profileImplementation", "com.example.example_one:flutter_profile:1.0")
    releaseImplementation ("com.example.flutter_module:flutter_release:1.0")

app module中增加FlutterActivity的配置

app的manifest文件中增加FlutterActivity的配置,示例代码如下:

ini 复制代码
 <activity
            android:name="io.flutter.embedding.android.FlutterActivity"
            android:theme="@style/Theme.FlutterAddDemo"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize"
            />

FlutterActivity的调用

scss 复制代码
findViewById<Button>(R.id.button).setOnClickListener {
            // Using a new FlutterEngine.
            startActivity(
                FlutterActivity.createDefaultIntent(this)
            )
        }

项目效果

总结

希望文章对您有所帮助,如有错误,请不吝指出。

参考资料

docs.flutter.dev/add-to-app

docs.flutter.dev/add-to-app/...

docs.flutter.dev/add-to-app/...

相关推荐
AirDroid_cn1 分钟前
iQOO手机怎样相互远程控制?其他手机可以远程控制iQOO吗?
android·智能手机·iphone·远程控制·远程控制手机·手机远程控制手机
YoungHong199223 分钟前
如何在 Android Framework层面控制高通(Qualcomm)芯片的 CPU 和 GPU。
android·cpu·gpu·芯片·高通
xzkyd outpaper26 分钟前
Android 事件分发机制深度解析
android·计算机八股
技术蔡蔡28 分钟前
Flutter和Firebae简单的聊天应用
flutter·全栈·firebase
努力学习的小廉39 分钟前
深入了解linux系统—— System V之消息队列和信号量
android·linux·开发语言
程序员江同学2 小时前
Kotlin/Native 编译流程浅析
android·kotlin
移动开发者1号2 小时前
Kotlin协程与响应式编程深度对比
android·kotlin
花花鱼11 小时前
android studio 设置让开发更加的方便,比如可以查看变量的类型,参数的名称等等
android·ide·android studio
alexhilton13 小时前
为什么你的App总是忘记所有事情
android·kotlin·android jetpack