flutter SDK升级1.22

393 阅读1分钟

f'lflutter团队更新SDK太快了,一段时间没关注,直接更新大版本到1.22了,那赶紧跟上呀

  1. 首先是看文档看文档啊,官方文档不看是不行的,文档写的还是很清晰的,关于版本有哪些大的变更,迁移指南康康吧:github.com/flutter/flu…

  2. 如果你的项目没有自定义MainActivity.java,那么直接按文档,或者新建一个V2版的项目,对照一下

  3. 如果项目是经过自定义的MainActivity.java入口,比如我的项目因为接入了极光推送,那么我已经重新处理过我的FlutterActivity类,项目目录是这样的: 

  4. 第一个FlutterActivity的子类onCreate废弃,改用configureFlutterEngine注册;

    @Overridepublic void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
        channel = new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL);}
    
  5. 接下来是android/app/src/main/AndroidManifest.xml的更改,删除的android:name="io.flutter.app.FlutterApplication"这段代码引用;

  6. 到这一步的时候项目已经可以正常运行了,看起来没什么大问题了,但是!!我发现项目启动的时候会有间隙黑屏时间,在确定代码没什么问题后,我想到应该是启动页的锅,flutter加载第一帧之前的这个屏幕设置的启动页是失效了的,那么开始解决问题,尴尬的是在浪费一个小时后我发现文档里是有写的,所以说,一定要看文档啊,看文档~~ 

  7. 删除里android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"

  8.  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>
     
    
  9.    在之后加

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

到这里基本就没什么问题了,以上就是自己从v1升到v2的步骤,在此记录一下,有啥问题可以留言问我哦。