您当前的位置: 首页 >  flutter

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

安卓原生工程集成Flutter工程

蓝不蓝编程 发布时间:2019-10-11 11:34:44 ,浏览量:0

一、创建安卓和Flutter工程
  1. 创建安卓原生工程(语言选择为Kotlin,工程命名为:android_demo)

  2. 创建Flutter工程(下面是采用IntelliJ IDEA创建的,语言选择为Kotlin/Swift,工程命名为:flutter_demo)

二、修改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节点. 最终代码如下:

    
        
            
        
    

  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. 同步一下安卓原生项目,运行一下.
demo源代码

https://gitee.com/cxyzy1/android_with_flutter

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0853s