集成前确保项目是使用或支持androidX。 —— 来自过来人的建议!!!
如果还没有迁移到androidX,过来人也把一些迁移androidX的经验分享给你,希望对你有一些帮助
开始集成flutter_boost
1、引入module, 手动创建,一步一个脚印,自己写
a、在Terminal中输入命令行
flutter create -t module flutter_module
注意看好你需要存放的位置,可以cd到上一级目录再创建,操作与盘符切换类似
b、然后打开你创建的flutter module,先找到pubspec.yaml 然后packages get 一下,可以先运行一下你创建的flutter module
aa、先在gradle.properties中添加
android.useAndroidX=true
android.enableJetifier=true
当然如果你已经支持androidx这两行是肯定有的
bb、在settings.gradle中添加
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir,
'../你的module/.android/include_flutter.groovy'
))
include ':你的module名'
project(':你的module名').projectDir = new File('../你的module名')
cc、在app的build.gradle中添加
implementation project(path: ':flutter')
implementation project(path: ':flutter_boost')
dd、在application中初始化flutter_boost,详细具体的请参照flutter_boost官方
INativeRouter router = new INativeRouter() {
@Override
public void openContainer(Context context, String url, Map urlParams, int requestCode, Map exts) {
String assembleUrl = Utils.assembleUrl(url, urlParams);
PageRouter.openPageByUrl(context, assembleUrl, urlParams);
}
};
FlutterBoost.BoostLifecycleListener boostLifecycleListener = new FlutterBoost.BoostLifecycleListener() {
@Override
public void beforeCreateEngine() {
}
@Override
public void onEngineCreated() {
// 注册MethodChannel,监听flutter侧的getPlatformVersion调用
methodChannel = new MethodChannel(FlutterBoost.instance().engineProvider().getDartExecutor(), PageRouter.METHOD_CHANNEL);
FlutterUtils.setMethodCallHandler(mInstance, methodChannel);
// 注册PlatformView viewTypeId要和flutter中的viewType对应
FlutterBoost
.instance()
.engineProvider()
.getPlatformViewsController()
.getRegistry()
.registerViewFactory("plugins.test/view", new TextPlatformViewFactory(StandardMessageCodec.INSTANCE));
}
@Override
public void onPluginsRegistered() {
}
@Override
public void onEngineDestroy() {
}
};
Platform platform = new FlutterBoost
.ConfigBuilder(this, router)
.isDebug(true)
.whenEngineStart(FlutterBoost.ConfigBuilder.ANY_ACTIVITY_CREATED)
.renderMode(FlutterView.RenderMode.texture)
.lifecycleListener(boostLifecycleListener)
.build();
FlutterBoost.instance().init(platform);
ee、在AndroidManifest.xml中注册一下
2、假如你是一步登天的,别人写好了flutter方面的东西,需要你直接引入,那你作为一个module把它引进去就行了,四个文件那里需要照配不误!!!
3、假如你们是协同开发的,别人已经把flutter module项目放到git或者svn了,那你先手动创建module,然后把.git或.svn文件粘贴到手动创建的module里面,打开项目,拉取一下文件,再get一下,基本也完事了,如果不行就把lib,.yaml和assets粘贴进来就可了,但四个文件那里需要照配不误!!!!!!