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

相关推荐
诺诺Okami1 小时前
Android Framework-Launcher-UI和组件
android
潘潘潘2 小时前
Android线程间通信机制Handler介绍
android
潘潘潘2 小时前
Android动态链接库So的加载
android
潘潘潘3 小时前
Android多线程机制简介
android
CYRUS_STUDIO4 小时前
利用 Linux 信号机制(SIGTRAP)实现 Android 下的反调试
android·安全·逆向
CYRUS_STUDIO5 小时前
Android 反调试攻防实战:多重检测手段解析与内核级绕过方案
android·操作系统·逆向
黄林晴8 小时前
如何判断手机是否是纯血鸿蒙系统
android
火柴就是我8 小时前
flutter 之真手势冲突处理
android·flutter
Speed1239 小时前
`mockito` 的核心“打桩”规则
flutter·dart
法的空间9 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios