专栏首页Android技术分享Android笔记:在原生App中嵌入Flutter

Android笔记:在原生App中嵌入Flutter

本文参考文档Add Flutter to existing apps

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

第一步:新建Flutter module

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

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

第二步:同步Flutter module依赖

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

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

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

第三步:设置JDK版本

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

compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 }

第四步:依赖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>

部分资料图:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 再学一次ConstraintLayout 一些新特性

    首先,ConstraintLayout是一个新的布局,它是直接继承自ViewGroup的,所以在兼容性方面是非常好的.官方称可以兼容到API 9.可以放心食用.

    Android技术干货分享
  • APP 热修复都懂了那你会 SDK 热修复吗?最全的方案在这里!

    某日,解决完一个线上 bug 后,我冒出了一个念头:让我们的 SDK 也具有热修复的能力呗!

    Android技术干货分享
  • 四年Android面试遇到的问题整理

    以下问题的答案均是个人四年来学习实践中整理的,如有不同意见,欢迎斧正。 1.自定义Handler时如何避免内存泄漏

    Android技术干货分享
  • 从0系统学Android--4.2 Fragment 生命周期

    这里给宿主 FragmentBaseActivity 和 静态添加到 Activity 中的 Fragment 的生命周期方法里面添加打印。效果:

    开发者
  • Nodejs学习笔记(七)--- Node.js + Express 构建网站简单示例

    前言   上一篇学习了一些构建网站会用到的一些知识点 https://cloud.tencent.com/developer/article/1020636  ...

    Porschev
  • 【笔记】微信小程序注册、发布流程及首页自动跳转

    为什么今天才发呢?周六下午一下班我们就赶紧去了车站,赶往泰安爬泰山,晚上开始爬,第二天上午下山,吃了饭又赶回济南,睡了一路,回家后洗了个澡倒头又睡着了。

    德顺
  • day37(多进程)- 多进程、守护进程、进程锁

    # obj.start() 实际上是用的 run() 方法 # 但是对象不能直接调用 run() 方法 # 直接调用就立即执行,成了单线程 ...

    少年包青菜
  • java开发中序列化与反序列化起到的作用

    基本概念: 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起...

    用户5166556
  • 进程(一)

    py3study
  • python3–循环语句

    老七Linux

扫码关注云+社区

领取腾讯云代金券