我之前有一个运行良好的应用程序,但现在不再运行,我已经尝试解决了几个星期。现在已经将它调试到几乎可以运行,但却在最后一步遇到以下问题:
flutter run -v
看起来应用程序已成功构建并启动,屏幕短暂地变白,然后应用程序关闭。终端输出的最后几条记录为:
[ +293 ms] ------ Debug phase ------
[ ] Starting debug of 53225g34b4c604fe43a334525340e269626a (D111AP,
iPhone 7 Plus, iphoneos, arm64) a.k.a. 'iPhone' connected through USB...
[ +935 ms] [ 0%] Looking up developer disk image
[ +27 ms] [ 95%] Developer disk image mounted successfully
[ +367 ms] [100%] Connecting to remote debug server
[ ] -------------------------
[+1080 ms] (lldb) command source -s 0
'/tmp/1D186BA70/fruitstrap-lldb-prep-cmds-4c604fe43a334525340e269626a'
[ ] Executing commands in
'/tmp/1D186BA70/fruitstrap-lldb-prep-cmds-4c604fe43a334525340e269626a'
[ ] (lldb) platform select remote-ios --sysroot
'/Users/sjr/Library/Developer/Xcode/iOS DeviceSupport/13.3.1 (17D50)/Symbols'
[ ] Platform: remote-ios
[ ] Connected: no
[ ] SDK Path: "/Users/sjr/Library/Developer/Xcode/iOS
DeviceSupport/13.3.1 (17D50)/Symbols"
[ ] (lldb) target create
"/Users/sjr/Projects/my_app/build/ios/iphoneos/Runner.app"
[+10050 ms] Current executable set to
'/Users/sjr/Projects/my_app/build/ios/iphoneos/Runner.app' (arm64).
[ ] (lldb) script
fruitstrap_device_app="/private/var/containers/Bundle/Application/62B3E66E1/Runner.app"
[ +443 ms] (lldb) script fruitstrap_connect_url="connect://127.0.0.1:49422"
[ ] (lldb) script fruitstrap_output_path=""
[ ] (lldb) script fruitstrap_error_path=""
[ ] (lldb) target modules search-paths add /usr
"/Users/sjr/Library/Developer/Xcode/iOS DeviceSupport/13.3.1
(17D50)/Symbols/usr" /System "/Users/sjr/Library/Developer/Xcode/iOS
DeviceSupport/13.3.1 (17D50)/Symbols/System"
"/private/var/containers/Bundle/Application/62B3E66E1
" "/Users/sjr/Projects/my_app/build/ios/iphoneos"
"/var/containers/Bundle/Application/62B3E66E1"
"/Users/sjr/Projects/my_app/build/ios/iphoneos" /Developer
"/Users/sjr/Library/Developer/Xcode/iOS DeviceSupport/13.3.1
(17D50)/Symbols/Developer"
[ +35 ms] (lldb) command script import
"/tmp/1D186BA70/fruitstrap_4c604fe43a334525340e269626a.py"
[ +4 ms] (lldb) command script add -f
fruitstrap_4c604fe43a334525340e269626a.connect_command connect
[ ] (lldb) command script add -s asynchronous -f
fruitstrap_4c604fe43a334525340e269626a.run_command run
[ ] (lldb) command script add -s asynchronous -f
fruitstrap_4c604fe43a334525340e269626a.autoexit_command autoexit
[ ] (lldb) command script add -s asynchronous -f
fruitstrap_4c604fe43a334525340e269626a.safequit_command safequit
[ ] (lldb) connect
[ +52 ms] (lldb) run
[ +277 ms] success
[ ] (lldb) safequit
[ +120 ms] Process 434 detached
[ +48 ms] Application launched on the device. Waiting for observatory port.
[ +4 ms] Checking for advertised Dart observatories...
[+5026 ms] mDNS lookup failed, attempting fallback to reading device log.
[ ] Waiting for observatory port.
而在Xcode中,这个问题看起来有些不同(虽然很可能是完全相同的问题)。似乎可能是内存泄漏?我不确定如何阅读这些信息。出现了一个错误,像这样:
io.flutter.204.ui (625): signal SIGABRT
然后在下面的日志中,我有:
Runner(439,0x1009c5800) malloc: enabling scribbling to detect mods to free blocks
Runner(439,0x1009c5800) malloc: recording malloc and VM allocation stacks using lite mode
2020-03-31 07:54:22.330547+0800 Runner[439:345566] Failed to find snapshot: /private/var/containers/Bundle/Application/E00E6D3690/Runner.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin
2020-03-31 07:54:22.475589+0800 Runner[439:345566] Metal API Validation Enabled
2020-03-31 07:54:22.864937+0800 Runner[439:345566] Failed to find snapshot: /private/var/containers/Bundle/Application/E00E6D3690/Runner.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin
2020-03-31 07:54:22.932713+0800 Runner[439:345566] Failed to find snapshot: /private/var/containers/Bundle/Application/E00E6D3690/Runner.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin
2020-03-31 07:54:22.976036+0800 Runner[439:345823] flutter: Observatory listening on http://127.0.0.1:51027/Wl9caPukKFs=/
2020-03-31 07:54:22.993612+0800 Runner[439:345566] Failed to find snapshot: /private/var/containers/Bundle/Application/E00E6D3690/Runner.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin
2020-03-31 07:54:23.030173+0800 Runner[439:345566] Failed to find snapshot: /private/var/containers/Bundle/Application/E00E6D3690/Runner.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin
还有数百个完全相同的部分:
2020-03-31 07:54:23.030173+0800 Runner[439:345566] Failed to find snapshot: /private/var/containers/Bundle/Application/E00E6D3690/Runner.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin
然后它继续:
../../third_party/dart/runtime/vm/clustered_snapshot.cc: 68: error: Out of memory.
2020-03-31 07:54:35.497087+0800 Runner[439:346457] version=2.5.0 (Fri Sep 6 20:10:36 2019 +0200) on "ios_arm64"
thread=1245963, isolate=main(0x2cb9de000)
2020-03-31 07:54:35.510204+0800 Runner[439:346457] pc 0x00000001013019ac fp 0x00000002d76837e0 Dart_DumpNativeStackTrace
2020-03-31 07:54:35.510996+0800 Runner[439:346457] pc 0x0000000100e94518 fp 0x00000002d7683800 dart::Assert::Fail(char const*, ...)
2020-03-31 07:54:35.511862+0800 Runner[439:346457] pc 0x0000000100f2969c fp 0x00000002d7683860 dart::FunctionDeserializationCluster::ReadFill(dart::Deserializer*)
2020-03-31 07:54:35.512319+0800 Runner[439:346457] pc 0x0000000100f2e4ec fp 0x00000002d76839b0 dart::FullSnapshotReader::ReadIsolateSnapshot()
2020-03-31 07:54:35.512738+0800 Runner[439:346457] pc 0x0000000100f34d88 fp 0x00000002d7683f70 dart::Dart::InitializeIsolate(unsigned char const*, unsigned char const*, unsigned char const*, unsigned char const*, unsigned char const*, long, void*)
2020-03-31 07:54:35.513417+0800 Runner[439:346457] pc 0x00000001012e8220 fp 0x00000002d7684010 dart::CreateIsolate(dart::IsolateGroup*, char const*, void*, char**)
2020-03-31 07:54:35.514492+0800 Runner[439:346457] pc 0x0000000100b0ccd4 fp 0x00000002d7684270 flutter::DartIsolate::CreateDartVMAndEmbedderObjectPair(char const*, char const*, char const*, char const*, Dart_IsolateFlags*, std::__1::shared_ptr<flutter::DartIsolate>*, bool, char**)
2020-03-31 07:54:35.515065+0800 Runner[439:346457] pc 0x0000000100b0c4fc fp 0x00000002d7684450 flutter::DartIsolate::CreateRootIsolate(flutter::Settings const&, fml::RefPtr<flutter::DartSnapshot const>, fml::RefPtr<flutter::DartSnapshot const>, flutter::TaskRunners, std::__1::unique_ptr<flutter::Window, std::__1::default_delete<flutter::Window> >, fml::WeakPtr<flutter::IOManager>, fml::WeakPtr<flutter::ImageDecoder>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, Dart_IsolateFlags*, std::__1::function<void ()>, std::__1::function<void ()>)
2020-03-31 07:54:35.515707+0800 Runner[439:346457] pc 0x0000000100b15000 fp 0x00000002d7684720 flutter::RuntimeController::RuntimeController(flutter::RuntimeDelegate&, flutter::DartVM*, fml::RefPtr<flutter::DartSnapshot const>, fml::RefPtr<flutter::DartSnapshot const>, flutter::TaskRunners, fml::WeakPtr<flutter::IOManager>, fml::WeakPtr<flutter::ImageDecoder>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::function<void (long long)>, flutter::RuntimeController::WindowData, std::__1::function<void ()>, std::__1::function<void ()>)
2020-03-31 07:54:35.516437+0800 Runner[439:346457] pc 0x0000000100b1b858 fp 0x00000002d7684b50 flutter::Engine::Engine(flutter::Engine::Delegate&, flutter::DartVM&, fml::RefPtr<flutter::DartSnapshot const>, fml::RefPtr<flutter::DartSnapshot const>, flutter::TaskRunners, flutter::Settings, std::__1::unique_ptr<flutter::Animator, std::__1::default_delete<flutter::Animator> >, fml::WeakPtr<flutter::IOManager>)
2020-03-31 07:54:35.517172+0800 Runner[439:346457] pc 0x0000000100b2c1d0 fp 0x00000002d7684fe0 std::__1::__function::__func<fml::internal::CopyableLambda<flutter::Shell::CreateShellOnPlatformThread(flutter::DartVMRef, flutter::TaskRunners, flutter::Settings, fml::RefPtr<flutter::DartSnapshot const>, fml::RefPtr<flutter::DartSnapshot const>, std::__1::function<std::__1::unique_ptr<flutter::PlatformView, std::__1::default_delete<flutter::PlatformView> > (flutter::Shell&)>, std::__1::function<std::__1::unique_ptr<flutter::Rasterizer, std::__1::default_delete<flutter::Rasterizer> > (flutter::Shell&)>)::$_0>, std::__1::allocator<fml::internal::CopyableLambda<flutter::Shell::CreateShellOnPlatformThread(flutter::DartVMRef, flutter::TaskRunners, flutter::Settings, fml::RefPtr<flutter::DartSnapshot const>, fml::RefPtr<flutter::DartSnapshot const>, std::__1::function<std::__1::unique_ptr<flutter::PlatformView, std::__1::default_delete<flutter::PlatformView> > (flutter::Shell&)>, std::__1::function<std::__1::unique_ptr<flutter::Rasterizer, std::__1::default_delete<flutter::Rasterizer> > (flutter::Shell&)>)::$_0> >, void ()>::operator()()
2020-03-31 07:54:35.518362+0800 Runner[439:346457] pc 0x0000000100add9e8 fp 0x00000002d7685030 fml::MessageLoopImpl::FlushTasks(fml::FlushType)
2020-03-31 07:54:35.518837+0800 Runner[439:346457] pc 0x0000000100ae209c fp 0x00000002d7685050 fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)
2020-03-31 07:54:35.519148+0800 Runner[439:346457] pc 0x000000019eb6503c fp 0x00000002d7685060 <redacted>
2020-03-31 07:54:35.519351+0800 Runner[439:346457] pc 0x000000019eb64d78 fp 0x00000002d7686110 <redacted>
2020-03-31 07:54:35.519583+0800 Runner[439:346457] pc 0x000000019eb64448 fp 0x00000002d76861a0 <redacted>
那么在我这个外行人看来,它似乎是在尝试做这件事:
2020-03-31 07:54:23.030173+0800 Runner[439:345566] Failed to find snapshot: /private/var/containers/Bundle/Application/E00E6D3690/Runner.app/Frameworks/App.framework/flutter_assets/kernel_blob.bin
尝试执行数千次,直到内存耗尽,但我不确定这是什么,也不知道从何开始解决。
编辑:Flutter Doctor 输出。
flutter doctor -v
[✓] Flutter (Channel stable, v1.9.1+hotfix.6, on Mac OS X 10.15.4 19E264b,
locale en-AU)
• Flutter version 1.9.1+hotfix.6 at /Users/sjr/flutter
• Framework revision 68587a0916 (7 months ago), 2019-09-13 19:46:58 -0700
• Engine revision b863200c37
• Dart version 2.5.0
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from:
https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK
components.
(or visit https://flutter.dev/setup/#android-setup for detailed
instructions).
If the Android SDK has been installed to a custom location, set
ANDROID_HOME to that location.
You may also want to add it to your PATH environment variable.
[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.4, Build version 11E146
• CocoaPods version 1.7.5
[!] Android Studio (not installed)
• Android Studio not found; download from
https://developer.android.com/studio/index.html
(or visit https://flutter.dev/setup/#android-setup for detailed
instructions).
[!] Connected device
! No devices available
! Doctor found issues in 3 categories.
编辑:
根据 @Hannes Sverrisson 提出的建议导致的错误代码:
Running pod install... 4.7s
Running Xcode build...
Xcode build done. 16.8s
Failed to build iOS app
Error output from Xcode build:
** BUILD FAILED **
Xcode's output:
=== BUILD TARGET PromisesObjC OF PROJECT Pods WITH CONFIGURATION Release ===
In file included from
/Users/sjr/Projects/my_app/ios/Pods/GoogleDataTransport/GoogleDataTran
sport/GDTCORLibrary/GDTCORLifecycle.m:22:
In file included from
/Users/sjr/Projects/my_app/ios/Pods/GoogleDataTransport/GoogleDataTran
sport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h:17:
In file included from
/Users/sjr/Projects/my_app/build/ios/Release-iphoneos/GoogleDataTransp
ort/GoogleDataTransport.framework/Headers/GDTCORRegistrar.h:19:
In file included from
/Users/sjr/Projects/my_app/build/ios/Release-iphoneos/GoogleDataTransp
ort/GoogleDataTransport.framework/Headers/GDTCORPrioritizer.h:19:
/Users/sjr/Projects/my_app/build/ios/Release-iphoneos/GoogleDataTransp
ort/GoogleDataTransport.framework/Headers/GDTCORLifecycle.h:26:11: error:
duplicate protocol definition of 'GDTCORLifecycleProtocol' is ignored
[-Werror,-Wduplicate-protocol]
@protocol GDTCORLifecycleProtocol <NSObject>
然后会出现成千上万个类似“在文件中”的错误,直到失败。
编辑:在git push之后,重新创建和拉取:在构建过程中Xcode显示错误。