簡體   English   中英

如何將flutter_blue與iOS一起使用?

[英]How to use flutter_blue with iOS?

我正在嘗試將 flutter 和 flutter_blue 與 iOS 一起使用。

我收到每個頻道的故障轉儲。 我是 flutter 的新手,所以也許這是一個簡單的問題。 我知道人們使用這個庫,所以它必須在我的使用中。 奇怪的是,盡管選擇了頻道,但每次都會產生相同的故障轉儲。

重現步驟

OSX: Version 0.15.5 (19F101)
Xcode : Version 11.5 (11E608c)

使用主頁上的示例和實際的 GitHub src 作為指南。 這些網址:

  1. 指定 flutter 通道並更新

我已經嘗試過每個 flutter 通道。 每個通道產生相同的故障轉儲。

$ flutter channel stable
$ flutter upgrade

Flutter 1.17.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 1ad9baa8b9 (9 days ago) • 2020-06-17 14:41:16 -0700
Engine • revision ee76268252
Tools • Dart 2.8.4

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.17.4, on Mac OS X 10.15.5 19F101, locale en-US)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
[✓] Android Studio (version 4.0)
[!] VS Code (version 1.24.1)
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)

! Doctor found issues in 1 category.
  1. 創建存根項目

為簡單起見,模仿這個例子。

$ flutter create flutter_blue_example
$ cd flutter_blue_example
  1. 在 Xcode 中打開項目並進行運行時更改
$ open ios/Runner.xcworkspace/

Select 目標:運行器然后常規選項卡以修改運行時 API

General->Deployment Info->Target == iOS 13.5

Select 目標:Runner 然后 Signing & Capabilities 選項卡以修改簽名包標識符和團隊名稱。

我注意到一些錯誤消息與 iOS 8.0 與 iOS 10.0 API 功能有關。 結果我選擇了最新的API iOS 13。

  • 正確的包標識符和簽名團隊名稱

  • 通過 Xcode 在手機上運行示例。

  • 停止應用關閉 Xcode。 使用 cli 運行。

  • 關閉並用cli測試

    $ flutter run
  • 演示應用程序運行時,按 q 退出

  1. 修改 pubspec.yaml 文件,使依賴部分如下所示:
dependencies:
  flutter_blue: ^0.7.2
  flutter:
    sdk: flutter
  1. 刪除 lib/main.dart 存根/模板代碼並替換為 git 存儲庫中的示例代碼。
$ cd lib
$ rm main.dart
$ curl https://raw.githubusercontent.com/pauldemarco/flutter_blue/master/example/lib/main.dart --output main.dart
$ curl https://raw.githubusercontent.com/pauldemarco/flutter_blue/master/example/lib/widgets.dart --output widgets.dart
  1. 清理並安裝依賴項

每次我更改頻道時,我都會執行相同的過程。

$ cd ..
# The rm iOS/Podfile command is only needed when
# switching to channel dev
# rm iOS/Podfile
$ flutter pub get
$ flutter clean
  1. 嘗試構建並運行示例代碼
$ flutter run
Launching lib/main.dart on JFD_X in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode
project: Z84M4MZYKF
Running pod install...                                              1.6s
Running Xcode build...

 └─Compiling, linking and signing...                        14.3s
Xcode build done.                                           29.7s
Installing and launching...                                            ⣻

在 iPhone 上,它會閃爍顯示應用程序啟動的屏幕,但很快就會返回主屏幕。 提示永遠不會返回,並且必須使用ctrl-c退出命令,因為q沒有響應。

使用詳細選項運行可提供此信息。

<stuff snipped>
[ +155 ms] success
[        ] (lldb)     safequit
[ +109 ms] Process 20400 detached
[  +30 ms] Application launched on the device. Waiting for observatory port.
[   +9 ms] Attempting to forward device port 49232 to host port 1024
[        ] executing: /Users/davis/progs/flutter/flutter/bin/cache/artifacts/usbmuxd/iproxy 1024 49232
850f92882e33715d639b466a0ba9a01aeb601823
[+1011 ms] Forwarded port ForwardedPort HOST:1024 to DEVICE:49232
[  +17 ms] HttpException: Connection closed before full header was received, uri = http://localhost:1024/ws
[+2008 ms] HttpException: , uri = http://localhost:1024/ws
[+2007 ms] HttpException: , uri = http://localhost:1024/ws
[+2008 ms] HttpException: , uri = http://localhost:1024/ws
[+2011 ms] HttpException: , uri = http://localhost:1024/ws
[+2006 ms] Failed to connect directly, falling back to mDNS
[   +5 ms] Checking for advertised Dart observatories...
[+5020 ms] No pointer records found.
[   +2 ms] mDNS query failed. Checking for an interface with a ipv4 link local address.
[   +2 ms] Found interface "en0":
[        ]  Bound address: "192.168.86.53"
[        ] Found interface "en5":
[        ]  Bound address: "169.254.128.136" link local
[        ] An interface with an ipv4 link local address was found.
[        ] Failed to connect with mDNS, falling back to log scanning

再次打開 xcode 並嘗試從 Xcode 運行。

$ open ios/Runner.xcworkspace/

運行應用程序,它會提供以下故障轉儲

頻道穩定

libsystem_kernel.dylib`__abort_with_payload:
    0x1b44c97ec <+0>:  mov    x16, #0x209
    0x1b44c97f0 <+4>:  svc    #0x80
->  0x1b44c97f4 <+8>:  b.lo   0x1b44c9810               ; <+36>     Thread 3: signal SIGABRT
    0x1b44c97f8 <+12>: stp    x29, x30, [sp, #-0x10]!
    0x1b44c97fc <+16>: mov    x29, sp
    0x1b44c9800 <+20>: bl     0x1b44a9ad0               ; cerror_nocancel
    0x1b44c9804 <+24>: mov    sp, x29
    0x1b44c9808 <+28>: ldp    x29, x30, [sp], #0x10
    0x1b44c980c <+32>: ret    
    0x1b44c9810 <+36>: ret    

版本檢查

huo-yang~/progs/flutter/flutter-testy/flutter_blue_example$ flutter --version
Flutter 1.17.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 1ad9baa8b9 (12 days ago) • 2020-06-17 14:41:16 -0700
Engine • revision ee76268252
Tools • Dart 2.8.4

頻道測試版

給出與上面相同的堆棧跟蹤。

版本檢查

huo-yang~/progs/flutter/flutter-testy/flutter_blue_example$ flutter --version
Flutter 1.19.0-4.2.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision 9b9b543d92 (7 days ago) • 2020-06-22 12:19:28 -0700
Engine • revision 9a28c3bcf4
Tools • Dart 2.9.0 (build 2.9.0-14.1.beta)

渠道開發

給出與上面相同的堆棧跟蹤。

版本檢查

$ flutter run --version
Flutter 1.20.0-2.0.pre • channel dev • https://github.com/flutter/flutter.git
Framework • revision 15a28159bc (6 days ago) • 2020-06-23 04:52:58 -0700
Engine • revision 91a63d6a44
Tools • Dart 2.9.0 (build 2.9.0-19.0.dev 7e72c9ae7e)

我嘗試了 flutter_blue 至少兩個月,但我無法以任何可靠的方式開始工作。 我不想 go 進入詳細信息,但您可以在 flutter_blue github 存儲庫中搜索我的 ID 並獲得一張不錯的圖片。

我終於切換到了flutter_ble_lib https://pub.dev/packages/flutter_ble_lib並在幾天內完成了我所有的工作。 我的代碼非常抽象,切換庫也沒問題。 一切都在 Android 和 IOS 上工作。 試試看。

我嘗試了適用於他但不適用於我的代碼的朋友版本。

這里

由於該代碼在同一個地方失敗,我再次檢查了堆棧跟蹤,我注意到堆棧跟蹤中有一個較早的失敗。

TCC`__CRASHING_DUE_TO_PRIVACY_VIOLATION__:

結果,我添加了以下內容

<key>NSBluetoothAlwaysUsageDescription</key>
    <string>This app uses bluetooth</string>

ios/Runner/Info.plist file

之后它就起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM