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

相关推荐
拥小抱8 小时前
Compose 知识点
android
文章永久免费只为良心8 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
AIsoft_86899 小时前
学术讲座录音如何整理?录音APP可行吗
android·iphone
Patrick在香港11 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
海雅达手持终端PDA12 小时前
工业手持终端的“去手机化”演进:看海雅达如何以“同轴扫摄”终结工程妥协,重塑工业PDA新范式
android·物联网·智能手机·硬件工程·能源·制造·iot
booboosui13 小时前
删掉一个住在本机的 agent:8 处要清,顺序不能反
android
hcgeng14 小时前
Android获取崩溃日志
android
aqi0014 小时前
AI编程让鸿蒙开发电子书APP更加快捷
android·华为·harmonyos·鸿蒙·harmony
GY-9314 小时前
【Android】Android Studio 中的协程
android