1.创建flutter module项目
在现有的Android项目同级别下创建flutter module:
flutter create -t module ftnkit
目录展示
注意,我上篇文章在iOS项目创建的时候,已经创建过了此模块,因此上面这一步无需再创建。
2.进入flutter的模块文件夹下,编译aar:
cd .android
./gradlew flutter:assembleDebug
3.编译之后,在原项目的settings.gradle中添加如下依赖:
include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'../Demo/ftnkit/.android/include_flutter.groovy'
))
因为我的ftnkit的父文件夹是Demo,因此上面这样写。
4.在主模块app的build.gradle中添加依赖:
implementation project(':flutter')
此时就可以了,但是我这里报错:
Error:com.android.builder.dexing.DexArchiveBuilderException
查了一下是因为未指定JDK版本,因此在app build.gradle android节点下中添加如下内容:
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
这时运行正确了。
5.在工程里新建一个FlutterActivity:
public class FlutterActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FlutterView flutterView = Flutter.createView(this, getLifecycle(), "rout1");
setContentView(flutterView);
}
}
可以当点击页面上某个按钮时,弹出本Flutter页面:
TextView ivFlutter = findViewById(R.id.tvflutter);
ivFlutter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, FlutterActivity.class);
startActivity(intent);
}
});
6.hot reload与调试
attach device:
cd ftnkit
flutter attach
便可以进行hot reload了。
image.png
运行app之后,点击文本,如下结果显示:
结果
以上。