针对iOS编译Flutter引擎
2020-03-26 本文已影响0人
嗨哒哥
针对iOS编译Flutter引擎
现有iOS项目中以module的方式接入Flutter,并且从原生页面跳转进Flutter的时候,会发现内存飙升,并且在退出FlutterViewController之后,内存并没有销毁;就会导致原本手机内存就吃紧的情况下,造成app的闪退。
虽然可以通过单引擎单FlutterViewController的方式来抵消部分内存消耗,但是使用单引擎单FlutterViewController来跳转Flutter制定页面的时候就显得不方便,并且FlutterViewController的setInitialRoute方法会失效,导致使用setInitialRoute来跳转指定Widget页面的时候,window.defaultRouteName收到的总是“/”,得不到设定的数据。
之所以使用单引擎单FlutterViewController的方式会出现这种问题,是因为FlutterEngin在启动的时候就默认加载了Widget,导致设置setInitialRoute的时候不生效。
为了探究这个问题,就需要拿到flutter有关engin的源码,看了源码后,自然就会有修改源码的冲动;修改后如何进行编译呢?
有关如何进行编译Flutter.framework,可以参考针对iOS在Mac平台上编译Flutter引擎
后续有空将会说明,FlutterViewController、FlutterEngin、FlutterMethodChannel、FlutterEventChannel以及Flutter的集中decodec存在关系。