chakokuのブログ(rev4)

日々のごった煮ブログです

flutter 実機用ビルドメモ(workaroundというか)

(実機用にビルドするとエラー、BundleIDがデフォルトのままなのがいけないのか?

It appears that your application still contains the default signing identifier.
Try replacing 'com.example' with your signing id in Xcode:
  open ios/Runner.xcworkspace
Encountered error while building for device.

指定されているファイルではないが、、怒られているcom.exampleはproject.pbxprojにしかないので。。

% pwd
/Users/<usr_name>/lang/flutter/awsiot/ios/Runner.xcodeproj

% grep example project.pbxproj
              PRODUCT_BUNDLE_IDENTIFIER = com.example.awsiot;
              PRODUCT_BUNDLE_IDENTIFIER = com.example.awsiot;
              PRODUCT_BUNDLE_IDENTIFIER = com.example.awsiot;

これらをApple Developerに登録しているBundleIDに替えてみる。

% diff bkup project.pbxproj
298c298
<                               PRODUCT_BUNDLE_IDENTIFIER = com.example.awsiot;
---
>                               PRODUCT_BUNDLE_IDENTIFIER = jp.dxxxxxxk.flutter;
427c427
<                               PRODUCT_BUNDLE_IDENTIFIER = com.example.awsiot;
---
>                               PRODUCT_BUNDLE_IDENTIFIER = jp.dxxxxxxxk.flutter;
450c450
<                               PRODUCT_BUNDLE_IDENTIFIER = com.example.awsiot;
---
>                               PRODUCT_BUNDLE_IDENTIFIER = jp.dxxxxxxk.flutter;

メッセージが変わったものの怒られ続ける。Xcodeを走らせて手当が必要かも
根本原因が分からなかったので、Xcodeを使って一度プロジェクトをコンパイル、正常に動作したので、
コマンドラインに戻って、再度ビルドしたが怒られる(WindowsPCからMacにリモートで入って作業)
直接Macで操作すると正常にビルドできた(リモートだとNGなのは書き込み権限によるのか、環境変数の違いか。。)

以下でビルド

$ flutter build ios

今度は正常にビルドできたので、以下で実機にインストール (デバイス名省略しているので、実行中に聞かれます)

$ flutter install 

この作業で、AWS IoTに接続してスマートメータの瞬時値を1分周期で表示できるスマフォアプリができた。以下がスマフォアプリの画面
前回と変わりませんが、AWS IoT CoreにMQTTで繋いでいる

どれだけ要望あるか分かりませんが、ソースは清書できたらGitLabに上げる予定(今はまだかなり汚いコードなので)
残る作業は、、スマフォから参照したい時に更新リクエストを出せるPublishする機能を作る、AWS IoT CoreのPublishをフックしてLambdaを呼び出してCRONを起動するスクリプトを作る(このままだったら24/365で1分周期でLambdaが動いてPublishするのでコストが無料枠を超えそうで、そもそも誰も見ていない時にPublishしまくるのは無駄)