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/...

相关推荐
执明wa9 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
404_coder10 小时前
源码视角下的 Android 开机流程:从 Zygote、SystemServer 到 Launcher
android
二流小码农10 小时前
鸿蒙开发:以登录案例了解代码架构MVVM
android·ios·harmonyos
用户693717500138411 小时前
从代码生产者到 AI 协作者:软件工程师的角色重构
android·前端·后端
GitLqr11 小时前
别在 Flutter 的 main() 里乱锁屏幕方向,小心 iPad 分屏功能被你搞没了
android·flutter·ios
sg_knight11 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
爱笑鱼11 小时前
Binder(四):ioctl(BINDER_WRITE_READ) 之后,事务怎样到达目标进程?
android
AFinalStone11 小时前
Android 7系统休眠唤醒(二)开机全链路—BootROM到Launcher
android·电源管理·休眠唤醒
Mr YiRan12 小时前
Android NDK开发之统计到未被回收的图片
android