f'lflutter团队更新SDK太快了,一段时间没关注,直接更新大版本到1.22了,那赶紧跟上呀
-
首先是看文档看文档啊,官方文档不看是不行的,文档写的还是很清晰的,关于版本有哪些大的变更,迁移指南康康吧:github.com/flutter/flu…
-
如果你的项目没有自定义MainActivity.java,那么直接按文档,或者新建一个V2版的项目,对照一下
-
如果项目是经过自定义的MainActivity.java入口,比如我的项目因为接入了极光推送,那么我已经重新处理过我的FlutterActivity类,项目目录是这样的:
-
第一个FlutterActivity的子类onCreate废弃,改用configureFlutterEngine注册;
@Overridepublic void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine); channel = new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL);}
-
接下来是android/app/src/main/AndroidManifest.xml的更改,删除的
android:name="io.flutter.app.FlutterApplication"
这段代码引用; -
到这一步的时候项目已经可以正常运行了,看起来没什么大问题了,但是!!我发现项目启动的时候会有间隙黑屏时间,在确定代码没什么问题后,我想到应该是启动页的锅,flutter加载第一帧之前的这个屏幕设置的启动页是失效了的,那么开始解决问题,尴尬的是在浪费一个小时后我发现文档里是有写的,所以说,一定要看文档啊,看文档~~
-
删除里
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
-
AndroidManifest.xml <activity android:name=".MainActivity" android:theme="@style/LaunchTheme" 、、、 > <!-- 指定启动屏幕应继续显示,直到Flutter渲染其第一帧为止。必须加这段代码!!! --> <meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/launch_background" /> <!-- Flutter开始渲染帧后立即应用主题 --> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> 、、、、 </activity> style.xml <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground">@drawable/[your_normal_background_drawable]</item> </style>
-
在之后加
<meta-data android:name="flutterEmbedding" android:value="2" />
到这里基本就没什么问题了,以上就是自己从v1升到v2的步骤,在此记录一下,有啥问题可以留言问我哦。