iOS版本更新Flutter 1.22和Firebase插件


动机

Flutter 1.22已声明它将支持iOS 14,并且firebase_crashlytics现在与Firebase Crashlytics SDK兼容,因此我想更新可以更新的内容

下载Xcode 12

Xcode12是必需的,因此请下载。
您可以从此处

下载适当的Xcode。

https://developer.apple.com/download/more/

1
[?] Xcode - develop for iOS and macOS (Xcode 12.0.1)

Flutter更新

首先,我们将更新Flutter

1
$ flutter upgrade

在更新时,以下版本

1
[?] Flutter (Channel stable, 1.22.0, on Mac OS X 10.15.6 19G73, locale ja-JP)

重新创建Podfile

我认为这取决于创建项目的时间,但是
使用较旧版本的Flutter创建的Podfile应该删除并重新创建。
如果删除它并快速运行,将创建一个新的podfile。

根据项目的不同,您可能已将设置添加到Podfile,因此请进行必要的修改。
当有多个Xcode构建设置和与Firebase插件相关的修补程序时,可能会有设置。

1
2
$ rm ios/Podfile
$ flutter run

插件更新

为了更新

firebase_crashlytics,还必须更新firebase_core,并且必须提供所有结果,因此结果为以下版本。

pubspec.yaml

1
2
3
4
5
6
7
8
  # Firebase
  firebase_core: 0.5.0
  firebase_auth: 0.18.1+1
  firebase_crashlytics: 0.2.1
  firebase_messaging: 7.0.2
  firebase_ml_vision: 0.9.7
  firebase_dynamic_links: 0.6.0+1
  firebase_analytics: 6.0.1

即使您按原样正常进行操作,它也会与Xcode构建混淆,因此我们将支持它。
Firebase插件仍然很旧,并且有新版本
似乎发生了未按预期下载且依赖项解析失败的情况。
(由于我在这里花了很多时间,执行顺序非常可疑,可能会有不必要的命令

1
2
3
4
$ flutter clean
$ cd ios && rm -rf Pods/
$ flutter packages upgrade
$ pod update && pod install

实际发生的错误如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    [!] CocoaPods could not find compatible versions for pod "Firebase/Core":
      In Podfile:
        firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 6.0.1, which depends on
          Firebase/Analytics (~> 6.26.0) was resolved to 6.26.0, which depends on
            Firebase/Core (= 6.26.0)
        firebase_ml_vision (from `.symlinks/plugins/firebase_ml_vision/ios`) was resolved to 0.1.1, which depends on
          Firebase/Core
    CocoaPods could not find compatible versions for pod "FirebaseCore":
      In Podfile:
        firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 6.0.1, which depends on
          Firebase/Analytics (~> 6.26.0) was resolved to 6.26.0, which depends on
            Firebase/Core (= 6.26.0) was resolved to 6.26.0, which depends on
              FirebaseAnalytics (= 6.6.0) was resolved to 6.6.0, which depends on
                FirebaseCore (~> 6.7)
        firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 6.0.1, which depends on
          Firebase/CoreOnly (~> 6.26.0) was resolved to 6.26.0, which depends on
            FirebaseCore (= 6.7.2)
        firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`) was resolved to 0.2.1, which depends on
          Firebase/Crashlytics (~> 6.26.0) was resolved to 6.26.0, which depends on
            FirebaseCrashlytics (~> 4.1.1) was resolved to 4.1.1, which depends on
              FirebaseCore (~> 6.6)
        firebase_dynamic_links (from `.symlinks/plugins/firebase_dynamic_links/ios`) was resolved to 0.6.0-1, which depends on
          Firebase/DynamicLinks (~> 6.26.0) was resolved to 6.26.0, which depends on
            FirebaseDynamicLinks (~> 4.0.8) was resolved to 4.0.8, which depends on
              FirebaseCore (~> 6.2)
    CocoaPods could not find compatible versions for pod "GoogleUtilities/AppDelegateSwizzler":
      In Podfile:
        firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 6.0.1, which depends on
          Firebase/Analytics (~> 6.26.0) was resolved to 6.26.0, which depends on
            Firebase/Core (= 6.26.0) was resolved to 6.26.0, which depends on
              FirebaseAnalytics (= 6.6.0) was resolved to 6.6.0, which depends on
                GoogleUtilities/AppDelegateSwizzler (~> 6.0)
        firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) was resolved to 7.0.2, which depends on
          Firebase/Messaging (~> 6.26.0) was resolved to 6.26.0, which depends on
            FirebaseMessaging (~> 4.4.1) was resolved to 4.4.1, which depends on
              GoogleUtilities/AppDelegateSwizzler (~> 6.5)
          GoogleUtilities/AppDelegateSwizzler (~> 6.5.2)
    CocoaPods could not find compatible versions for pod "GoogleUtilities/Environment":
      In Podfile:
        firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 6.0.1, which depends on
          Firebase/Analytics (~> 6.26.0) was resolved to 6.26.0, which depends on
            Firebase/Core (= 6.26.0) was resolved to 6.26.0, which depends on
              FirebaseAnalytics (= 6.6.0) was resolved to 6.6.0, which depends on
                FirebaseInstallations (~> 1.3) was resolved to 1.4.0, which depends on
                  GoogleUtilities/Environment (~> 6.6)
        firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 6.0.1, which depends on
          Firebase/CoreOnly (~> 6.26.0) was resolved to 6.26.0, which depends on
            FirebaseCore (= 6.7.2) was resolved to 6.7.2, which depends on

此外,由于iOS8已从Xcode 12的Deployment Target中删除,因此在构建时将输出大量警告,因此请相应地更改库的Deployment Target。

1
2
3
4
5
6
7
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
    end
  end
end

与新小部件

冲突

Flutter 1.22中添加了以下按钮小部件,但
因为项目中已经有一个名为TextButton的自定义小部件。
我们采取了重命名等必要措施。

<表格>

新小部件

新主题


<身体>

TextButton

TextButtonTheme

ElevatedButton

ElevatedButtonTheme

OutlinedButton

OutlinedButtonTheme


flutter_stetho

我正在使用stetho作为应用程序的通信系统的调试工具,但是由于此插件不支持Flutter 1.22,因此我将导入受支持的修改后的分支。
(PR已发布,因此,如果已导入,则可以正常更新

https://github.com/brianegan/flutter_stetho/pull/40

1
2
3
  flutter_stetho:
    git:
      url: https://github.com/jasonlewicki/flutter_stetho

此更新花费了很多时间,所以我组织了所做的事情。
我希望这对将来会做出回应的人有所帮助。
顺便说一下,接下来是Android支持!

参考

https://github.com/flutter/flutter/issues/28054
https://stackoverflow.com/questions/50768723/what-does-warning-mapping-architecture-arm64-to-x86-64-mean
https://qiita.com/taki4227/items/db9b503e56ab25a8a375
https://qiita.com/temoki/items/46ad22940e819a132435