xcode - 升级 Flutter 和 Xcode 后应用程序停止在 iOS 上运行

标签 xcode flutter

升级 flutter 2.2.0 和 Xcode 12.4 iOS 应用程序停止从 IDE 运行。但是,当我从 Xcode 本身运行时,应用程序就会运行。

这是一些可以查看的日志。

Flutter 运行控制台输出

Launching lib/main.dart on iPhone SE (2nd generation) in debug mode...
Xcode build done.                                           38.3s
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **
Xcode's output:
↳
    1 warning generated.
    10 warnings generated.
    /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.m:309:42: warning: comparison of distinct pointer types ('NSString *' and 'NSNull * _Nonnull') [-Wcompare-distinct-pointer-types]
        if (_stripeAccount && _stripeAccount != [NSNull null]) {
                              ~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~
    /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.m:731:42: warning: 'startPollingSourceWithId:clientSecret:timeout:completion:' is deprecated: You should poll your own backend to update based on source status change webhook events it may receive. [-Wdeprecated-declarations]
                            [stripeAPIClient startPollingSourceWithId:sourceID clientSecret:clientSecret timeout:10 completion:^(STPSource *source, NSError *error) {
                                             ^
    In module 'Stripe' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:11:
    /Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/Stripe/PublicHeaders/STPAPIClient.h:370:243: note: 'startPollingSourceWithId:clientSecret:timeout:completion:' has been explicitly marked deprecated here
    - (void)startPollingSourceWithId:(NSString *)identifier clientSecret:(NSString *)secret timeout:(NSTimeInterval)timeout completion:(STPSourceCompletionBlock)completion NS_EXTENSION_UNAVAILABLE("Source polling is not available in extensions") DEPRECATED_MSG_ATTRIBUTE("You should poll your own backend to update based on source status change webhook events it may receive.");
                                                                                          ^
    In module 'Foundation' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:9:
    In module 'CoreFoundation' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:
    In module 'Darwin' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/usr/include/AvailabilityMacros.h:183:64: note: expanded from macro 'DEPRECATED_MSG_ATTRIBUTE'
                #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
                                                                   ^
    /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.m:798:20: warning: 'setPublishableKey:' is deprecated: If you used [STPPaymentConfiguration sharedConfiguration].publishableKey, use [STPAPIClient sharedClient].publishableKey instead. If you passed a STPPaymentConfiguration instance to an SDK component, create an STPAPIClient, set publishableKey on it, and set the SDK component's APIClient property. [-Wdeprecated-declarations]
        [configuration setPublishableKey:nextPublishableKey];
                       ^
    In module 'Stripe' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:11:
    /Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/Stripe/PublicHeaders/STPPaymentConfiguration.h:126:50: note: property 'publishableKey' is declared deprecated here
    @property (nonatomic, copy, readwrite) NSString *publishableKey DEPRECATED_MSG_ATTRIBUTE("If you used [STPPaymentConfiguration sharedConfiguration].publishableKey, use [STPAPIClient sharedClient].publishableKey instead. If you passed a STPPaymentConfiguration instance to an SDK component, create an STPAPIClient, set publishableKey on it, and set the SDK component's APIClient property.");
                                                     ^
    /Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/Stripe/PublicHeaders/STPPaymentConfiguration.h:126:65: note: 'setPublishableKey:' has been explicitly marked deprecated here
    @property (nonatomic, copy, readwrite) NSString *publishableKey DEPRECATED_MSG_ATTRIBUTE("If you used [STPPaymentConfiguration sharedConfiguration].publishableKey, use [STPAPIClient sharedClient].publishableKey instead. If you passed a STPPaymentConfiguration instance to an SDK component, create an STPAPIClient, set publishableKey on it, and set the SDK component's APIClient property.");
                                                                    ^
    In module 'Foundation' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:9:
    In module 'CoreFoundation' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:
    In module 'Darwin' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/usr/include/AvailabilityMacros.h:183:64: note: expanded from macro 'DEPRECATED_MSG_ATTRIBUTE'
                #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
                                                                   ^
    /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.m:1104:23: warning: 'metadata' is deprecated: Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead. [-Wdeprecated-declarations]
                 TPSEntry(metadata),
                          ^
    In module 'Stripe' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:11:
    /Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/Stripe/PublicHeaders/STPPaymentMethod.h:138:89: note: 'metadata' has been explicitly marked deprecated here
    @property (nonatomic, nullable, readonly) NSDictionary<NSString*, NSString *> *metadata DEPRECATED_MSG_ATTRIBUTE("Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.");
                                                                                          ^
    In module 'Foundation' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:9:
    In module 'CoreFoundation' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:
    In module 'Darwin' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/usr/include/AvailabilityMacros.h:183:64: note: expanded from macro 'DEPRECATED_MSG_ATTRIBUTE'
                #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
                                                                   ^
    /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.m:1377:16: warning: 'metadata' is deprecated: Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead. [-Wdeprecated-declarations]
        if (source.metadata) {
                   ^
    In module 'Stripe' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:11:
    /Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/Stripe/PublicHeaders/STPSource.h:143:89: note: 'metadata' has been explicitly marked deprecated here
    @property (nonatomic, nullable, readonly) NSDictionary<NSString*, NSString *> *metadata DEPRECATED_MSG_ATTRIBUTE("Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.");
                                                                                          ^
    In module 'Foundation' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:9:
    In module 'CoreFoundation' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:
    In module 'Darwin' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/usr/include/AvailabilityMacros.h:183:64: note: expanded from macro 'DEPRECATED_MSG_ATTRIBUTE'
                #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
                                                                   ^
    /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.m:1378:33: warning: 'metadata' is deprecated: Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead. [-Wdeprecated-declarations]
            [result setValue:source.metadata forKey:@"metadata"];
                                    ^
    In module 'Stripe' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:11:
    /Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/Stripe/PublicHeaders/STPSource.h:143:89: note: 'metadata' has been explicitly marked deprecated here
    @property (nonatomic, nullable, readonly) NSDictionary<NSString*, NSString *> *metadata DEPRECATED_MSG_ATTRIBUTE("Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.");
                                                                                          ^
    In module 'Foundation' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:9:
    In module 'CoreFoundation' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:
    In module 'Darwin' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/usr/include/AvailabilityMacros.h:183:64: note: expanded from macro 'DEPRECATED_MSG_ATTRIBUTE'
                #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
                                                                   ^
    /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.m:1731:16: warning: 'STPBillingAddressFieldsZip' is deprecated: Use STPBillingAddressFieldsPostalCode [-Wdeprecated-declarations]
            return STPBillingAddressFieldsZip;
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
                   STPBillingAddressFieldsPostalCode
    In module 'Stripe' imported from /Users/pc/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_payment-1.0.10/ios/Classes/TPSStripeManager.h:11:
    /Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/Stripe/PublicHeaders/STPAddress.h:48:47: note: 'STPBillingAddressFieldsZip' has been explicitly marked deprecated here
        STPBillingAddressFieldsZip __attribute__((deprecated("Use STPBillingAddressFieldsPostalCode", "STPBillingAddressFieldsPostalCode"))) = STPBillingAddressFieldsPostalCode,
                                                  ^
    7 warnings generated.
    ld: building for iOS Simulator, but linking in object file built for iOS, file '/Users/pc/Desktop/Kishan/touch_ticket_client_app/ios/Pods/Stripe/InternalFrameworks/libStripe3DS2.a' for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Toast' from project 'Pods')
    warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Flutter' from project 'Pods')
Could not build the application for the simulator.
Error launching application on iPhone SE (2nd generation).
Exited (sigterm)

Flutter Doctor -v 输出

[✓] Flutter (Channel stable, 2.2.1, on Mac OS X 10.15.7 19H2 darwin-x64, locale en-IN)
    • Flutter version 2.2.1 at /Users/pc/Desktop/flutter
    • Framework revision 02c026b03c (3 weeks ago), 2021-05-27 12:24:44 -0700
    • Engine revision 0fdb562ac8
    • Dart version 2.13.1

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/pc/Library/Android/sdk
    • Platform android-S, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.57.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.23.0

[✓] Connected device (2 available)
    • iPhone SE (2nd generation) (mobile) • 1996F394-57D4-419A-ABB6-C55113BED393 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • Chrome (web)                        • chrome                               • web-javascript • Google Chrome 91.0.4472.106

• No issues found!

到目前为止我尝试过的:

1) 干净的构建和运行

flutter clean
flutter build ios
flutter run

2)执行以下命令后再次运行

flutter clean && \
rm ios/Podfile ios/Podfile.lock pubspec.lock && \
rm -rf ios/Pods ios/Runner.xcworkspace && \ 
flutter run

3) 已删除 WorkspaceSettings.xcsettings 文件

rm -f ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

4) 修复酒吧渔具

flutter pub cache repair 

最佳答案

您是否尝试运行这些命令?升级 Flutter 项目后,我也遇到了同样的问题,使用这些命令我可以在 iOS 上再次运行我的项目。

cd ios
pod deintegrate
rm Flutter/Flutter.podspec
rm podfile.lock
pod init 
pod install
flutter clean
flutter pub get
flutter run

并确保您的 podfile 中有 flutter_additional_ios_build_settings。

这通常是我的。

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
      config.build_settings['SWIFT_VERSION'] = '5.0' 
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
    flutter_additional_ios_build_settings(target)
  end
end

此外,考虑使用 pod install --repo-update 而不是 pod install

另外,您可以尝试通过 .xcworkspace 文件在 Xcode 中运行您的项目吗?根据我的经验,Xcode 在 iOS Simulator 上构建它没有任何问题,但 flutter 却不能。所以我想弄清楚你是否遇到了和我一样的问题。

编辑:我还建议您将 Stripe 库更新到最新版本。

关于xcode - 升级 Flutter 和 Xcode 后应用程序停止在 iOS 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67997794/

相关文章:

ios - 无法调用参数列表类型

ios - 返回主视图时如何从内存中删除 subview ?

android - 如何使用Moor_Flutter从数据库中获取单个值

Flutter - Ontap InkWell 在 Stack 中不起作用

ios - 如何在 CollectionView 中使用延迟加载?

swift - 如何在 swift 1.2 项目中支持 iPhone X?

cocoa - 'NSDictionary' 可能无法响应 '+dictionaryWithJSONString' ... 使用 TouchJSON 时

unit-testing - 一张一张地运行Flutter Package单元测试

flutter Firebase错误 "FAILURE: Build failed with an exception"

dart - 如何创建动画数字计数器?