[ios] iOS 기기에서 플러터 서명이 유효하지 않습니다

TL; DR

아래 답변을 참조하십시오 : https://stackoverflow.com/a/60013390/1121497

방금 13.4를 설치했고 이제 Flutter가 iPhone에서 작동하기 때문에 iOS 13.3에 문제가있는 것 같습니다. 🙂


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에서 팀 (개인 팀)을 구성하고 서명 인증서 (Apple 개발 인증서)를 장치에 Hello world Swift 프로젝트를 설치할 수 있기 때문에 괜찮습니다.

참고 : Apple Developer Program의 계정을 지불하지 않습니다 . iOS 기기에서 Flutter 앱을 실행하려면 반드시 필요한가요?

나는 따랐다 맥 OS 지침flutter doctor내가 iOS 용 모든 것을 I의 필요가 말한다 :

[] 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.

보시다시피, 나는 안정된 채널을 사용하여 베타 채널의 문제를 버렸지 만 일반적으로 베타 채널에서 웹용 플러터 를 만들기 위해 일합니다 (잘 작동합니다).

iOS 시뮬레이터에서 앱도 제대로 작동합니다.

최근에 나는 파일이 없다는 것을 알았습니다 ios/Podfile. 나는 이 게시물이 그것에 대해 이야기하는 것을 발견 했습니다. 필자의 경우 이것이 중요한지 아닌지는 모르겠지만 수동 으로이 Podfile을 추가하려고했습니다 . 어쨌든 동일한 서명 오류가 발생합니다.

이것에 좌절하여 지금 은 NativeScript 로 전환했습니다 .



답변

편집 : 이것은 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로 업그레이드하지 않는 것입니다.


답변

내가 볼 수있는 한 그것은 iOS 13.3.1의 Flutter 호환성 문제입니다. 필자의 경우 내 앱은 iOS 13.3이 설치된 iPhone XR에서 완벽하게 실행되지만 iOS 13.3.1이 설치된 다른 iPhone XR에서 시작하면 작동이 중단됩니다. 카메라 앱이므로 시뮬레이터에서 테스트 할 수 없지만 실제 Android 기기와 Android 에뮬레이터 모두에서 작동합니다.


답변

  1. xcode 라이센스 계약에 동의 했습니까? 그렇지 않은 경우 시도하십시오 sudo xcodebuild -license.
  2. 포드가 업데이트 되었습니까? 그렇지 않은 경우 터미널의 flutter 프로젝트에서 ios 폴더로 이동 pod install한 다음pod update

그래도 문제가 해결되지 않으면 flutter 프로젝트의 ios 폴더로 이동하여 Runner.xcworkspace를 두 번 탭하여 엽니 다. 다음과 같아야합니다.

여기에 이미지 설명을 입력하십시오

xcode가 열리면 왼쪽 상단의 Runner를 클릭하십시오.

여기에 이미지 설명을 입력하십시오

그런 다음 서명 및 기능으로 이동하여 “팀”드롭 다운에서 필드를 선택하십시오. 존재하지 않는 경우 계정을 만듭니다.

여기에 이미지 설명을 입력하십시오

그런 다음 “번들 식별자”에서 앱의 번들 이름이 표시되어야합니다. 끝에 .app를 추가하십시오. 예를 들어 “com.example.yourapp”인 경우 “com.example.yourapp.app”로 만들고 enter를 누릅니다.

선택한 기기에서 앱을 실행하려면 왼쪽 상단의 재생 버튼을 누릅니다.


답변

한 단계 씩 따라갈 수 있습니까

flutter channel master
flutter upgrade
flutter clean
flutter build ios


답변

이 게시물은 내가이 문제로 어려움을 겪고 있고 수정없이 한동안 있었기 때문에 이것을 작성했기 때문에 아닙니다.

내가 원하는 것은 여기 OP 및 다른 회원에게 자세한 내용을 제공하는 것입니다. 그래서 나는 OP가 말한대로 모든 것을 가지고 있습니다.

이것이 내가 시도한 것입니다.

  1. Podfile은 (시뮬레이터 등에서 실행 한 후에도) 생성되지 않으므로 Flutter Github의 flutter 예제 앱에서 하나를 포함 시키려고했습니다.

    • iOS 디렉토리 지우기
    • 포드 파일 추가
    • 포드 업데이트를 실행했습니다.
    • 수정 된 경고 (Pod 디버그 및 릴리스 구성을 Xcode에 제공)
    • FLUTTER_ROOT를 사용자 정의 설정에 추가하고 (없음) Xcode-backend.sh 오류가 발생했습니다 (정확히 기억하지 마십시오, 죄송합니다)
    • 세워짐

그래서 다음 단계는 생산 : 시뮬레이터에 오류가 발생했습니다. 물리적 장치에 포드가없는 것과 동일한 서명 오류

  • Keychain Access에서 모든 인증서를 삭제하고 Xcode를 통해 복원했습니다.

    결과 : 변경 사항 없음

  • Xcode, 포드 및 관련 설정을 제거했습니다. 인증서를 제거했습니다. 재부팅 후 새로 복원 (새로 설치)

    결과 : 다시, 포드로 빌드하거나 동일한 오류 를 제공하지 않고 빌드

  • Flutter를 개발자 채널 (1.14.1)로 업그레이드하고 다음을 사용하여 프로젝트를 재생성했습니다. flutter create .

    Reran 빌드. 포드가 있거나없는. 여전히 같은

  • 또한 모든 대상 (Pod 포함)에서 Apple Developer에서 iOS Developer로 서명을 변경하려고했습니다.

    Pods-Runner에 서명을 시도했기 때문에 약간의 오류가 발생했습니다 (약간의 희망이있었습니다). 그러나 전반적으로 새로운 것은 없습니다.

  • iOS 13.3.1 Beta에서 장치를 실행하면서 Target을 13.2로 업그레이드했습니다 (지금 최대 값이 있습니까?).

    아니

  • macOS 빌드를 활성화하고 Mac 앱을 빌드했습니다.

    그것은 정해진대로 실행되며 모든 것이 괜찮습니다.

요약하면 :

  • 이 문제는 Pod / Non-Pod 프로젝트에 의존하지 않습니다.
  • 최신 안정적인 flutter와 최신 개발자간에이 문제와 관련하여 변경된 사항이 없습니다 (사후 작성).
  • 이 버그는 Xcode 재설치로 해결되지 않으며 키 체인 인증서와 관련이 없습니다.
  • 실제 iOS 기기 (필자의 경우 iPhone X) 전용으로 빌드 할 때만 문제가 발생합니다. 시뮬레이터 (팟없이)가 잘 작동합니다.

Btw. Catalina 10.15.3 및 Xcode 11.3.1이 설치된 MacBook Pro 13에서 모든 것이 실행되었습니다.

모든 실행에는 -v 플래그가 있었으며 빌드 중에 로그에서 의심스러운 것이 없습니다.

다시. 이 게시물을 잘못 게시 한 경우 죄송하지만이 게시물이 꽤 길어서이 문제를 복제하거나 OP 수정을 제안하고 싶지 않습니다.


답변

를 통해 안정적인 채널로 전환하고 flutter channel stable실행 flutter upgrade한 다음 앱 프로젝트로 이동하여 실행하십시오.flutter run


답변

앱을 디버그 모드로 실행하기 위해 Apple 유료 계정이 필요하지 않습니다. 1) 해당 프로젝트의 xCode를 열고 장치를 선택하고 실행하십시오.

해당 프로젝트의 XCode를 열고 FLUTTER_ROOT 경로가 올바르므로 빌드 설정을 확인하십시오 (플러터 루트가 없으면 경로를 제공하십시오).