【发布时间】:2021-08-31 23:39:17
【问题描述】:
升级 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) 修复的 PUB 捕获
flutter pub cache repair
【问题讨论】:
-
这是通过ios模拟器还是通过您自己的设备?
-
我都试过了,结果一样。
-
您使用的是旧版本的 stripe_payment,更新到最新版本可能会解决问题