iOSデバイスで試行するとFlutter署名が無効になる


11

TL; DR

以下の回答を参照してください:https : //stackoverflow.com/a/60013390/1121497

iOS 13.3で問題があったようです。13.4をインストールしたばかりで、FlutterがiPhoneで動作するようになりました。:)


flutter createiOSデバイス(iPhone XS)で新しいFlutterアプリ(によって作成されたサンプルアプリ)を実行しようとしています。Xcodeはそれをインストールできましたが、次のメッセージでクラッシュします。

dyld: Library not loaded: @rpath/Flutter.framework/Flutter
  Referenced from: /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Runner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter: code signature invalid for '/private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter'

を試すflutter runと、アプリも開いてクラッシュします。そしてコマンドは永遠に待ち続けます:

$ flutter run
Launching lib/main.dart on Ferran Maylinch’s iPhone in debug mode...

Automatically signing iOS for device deployment using specified development team in Xcode project: 25D86TPBWG
Running Xcode build...                                                  

 ├─Assembling Flutter resources...                           4.3s
 └─Compiling, linking and signing...                        13.3s
Xcode build done.                                           21.0s
Installing and launching...                                             
(This is taking an unexpectedly long time.)

Xcodeでチーム(個人チーム)を構成しましたが、デバイスにHello world Swiftプロジェクトをインストールできるため、署名証明書(Apple開発証明書)は問題ないようです。

注:Apple Developer Programのアカウントは支払っていません。iOSデバイスでFlutterアプリを実行するために絶対に必要ですか?

私は続いているMacOSの命令をし、flutter doctor私はiOSのために必要なすべてを持っていると言います。

[] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-ES)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[] Xcode - develop for iOS and macOS (Xcode 11.3)
[!] Android Studio (version 3.5)Flutter plugin not installed; this adds Flutter specific functionality.Dart plugin not installed; this adds Dart specific functionality.
[] IntelliJ IDEA Ultimate Edition (version 2019.3.1)
[!] VS Code (version 1.41.1)Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[] Connected device (1 available)

! Doctor found issues in 3 categories.

ご覧のとおり、私は安定したチャネルを使用してベータチャネルの問題を破棄しましたが、通常はベータチャネルでWeb用のフラッターを作成します(これは正常に機能します)。

iOSシミュレーターでもアプリは正常に動作します。

最近、このファイルがないことに気付きましたios/Podfile。それについて話しているこの投稿を見つけました。私の場合、これが重要かどうかはわかりませんが、このPodfileを手動で追加しようとしました。とにかく、同じ署名エラーが発生します。

これにイライラして、今のところNativeScriptに切り替えました。


実際のデバイスでデバッグモードまたはリリースモードで実行しようとしていますか?
Sunkuu7

@SlahLayouniデバッグモードでした。リリースモードを試しましたが、同じエラーで失敗します。
Ferran Maylinch

最初にリリースをビルドしてから、リリースとしてxcodeから実行してください。flutter build ios --release
Sunkuu7

1)iOSシミュレーターを試しましたか?2)iPhoneデバイスにSwift / Xcodeで「Hello World」をデプロイ/実行しましたか?個人証明書は、電話機への展開に適しています。
Morrison Chang

回答:


8

編集:これは、3月24日にリリースされたiOS 13.4で修正されています。

これは、Flutterとは無関係のiOS 13.3.1の回帰です。新しいXcodeプロジェクトを作成し、フレームワークターゲットを追加し、パーソナルチームプロビジョニングプロファイルを選択することで、FlutterやCocoaPodsのコードなしでクラッシュを再現できました。

GitHubの問題:https : //github.com/flutter/flutter/issues/49504#issuecomment-581554697を参照してください

バグは、既に署名され、App Storeで配布されている開発者アカウントチームのプロビジョニングプロファイルまたはアプリに影響を与えません。

残念ながら、唯一の回避策は、これが解決されるまで開発デバイスを13.3.1にアップグレードしないことです。


どうもありがとうございました!これができるだけ早く修正されることを願っています!
Ferran Maylinch

これはiOSレベルの問題ですか?iOS 13.3.1バージョンを搭載したiPhoneでもこの問題が発生します
Adromil Balais

はい、これはiOS 13.3.1以降の問題であり、パーソナルチームプロビジョニングプロファイルの署名済みフレームワークを拒否します。Flutterに固有のものではありません。GitHubコメント内のリンクは他のプロジェクトを参照しており、Flutterを埋め込むことなく、Xcodeの新しいフレームワークで簡単に再現できました。
ジェン

私は今iOS 13.4で試したところ、うまくいきました!XcodeとIntelliJ IDEAから実際のiPhoneでFlutterアプリを実行できました。コマンドラインからもうまくいくと思います。
Ferran Maylinch

4

私が見る限り、これはiOS 13.3.1とのFlutter互換性の問題です。私の場合、私のアプリはiOS 13.3を搭載したiPhone XRでは完全に正常に動作しますが、iOS 13.3.1を搭載した別のiPhone XRで起動するとクラッシュします。カメラアプリなのでシミュレータでテストできませんが、物理的なAndroidデバイスとAndroidエミュレータの両方で機能します。


あなたが正しいです。iPad 13.3でテストしたところです。私の電話は13.3.1で動作しません。ベータ2に更新して試してみる:-)
Ken Hui

13.3.1パブリックベータ2にも同じ問題があります。
ケン・ホイ

3
  1. xcodeライセンス契約に同意しましたか?そうでない場合は、を試してくださいsudo xcodebuild -license
  2. ポッドは更新されていますか?そうでない場合は、フラッタープロジェクト内のIOSフォルダに移動であなたの端子と入力しpod install、その後pod update

これが機能しない場合は、flutterプロジェクトのiosフォルダーに移動し、Runner.xcworkspaceをダブルタップして開きます。次のようになります。

ここに画像の説明を入力してください

xcodeが開いたら、左上のRunnerをクリックします。

ここに画像の説明を入力してください

次に、[署名と機能]に移動し、[チーム]ドロップダウンでフィールドを選択します。存在しない場合は、アカウントを作成します。

ここに画像の説明を入力してください

次に、「バンドルID」に、アプリのバンドル名が表示されます。最後に.appを追加します。たとえば、「com.example.yourapp」の場合、「com.example.yourapp.app」にしてEnterキーを押します。

左上の再生ボタンを押して、選択したデバイスでアプリを実行します。


Podfileがありません。私はこの記事を見ていstackoverflow.com/questions/51599686/...
フェランMaylinch

cocoapodsをマシンにインストールし、iosディレクトリでpodコマンドを実行します。
Yudhishthir Singh

私はココアポッドを持っています。どのポッドコマンドを使用すればよいですか?
Ferran Maylinch

ポッドのインストール、次にポッドの更新
ユディシュティルシン

回答を編集しましたので、ご覧ください。
Yudhishthir Singh

1

1つずつ手順を実行できますか

flutter channel master
flutter upgrade
flutter clean
flutter build ios

私はそれを試しました。ベータチャンネルでも。
Ferran Maylinch

エラーは署名機能に関連し、フラッターブランチはそれとは何の関係もありません。
Yudhishthir Singh

1

私はこの問題にも苦労しているのでこの投稿は回答ではありません

ここでOPと他のメンバーに詳細を提供するだけです。OPが述べたように私はすべてを持っています。

これは私が試したものです:

  1. Podfileは(シミュレーターなどで実行した後でも)作成されないため、Flutter Githubのflutterサンプルアプリから1つ含めようとしました。

    • クリアされたiOSディレクトリ
    • ポッドファイルを追加しました
    • ポッドの更新を実行しました。
    • 修正された警告(Podデバッグとリリース構成をXcodeに提供)
    • ユーザー定義の設定にFLUTTER_ROOTが追加され(存在しなかった場合)、Xcode-backend.shエラーが発生しました(正確に覚えていない、申し訳ありません)
    • 建てられた

したがって、これらの手順では次のことが発生します。物理デバイスにポッドがない場合と同じ署名エラー

  • キーチェーンアクセスからすべての証明書を削除し、Xcode経由で復元しました。

    結果:何も変化しなかった

  • Xcode、Pod、およびそれに関連する設定を削除しました。証明書を削除しました。再起動後にすべてを復元(新規インストール)

    結果:繰り返しますが、ポッドでビルドしたり、同じエラーを提供したりせずにビルドしてください

  • Flutterを開発チャネル(1.14.1)にアップグレードし、プロジェクトを再生成しました flutter create .

    Reranビルド。ポッドありとなし。まだ同じ

  • また、すべてのターゲット(ポッドを含む)で署名をApple DeveloperからiOS Developerに変更しようとしました

    これで、Pods-Runnerに署名しようとしたため、いくつかエラーが発生しました(少し希望がありました)。しかし、全体的に新しいものはありません。

  • iOS 13.3.1 Betaでデバイスを実行しているときに、Targetを13.2にアップグレードしました(現在、最大数を利用できますか?)。

    いや

  • macOSビルドを有効にし、Macアプリをビルドしました

    意図したとおりに実行され、すべてが正常です。

総括する:

  • この問題は、ポッド/非ポッドプロジェクトに依存していません。
  • 最新の安定したフラッターと最新の開発者の間でこの問題に関して何も変更されていません(投稿されたとおり)
  • このバグはXcodeの再インストールでは修正されず、キーチェーン証明書とは関係ありません
  • 物理的なiOSデバイス(私の場合はiPhone X)のみをビルドする場合にのみ、問題がポップアップします。シミュレータ(ポッドなし)は問題なく動作します。

ところで すべては、Catalina 10.15.3がインストールされ、Xcode 11.3.1がインストールされたMacBook Pro 13で実行されていました。

すべての実行は-vフラグで行われ、ビルド中にログに疑わしいものは見つかりませんでした

再び。この投稿を間違って投稿してしまった場合は申し訳ありませんが、この投稿はかなり長いため、この問題を複製したり、編集を提案したりしたくありませんでした。


この回答をありがとうございました。それは解決策ではありませんが、非常に役立ちます。明らかに、Flutterに何か問題があります。GoogleがAppleが期待していることを正確に認識していないか、AppleがFlutterをスムーズに動作させることに興味がないようです... :)
Ferran Maylinch

ちなみに、昨日私は別のMacでFlutterをMojave(私はCatalinaを使っています)で試しましたが、同じエラーが発生しました。
Ferran Maylinch

ほとんどの場合、これはCodeSignまたはFlutter自体に関連するものです。問題github.com/flutter/flutter/issues
Emin Guliev

はい。良いアイデア。あなたがそれをするか、私がそれを私ができるかどうか私に知らせてください。
Ferran Maylinch

0

を介して安定したチャネルに切り替えてflutter channel stable実行flutter upgradeし、アプリプロジェクトに移動して実行しますflutter run


残念ながら、同じエラーが発生します。安定したチャネルに変更した後、新しいフラッターアプリを作成しました。質問を更新して、今は安定したチャネルにいることを示しました。
Ferran Maylinch

フラッターランの出力も追加しました。
Ferran Maylinch

0

アプリをデバッグモードで実行するためだけに、Appleの有料アカウントは必要ありません。1)そのプロジェクトのxCodeを開き、デバイスを選択して実行します。

そのプロジェクトのXCodeを開き、FLUTTER_ROOTパスが正しいのでビルド設定を確認します。ない場合はフラッタールートを作成してパスを指定します。


正しいFLUTTER_ROOTです。それは問題ではありません... :(
Ferran Maylinch

0

Xcodeのを開き、をクリックしますProduct -> Clean(またはCMD- - )。Shift Kそれがうまくいかなかった場合は、次のことを試してください:https : //macpaw.com/how-to/clear-xcode-cache

それでも機能しない場合は、お知らせください。


動作しません。:私は、このチェックてるので、私は、何のPodfileを持っていない実現stackoverflow.com/questions/51599686/...を
フェランMaylinch

0

このリンクを確認しましたが、希望の出力https://github.com/flutter/flutter/issues/16507が得られる可能性があります。それが機能するかどうかが署名の問題である可能性がある場合は、私に知らせてください。この投稿では、何がうまくいかないかについてのアイデアが得られます。ありがとう


私はこれをチェックしていますので、私はPodfileを持っていない:stackoverflow.com/questions/51599686/... とにかく、私は何Podfile Iの必要性を知りません。作成しましたが、同じエラーが発生します。だから私はおそらくPodfileを必要としないか、とにかく問題は別の問題です。
Ferran Maylinch

0

答えを作成する時間があります:

基づかSubaharanヴェル答え、質問:フラッターPodfileとポッドフォルダは、IOSのディレクトリに作成されていない のiOSシミュレータ用に構築することを示唆している答え間違った場所にpodfileを作成することができます(iOSのディレクトリに自動的に直接作成されなければならないので、それは可能性が高いと思われ、あなたのPodfile。どこかに存在します。それを見つけるか、iosディレクトリ全体を削除して、プロジェクトをクリーンアップして再作成してください。また、これが当てはまらないことを確認してください。Flutterプラグインを追加する前にiOSポッドを追加するPodfileを作成しても、プラグインポッドは接続されません。既存のPodfile

幸運を祈ります。


Podfileどこにもありません。走ってfind . -name Podfileも何も得られない。iosディレクトリを削除しましたが、どうすれば再作成できますか?実行するflutter build iosと、エラーが発生しますApplication not configured for iOS
Ferran Maylinch

@Ferran Maylinch Surbahan Vel(最初のリンク)からすべての手順を繰り返すだけです-彼はiosディレクトリを削除し、プロジェクトのクリーニング後に再作成されました。必要に応じてポッドファイルを手動で追加します(stackoverflow.com/a/53492243/7183675から、そこから不要なポッドを削除し、この回答の下の2番目のコメントも確認してください)。最後の手段として、少なくとも1つのパッケージをpubspecに追加して、FlutterにPodfileを自動的に作成させることができます。このパッケージが実際に使用されていない場合でも
Adam Tucholski

0

理想的な解決策ではありませんが、次の方法でうまくいきました。

  1. デバイスをiOS 13.4ベータ版にアップグレードします
  2. 実行フラッター実行を
  3. ビルドは成功するはずです。
  4. 「XcodeバージョンがiOSバージョンに対して古すぎる可能性があります」というエラーがスローされます
  5. アプリケーションがデバイスにインストールされます。注:プロセスが終了しても、アプリケーションは自動的には起動しません。
  6. デバイスにインストールされているアプリのアイコンをクリックして、アプリを起動します。

ただし、エラーがスローされた後にプロセスが終了するため、デバッグウィンドウには何も表示されません。これは理想的な解決策ではありませんが、次のXcode更新を取得するまでの回避策です。 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.