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

相关推荐
xiangpanf7 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
robotx10 小时前
安卓线程相关
android
消失的旧时光-194310 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
dalancon11 小时前
VSYNC 信号流程分析 (Android 14)
android
dalancon11 小时前
VSYNC 信号完整流程2
android
dalancon11 小时前
SurfaceFlinger 上帧后 releaseBuffer 完整流程分析
android
用户693717500138412 小时前
不卷AI速度,我卷自己的从容——北京程序员手记
android·前端·人工智能
程序员Android13 小时前
Android 刷新一帧流程trace拆解
android
墨狂之逸才13 小时前
解决 Android/Gradle 编译报错:Comparison method violates its general contract!
android
阿明的小蝴蝶14 小时前
记一次Gradle环境的编译问题与解决
android·前端·gradle