推荐以aar方式进行构建,这样能够作到无侵入原项目android
android 项目结构git
assets目录下 flutter_assetsgithub
首先要根据如下方式进行集成 flutter_modelbash
这样方式可能会报 vm 的错误要经过如下命令进行打包框架
gradlew clean
cd flutter_model
flutter packages get
flutter clean
cd .android
gradlew clean
gradlew assemble
复制代码
经过以上方式就能够进行混合打包了。 若是项目中用到gitlab 自动打包(ci)你能够把.android 目录下 flutter 下bulid 中的aar 放到主工程中。ide
(先经过gradle引用方式进行混合) 项目构建完毕咱们这边经过 flutter_boost 进行混合搭建项目 具体详情请参考阿里的事例。gitlab
咱们会在主项目发现会生成 这三个 modelgradle
flutter_boostui
xservice_kit(boost 是经过service 方式进行链接的)this
flutter
若是经过flutter_boost方式 逻辑代码已经写好就能够把上面的三个库打成aar放到主项目中进行构建
具体状况以下:
public class FlutterActivity extends BoostFlutterActivity {
private FlutterRouterUtil flutterRouter;
public static void open(Context context, FlutterRouterUtil flutterRouter) {
Intent intent = new Intent(context, FlutterActivity.class);
intent.putExtra("flutterRouter",(Serializable) flutterRouter);
context.startActivity(intent);
}
//设置路由变量
@Override
public String getContainerName() {
if(null!=flutterRouter){
return flutterRouter.getRouterName();
}
else return "sample://tticar_error";
}
//设置白屏加载页面
@Override
protected View createSplashScreenView() {
View inflate = View.inflate(this, R.layout.flutter_loading_view, null);
TStatusView tStatusView = inflate.findViewById(R.id.tstatus_view);
tStatusView.showLoading();
inflate.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
return inflate;
}
//设置路由参数
@Override
public Map getContainerParams() {
if(null!=flutterRouter){
return flutterRouter.getMap();
}else{
return new HashMap();
}
}
//获取跳转携带过来的值最好经过这个方法 从新实现onCreate方法失效
@Override
public void onRegisterPlugins(PluginRegistry pluginRegistry) {
flutterRouter = (FlutterRouterUtil) getIntent().getSerializableExtra("flutterRouter");
GeneratedPluginRegistrant.registerWith(pluginRegistry);
}
}
复制代码
以上就是实战中用到的框架以及处理逻辑
跳转遇到的问题
//flutter固定传参格式
Map<String, dynamic> map=new Map();
map["query"]=(本身所携带的map)
map["requestCode"]=(int类型的数据);
FlutterBoost.singleton.openPage("sample://setting",map, animated: true);
若有更改请参考FlutterBoostPlugin 这个类中
openPage(Context context, String url, final Map params, int requestCode) 方法
复制代码