android混合开发—— flutter_boost

集成前确保项目是使用或支持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

c、    在原生android项目中找到这四个文件

         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<String, Object> urlParams, int requestCode, Map<String, Object> 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中注册一下

        <activity
            android:name="com.idlefish.flutterboost.containers.BoostFlutterActivity"
            android:theme="@style/Theme.AppCompat"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize" >
            <!--页面加载loading图-->
            <meta-data
                android:name="io.flutter.embedding.android.SplashScreenDrawable"
                android:resource="@mipmap/你想要的过渡图片"/>

        </activity>

        <meta-data android:name="flutterEmbedding"
            android:value="2"/>

2、假如你是一步登天的,别人写好了flutter方面的东西,需要你直接引入,那你作为一个module把它引进去就行了,四个文件那里需要照配不误!!!

3、假如你们是协同开发的,别人已经把flutter module项目放到git或者svn了,那你先手动创建module,然后把.git或.svn文件粘贴到手动创建的module里面,打开项目,拉取一下文件,再get一下,基本也完事了,如果不行就把lib,.yaml和assets粘贴进来就可了,但四个文件那里需要照配不误!!!!!!

猜你喜欢

转载自blog.csdn.net/LoveShadowing/article/details/111572276