Android工程集成flutter
官方方案
第一个步: 新建一个标准的APP工程testFlutterInAPP,APP目录下面通过命令创建flutter模块工程
flutter create -t module my_flutter
编译flutter 代码生成Android的AAR文件
$ cd .android/$ ./gradlew flutter:assembleDebug复制代码
AAR 文件生成到.android/Flutter/build/outputs/aar/目录下面
添加Host APP 依赖flutter module 模块,在setting.gradle 文件中加入
include ':app' // assumed existing contentsetBinding(new Binding([gradle: this])) // newevaluate(new File( // new settingsDir.parentFile, // new 'my_flutter/.android/include_flutter.groovy' // new)) 复制代码
app/build.gradle 增加对flutter 工程依赖
// testFlutterInAPP/app/build.gradledependencies { implementation project(':flutter')}复制代码
构建成功后,执行Android的run启动应用 ,点击打开flutter 。
Java 层代码
openFlutter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { View flutterView = Flutter.createView( MainActivity.this, getLifecycle(), "route1" ); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(600, 800); layout.leftMargin = 100; layout.topMargin = 200; addContentView(flutterView, layout); } });复制代码
flutter 代码
import 'dart:ui';import 'package:flutter/material.dart';void main() => runApp(_widgetForRoute(window.defaultRouteName));Widget _widgetForRoute(String route) { switch (route) { case 'route1': return new MyApp(); case 'route2': return new MyApp(); default: return Center( child: Text('Unknown route1 : $route', textDirection: TextDirection.ltr), ); } return new MyApp();}class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new MyHomePage(title: 'Flutter Demo 1111' 'Home Page'), ); }}class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => new _MyHomePageState();}class _MyHomePageState extends State{ int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Center( mainAxisAlignment: MainAxisAlignment.center, children: [ new Text( 'You have pushed the button this many times:', ), new Text( '$_counter', style: Theme.of(context).textTheme.display1, ), ], ), ), floatingActionButton: new FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: new Icon(Icons.add), ), // This trailing comma makes auto-formatting nicer for build methods. ); }}复制代码
运行 flutter 工程 ,进入my_flutter 目录执行flutter run 命令
即可启动flutter ,r == hot reload R == hot restart q == quit d == detach,
或者启动Android应用调试
但是,好像DEBUG无效 ,等下在验证
闲鱼方案
连接