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>

以上就是Android如何在原生App中嵌入Flutter的详细内容,更多关于Android 原生App中嵌入Flutter的资料请关注我们其它相关文章!

(0)

相关推荐

  • 详解Flutter 调用 Android Native 的方法

    Flutter 调用 Android Native 的方法,是通过MethodChannel的方式来实现的: 在Android端: 创建一个Class,实现FlutterPlugin和MethodCallHandler接口 重写onAttachedToEngine(),onDetachedFromEngine(),onMethodCall() onAttachedToEngine()中,根据自定义的CHANNEL_NAME创建MethodChannel, onDetachedFromEngine

  • 新版Flutter集成到已有Android项目的实现

    FlutterSDK升级后,我们发现不能按照原来的方式集成到已有Android项目中了,因为没有了Flutter这个类,通过阅读源码我找到了新的使用方式. 一.创建Flutter Module 在已有Android工程中集成flutter,可以使用AndroidStudio的new Flutter Module实现,方便快捷. 找到FlutterModule,一连串的next操作即可 创建完成后我们的项目中会多一个叫做flutter的module 并且在项目的setting.gradle文件中会

  • Flutter调用Android和iOS原生代码的方法示例

    前言 本文主要给大家介绍了关于Flutter调用Android和iOS原生代码的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 分3个大步骤: 1.在flutter中调用原生方法 2.在Android中实现被调用的方法 3.在iOS中实现被调用的方法 在flutter中调用原生方法 场景,这里你希望调用原生方法告诉你一个bool值,这个值的意义你可以随意定,这里表示的意义是是否是中国用户. 你可以在flutter中设计好要调用的方法名称,这里就叫 isChinese 请

  • android使用flutter的ListView实现滚动列表的示例代码

    现如今打开一个 App,比如头条.微博,都会有长列表,随着我们不断地滑动,视窗内的内容也会不断地更新.今天就用 Flutter 实现一下这种效果. 这里的表现其实就相当于有一个固定长度的容器,然后超出的内容是不可见的,只有当你向上或向下滑动屏幕时,视窗外看不见的内容才会出现在视窗中.如果在 web 开发时,是需要容器加上样式 overflow: auto; 要想用 Flutter 实现,其实也是很简单的,因为 Flutter 为我们提供了 ListView 组件. ListView 主要有以下几

  • android studio 3.6.1升级后如何处理 flutter问题

    前提条件介绍 1.android-studio-3.6.1 死丢丢 配置了dart 和flutter插件 在 3.5.3时 成功运行过flutter工程 2.flutter 版本 Flutter 1.12.13+hotfix.8 • channel stable • https://github.com/flutter/flutter.git Framework • revision 0b8abb4724 (5 weeks ago) • 2020-02-11 11:44:36 -0800 Eng

  • Android Studio下Flutter环境搭建图文教程

    一.Flutter介绍 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费.开源的. 二.环境搭建 Flutter 的环境搭建⼗分省⼼,特别对应Android开发者⽽⾔,只是在AndroidStuido上安装 插件,并下载flutterSdk到本地,配置在环境变量即可,其实 中⽂⽹的搭建Futter开发环境 已经很贴⼼详细,从

  • Flutter 和 Android 互相传递数据的实现

    (一)Android代码设置 1,打开Android Studio 创建一个应用程序,包名dev.android.book 2, 创建一个MyApplication ,应用在AndroidManifest.xml文件中的application的android:name属性上 3,创建FlutterEngine的实例,然后把这个实例添加到缓存的FlutterEngine当中 4,创建MethodChannel的实例,指定一个此实例的唯一字符串,例如dev.android.book/add 5, 设

  • Android studio 切换flutterSDK之后报错及解决办法(推荐)

    Windows系统上面修改了flutter sdk的环境变量地址之后Android studio上面运行flutter项目就会报错 类似于: Could not read script XXX\flutter.gradle' as it does not exist. 还有这样:flutter:Warning! The 'flutter' tool you are currently running is from a different Flutter repository 解决办法: 1.首

  • Flutter下Android Studio配置gradle的方法

    一.失败的经历:手动配置gradle 下载gradle包http://gradle.org/gradle-download/ Mac Finder->Applications/应用程序->Android Studio右键显示包内容.继续打开Contents文件夹,正常情况下会有一个gradle文件夹,将下载解压之后的文件复制到这个文件夹下.如果Contents文件夹下没有gradle文件夹,创建gradle文件夹,继续后面的操作 配置gradle环境路径 打开终端,打开系统环境配置文件vim

  • 解决flutter 错误: 程序包androidx.lifecycle不存在问题

    发生于编译时:错误: 程序包androidx.lifecycle不存在 先贴一段报错log,让你更加准确的匹配问题所在,对症下药,药,切克闹. D:\study\flutter\flutter\.pub-cache\hosted\pub.flutter-io.cn\flutter_plugin_android_lifecycle-1.0.8\android\src\main\java\io\flutter\embedding\engine\plugins\lifecycle\FlutterLif

  • Flutter Android端启动白屏问题的解决

    问题描述 Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长. 问题分析 其实启动白屏的问题在Android原生应用上也是一个常见问题,大致是因为从用户点击 Launcher Icon 到应用首页显示之间,Android 系统在完成应用的初始化工作,其流程如下: 在 Flutter Android 端上,白屏的问题会更加严重,因为除了 Android 应用启动耗时外,还增加了 Flutter 初始化耗时. 直到 Fl

  • Flutter中嵌入Android 原生TextView实例教程

    前言 本篇文章 中写到的是 flutter 调用了Android 原生的 TextView 案例 添加原生组件的流程基本上可以描述为: 1 android 端实现原生组件PlatformView提供原生view 2 android 端创建PlatformViewFactory用于生成PlatformView 3 android 端创建FlutterPlugin用于注册原生组件 4 flutter 平台嵌入 原生view 1 创建原生组件 创建在fLutter工程时会生成几个文件夹,lib是放fl

  • Android Studio 下 Flutter 开发环境搭建,Flutter,Dart 插件安装,Flutter SDK 安装,环境变量配置,开发环境检查

    I . Flutter 学习资料 Flutter 学习资料 : ① 官方文档 : https://flutter.dev/docs ② Flutter Android 开发者文档 : https://flutter.dev/docs/get-started/flutter-for/android-devs ② Flutter 插件库 : https://pub.dev/ II . Flutter 开发环境搭建 Flutter 开发环境搭建 : ① Android Studio : https:/

随机推荐