<

Flutter を使用した macOS アプリの構築

このページでは、構築に特有の考慮事項について説明します。 Flutter を使用した macOS アプリ (シェル統合を含む) Apple Store を通じた macOS アプリの配布。

macOS のルック アンド フィールとの統合

選択したビジュアル スタイルやテーマを使用できますが、 macOS アプリを構築するには、アプリを適応させる必要があるかもしれません macOS のルック アンド フィールとより完全に一致するようになります。 flutterには以下が含まれますクパチーノウィジェットセット、 ウィジェットのセットを提供します 現在の iOS デザイン言語。 スライダーを含むこれらのウィジェットの多くは、 スイッチとセグメント化されたコントロール、 macOS での使用にも適しています。

あるいは、次のものが見つかるかもしれません。macos_uiニーズに合わせたパッケージをご提案します。 このパッケージは、次のようなウィジェットとテーマを提供します。 macOS デザイン言語を実装し、 を含むMacosWindowフレームと足場、 ツールバー、プルダウン、 ポップアップ ボタンとモーダル ダイアログ。

macOS アプリの構築

macOS アプリケーションを配布するには、次のいずれかを実行できます。macOS App Storeを通じて配布する、 または、.app自体、 おそらくあなた自身のウェブサイトから。 macOS 10.14.5 以降では、公証する必要があります。 macOS アプリケーションを配布する前に macOS App Store の外にあります。

上記の両方のプロセスの最初のステップ Xcode 内でアプリケーションを操作する必要があります。 アプリケーションを内部からコンパイルできるようにするには Xcodeでは、まずリリース用のアプリケーションをビルドする必要があります を使用してflutter buildコマンドを実行してから、 Flutter macOS Runner アプリケーション。

flutter build macos
open macos/Runner.xcworkspace

Xcode に入ったら、Apple のいずれかに従ってください。macOS アプリケーションの公証に関するドキュメント、 またApp Store経由でのアプリケーションの配布について。 も一読してください。macOS 固有のサポート権利がどのように付与されるかを理解するには、以下のセクションを参照してください。 アプリサンドボックスと強化されたランタイム 分散可能アプリケーションに影響を与えます。

macOS アプリをビルドしてリリースするより詳細な情報を提供します Flutter アプリをリリースするための段階的なウォークスルー アプリストア。

資格とアプリのサンドボックス

macOS ビルドはデフォルトで署名されるように構成されています。 アプリサンドボックスでサンドボックス化されます。 つまり、特定の権限を付与したい場合は、 macOS アプリの機能またはサービス、 次のようなもの:

  • インターネットにアクセスする
  • 内蔵カメラから動画や画像を取り込む
  • ファイルへのアクセス

次に、特定の設定を行う必要があります権利Xcodeで。 次のセクションでは、これを行う方法について説明します。

権利の設定

サンドボックス設定の管理は、macos/Runner/*.entitlementsファイル。編集時 これらのファイルは、元のファイルを削除しないでくださいRunner-DebugProfile.entitlements例外 (受信ネットワーク接続と JIT をサポートします)、 必要なものなので、debugprofileモードが正しく機能するようにします。

権利ファイルの管理に慣れている場合は、 のXcode 機能 UI、機能に注意してください。 エディターが 2 つのファイルのうち 1 つだけを更新する、または、 場合によっては、まったく新しい権利が作成されることもあります ファイルを作成し、それをすべての構成で使用するようにプロジェクトを切り替えます。 どちらのシナリオでも問題が発生します。を推奨します。 ファイルを直接編集します。よほど具体的なことがない限り、 そのため、両方のファイルに常に同じ変更を加える必要があります。

アプリ サンドボックスを有効にしたままにする場合 (これは、次の場合に必須です) でアプリケーションを配布することを計画します。アプリストア)、 アプリケーションの資格を管理する必要がある 特定のプラグインまたは他のネイティブ機能を追加するとき。 たとえば、file_chooserプラグイン 以下のいずれかを追加する必要がありますcom.apple.security.files.user-selected.read-onlyまたcom.apple.security.files.user-selected.read-write権利。 もう 1 つの一般的な権利は、com.apple.security.network.client、 ネットワーク要求を行う場合は、これを追加する必要があります。

なしでcom.apple.security.network.client権利、 たとえば、ネットワーク リクエストは次のようなメッセージで失敗します。

flutter: SocketException: Connection failed
(OS Error: Operation not permitted, errno = 1),
address = example.com, port = 443

これらのトピックの詳細については、 見るアプリサンドボックスと権利Apple 開発者サイトで。

強化されたランタイム

アプリケーションを外部に配布することを選択した場合 App Store の場合は、アプリケーションを公証する必要があります macOS 10.15以降との互換性のため。 これには、強化されたランタイム オプションを有効にする必要があります。 有効にしたら、有効な署名が必要です ビルドするための証明書。

デフォルトでは、資格ファイルは次の JIT を許可します。 ビルドをデバッグしますが、アプリ サンドボックスと同様に、 他の権利を管理する必要がある。 App Sandbox と Hardened の両方がある場合 ランタイムが有効になっているため、複数の追加が必要になる場合があります 同じリソースに対する権利。 たとえば、マイクへのアクセスには両方が必要です。com.apple.security.device.audio-input(強化されたランタイムの場合) とcom.apple.security.device.microphone(アプリサンドボックスの場合)。

このトピックの詳細については、 見る強化されたランタイムApple 開発者サイトで。