在原生App中嵌入Flutter

栏目: Android · 发布时间: 6年前

内容简介:本文参考文档首先有一个可以运行的原生项目注意:最后一个参数最好写全路径!

本文参考文档 Add Flutter to existing apps

首先有一个可以运行的原生项目

  • 第一步:新建Flutter module

    Terminal进入到项目根目录,执行 flutter create -t module ‘module名字’ 例如: flutter create -t module flutter-native

    执行完毕,就会发现项目目录下生成了一个module

在原生App中嵌入Flutter
  • 第二步:同步Flutter module依赖

    进入到新生成的Flutter module目录下的.android目录下,命令是 cd .android/ ,然后执行 gradlew flutter:assembleDebug ,mac下 ./gradlew flutter:assembleDebug

    这过程根据网络情况,可能有点长。

    结束之后在 .android/Flutter/build/outputs/aar/ 目录下会生成 flutter-debug.aar

    在原生App中嵌入Flutter
  • 第三步:设置JDK版本

    在app的build.gradle文件中加入:

    compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 }

    在原生App中嵌入Flutter
  • 第四步:依赖Flutter module

    settings.gradle 中加入

include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(
        settingsDir.parentFile,
        'FlutterNativeApplication/flutter_native/.android/include_flutter.groovy'
))
复制代码

注意:最后一个参数最好写全路径!

在app/build.gradle中

dependencies {
    ……
    implementation project(':flutter')
}
复制代码

到此准备过程结束,写代码测试一下,我使用的是Fragment方式。当然也有View的方式。

MainActivity.kt ↓

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
        setContentView(R.layout.activity_main)
        val tx = supportFragmentManager.beginTransaction()
        tx.replace(R.id.content, Flutter.createFragment("route"))
        tx.commit()
    }
}
复制代码

activity_main.xml ↓

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></FrameLayout>

</android.support.constraint.ConstraintLayout>
复制代码
在原生App中嵌入Flutter

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

爆发

爆发

[美] 艾伯特-拉斯洛·巴拉巴西 / 马慧 / 中国人民大学出版社 / 2012-6 / 59.90元

1. 本书是一本超越《黑天鹅》的惊世之作。如果说塔勒布认为人类行为是随机的,都是小概率事件,是不可以预测的;那么全球复杂网络权威Barabasi则认为,人类行为93%是可以预测的。 2. Barabasi的研究是在人类生活数字化的大数据时代基础上进行的,移动电话、网络以及电子邮件使人类 行为变得更加容易量化,将我们的社会变成了一个巨大的数据库。他认为,人类正处在一个聚合点上,在这里数据、科学......一起来看看 《爆发》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器