Flutter-iOS 용 빌드이지만 링크 및 임베디드 프레임 워크 'App.framework'는 iOS 시뮬레이터 용으로 제작되었습니다.


13

Xcode 13.4 베타를 사용하여 Catalina 10.15.4 베타로 업데이트 한 후 Simulator를 13.4 (921.4)로 업데이트했습니다.

응용 프로그램은 물리적으로 연결된 장치에서 올바르게 컴파일되고 실행되지만이 단계를 통과 할 수있는 장치의 시뮬레이터는 없습니다.

나는 오류를 얻었다

iOS 용으로 구축되었지만 링크 및 임베디드 프레임 워크 'App.framework'는 iOS 시뮬레이터 용으로 제작되었습니다.

또는

iOS 시뮬레이터 용으로 구축되었지만 연결된 내장 프레임 워크 'App.framework'는 iOS 용으로 제작되었습니다.

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

이 문제를 어떻게 해결할 수 있습니까?

답변:


42

Xcode 11.4는 프레임 워크의 링크 및 임베드 방식을 변경했으며 iOS 디바이스와 시뮬레이터 간 전환에 문제가 발생할 수 있습니다. Flutter v1.15.3 이상은 Xcode 프로젝트를 자동으로 마이그레이션합니다.

막히려면 아래 지침을 따르십시오.

  • 빠른 수정 (시뮬레이터 작동)

rm -rf ios/Flutter/App.framework

  • 수동으로 마이그레이션하는 공식 권장 단계

    1. Flutter 앱 디렉토리에서 Xcode의 ios / Runner.xcworkspace를 엽니 다.
    2. 네비게이터 분할 창에서 Flutter 그룹을 찾아 App.framework 및 Flutter.framework를 제거하십시오. 여기에 이미지 설명을 입력하십시오
    3. 러너 대상 빌드 설정에서 빌드 단계> 이진을 라이브러리에 링크하면 App.framework 및 Flutter.framework가 더 이상 존재하지 않습니다. 또한 빌드 단계> 프레임 워크 임베드에서 확인하십시오.

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

  1. 다음과 같이 러너 대상 빌드 설정 빌드 단계> Thin Binary 스크립트를 변경하십시오.

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh"포함

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh"thin

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

  1. 러너 대상 빌드 설정> 기타 링커 플래그에서

    (OTHER_LDFLAGS) $ (상 속됨) -framework Flutter 추가

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

그것이 도움이되기를 바랍니다!


이 질문은 최근에 종결되었으며 불분명 하고 Meta에 게시되어 많은 다운 보트를 받았습니다 . 그것이 무엇을 요구하는지 이해하는 것처럼 보입니다. 모호한 모양으로 편집하여 명확하지 않은 방법을 알고 있습니까?
CertainPerformance

1
매력처럼 작동합니다!
Giedrius Šlikas

3

Xcode 11.4는 프레임 워크의 링크 및 임베드 방식을 변경하여 iOS 장치와 시뮬레이터 간 전환 문제를 발생시킵니다.

프로젝트를 마이그레이션하는 방법에 대한 공식 가이드 를 따르십시오 .


공식 가이드를 따른 후에도 여전히 앱이 물리적 장치에로드되지 않았습니다. 가이드를 따라 flutter clean여러 번 실행 한 후 Pods/폴더 및을 삭제 Podfile.lock한 다음 pod install마지막으로 작동 한 ios 폴더를 사용하여 다시 설치 해야했습니다.
매튜 레너

2

Xcode 11.4로 업데이트되었습니다. iOS 13.4, Iphone X. 앱은 API를 사용하여 데이터를 가져옵니다. 앱이 흰색 화면에서 시작된 후 시뮬레이터와 장치에서 모두 충돌합니다.

나는 (또한 i를 offical 한 가이드를 따라 rm -rf ios/Flutter/App.framework) flutter.dev/docs/development/ios-project-migration . 나는 여러 번 달렸다flutter clean

또한 Pods / 폴더와 Podfile.lock을 삭제 한 다음 pod installios 폴더에서 다시 설치하려고했습니다 .

비동기 데이터를 사용함에 따라 main ()에서 첫 번째 줄로 추가했습니다.

WidgetsFlutterBinding.ensureInitialized();

도움말이 없습니다. 앱이 시뮬레이터를 시작하지 않았습니다.

그럼 난 제거 ios/android/폴더. 그 후 프로젝트 폴더에서 flutter create .언급 된 폴더를 재생성하는 명령 을 실행 했습니다.

이 후 내 응용 프로그램은 시뮬레이터와 장치에서 모두 잘 시작되었습니다. 이것이 다른 사람들에게 도움이되기를 바랍니다. 노트!! 해당 폴더를 수동으로 수정 한 경우 미리 백업하거나 커밋하십시오.


1

며칠 후 iOS 기기에서 Flutter 앱을 테스트하는 솔루션을 찾으려고 노력한 끝에 마침내 다음과 같은 사실을 발견했습니다.

flutter clean
flutter build ios

-xCode를 열고 장치에서 앱을 실행하십시오.


여전히 나를 위해 작동하지 않습니다. 내가 시도 같은 것은 실행 않습니다flutter build ios
레이몬드 Ativie


그래, 그게 내가 고마워 한 일
Raymond Ativie

0

나는 flutter의 공식 웹 사이트에서 해결책을 시도했지만 그것은 효과가 없었기 때문에 나를 위해 일한 임시 해결책을 찾았지만 약간의 노력이 필요했습니다. 새 프로젝트 (시뮬레이터에서 처음 실행)


  1. fluter 프로젝트 내에 "ios_simulator"및 "ios_real_device" 라는 2 개의 폴더를 만들었습니다 . 여기에 이미지 설명을 입력하십시오

  2. 이제 첫 번째 빌드는 시뮬레이터 용이고 실제 장치로 전환하고 싶습니다. Flutter 프로젝트 내의 ios 폴더를 "ios_simulator"로 옮깁니다.

  3. Visual Studio 코드로 프로젝트를 열고 "flutter create"를 실행합니다. 이제 프로젝트를 다시 빌드 할 실제 장치를 선택하겠습니다 (시뮬레이터가 온라인 인 경우 종료하십시오). 여기에 이미지 설명을 입력하십시오
  4. 이제 빌드가 완료 될 때까지 기다렸다가 실제 장치에서 오류없이 실행합니다. 이제 시뮬레이터 용 2 개의 iOS 프로젝트 1과 실제 장치 용 1이 있습니다.
  5. 다음에 시뮬레이터에서 다시 실행하려면 현재 ios 폴더를 제거하고 "ios_simulator"에 배치 한 ios 폴더를 다시 flutter 프로젝트 폴더로 복사합니다. 이 도움을 바랍니다

0

flutter를 버전 1.15로 수동 업그레이드하면이 문제도 해결됩니다. 달리는 flutter version v1.15.17것이 나를 도왔다.

또한 명령 을 실행 하여 beta또는 dev채널로 전환 할 수 flutter channel있지만 모든 BC 변경 사항에 대해 코드를 확인하십시오 ...


0

제 경우에는 시뮬레이터 (디버그) 만 작동합니다. 앱 스토어 (릴리스)에 앱을 배포하려면 다음을 사용하여 플러터 버전을 업그레이드하는 것이 좋습니다.

flutter version v1.15.17

그렇지 않으면 흰색 화면에서 앱이 다운 될 수 있습니다.

Flutter 버전을 업그레이드하면 모든 것이 잘 작동합니다.


1.15.17아직 안정 채널에 없습니다.
Loolooii
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.