0
点赞
收藏
分享

微信扫一扫

安卓原生工程集成Flutter工程

慕犹清 2022-02-25 阅读 67


一、创建安卓和Flutter工程



创建安卓原生工程(语言选择为Kotlin,工程命名为:android_demo)
安卓原生工程集成Flutter工程_android



创建Flutter工程(下面是采用IntelliJ IDEA创建的,语言选择为Kotlin/Swift,工程命名为:flutter_demo)
安卓原生工程集成Flutter工程_flutter_02



二、修改Flutter工程

  1. 在Flutter工程下,编辑​​android/app/build.gradle​​:
  • 将工程改为library工程
apply plugin: 'com.android.application'

改为

apply plugin: 'com.android.library'
  • 删除android节点下defaultConfig下面的applicationId配置
    最终代码(关键代码节选):
apply plugin: 'com.android.library'
...
android {
...
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
}
  1. 在Flutter工程下,打开android/app/src/main/AndroidManifest.xml文件

  • 删除application标签里面的属性;
  • 将activity的路径修改为完整路径;
  • 删除intent-filter节点.
    安卓原生工程集成Flutter工程_android_03
    最终代码如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_demo">
<application>
<activity
android:name="com.example.flutter_demo.MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true" />
</activity>
</application>
</manifest>
  1. 在Flutter工程下,修改​​MainActivity​​文件
  • 在import代码中增加:
import io.flutter.view.FlutterMain
  • 在onCreate方法下增加如下代码:
FlutterMain.startInitialization(this.applicationContext)

最终代码如下:

import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.view.FlutterMain
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
FlutterMain.startInitialization(this.applicationContext)
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
}
}

三、修改安卓原生工程

  1. 打开安卓工程下​​settings.gradle​​​文件,增加如下配置:
    (下面Flutter路径必须是相对路径,不能用绝对路径)
include ':app', ':flutter_demo'
project(':flutter_demo').projectDir = new File(settingsDir, '../flutter_demo/android/app')
  1. 在安卓工程下​​local.properties​​中,增加如下配置(可以从Flutter工程下android目录下local.properties文件中拷贝):
flutter.sdk=自己的flutterSDK路径
  1. 修改安卓工程下的build.gradle 文件:
  • 在android节点下增加如下内容:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
  • 在dependencies节点下增加依赖:
implementation project(“:flutter_demo”)

最终代码(关键代码节选):

android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation project(":flutter_demo")
...
}
  1. 在安卓原生工程中打开Flutter工程界面:
val componentName = ComponentName(this, "com.example.flutter_demo.MainActivity")
val intent = Intent().setComponent(componentName)
startActivity(intent)
  1. 同步一下安卓原生项目,运行一下.
    安卓原生工程集成Flutter工程_android_04

demo源代码

​​https://gitee.com/cxyzy1/android_with_flutter​​



举报

相关推荐

0 条评论