dyld: 라이브러리가 로드되지 않았습니다: @rpath/libswiftCore.dylib
iPhone4s에서 Swift 앱을 실행하려고 합니다.시뮬레이터로 잘 동작하고 있고, 친구는 아이폰4s로 정상적으로 동작할 수 있습니다.iOS8과 Xcode6 정식 릴리즈를 가지고 있습니다.
난 시도했다.
- Xcode, iPhone, 컴퓨터 재시작
- 청소 및 재구축
- 증명서/프로비저닝 프로파일 취소 및 생성
- 경로 검색 경로가 행 로 색 로 : 경 run path search검경실 is paths run search)를 실행합니다.
$(inherited) @executable_path/Frameworks
- 포함된 컨텐츠에 Swift 코드가 '예'입니다.
- 코드 서명 ID는 개발자
에러 전체를 이하에 나타냅니다.
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
나에게 있어서, 지금까지의 해결책은 효과가 없었다.빌드 설정에 "Always Embed Swift Standard Libraries" 플래그가 있어 이를 "YES"로 설정해야 합니다.디폴트로는 NO였어요!
Build Settings > Always Embed Swift Standard Libraries
이 설정을 마친 후 다시 빌드하기 전에 프로젝트를 청소하십시오.
열렬한 독자를 위해 설명 가장 중요한 부분은 다음과 같습니다.
그림 2와 같이 앱에서 Embedded_CONTENDES_SWIFT(Embedded_CONTINTS_SWIFT) 빌드 설정을 YES로 설정합니다.대상 제품에 Swift 코드가 포함된 콘텐츠가 있는지 여부를 지정하는 이 빌드 설정은 YES로 설정되면 Xcode에게 Swift 표준 라이브러리를 앱에 포함하도록 지시합니다.
The flag was formerly called 그 깃발은 이전에 불렸다.Embedded Content Contains Swift Code
놀랍게도 프로젝트(shift+cmd+K)를 '청소'만 하면 효과가 있었습니다.자격증과 관련된 것 같긴 한데.
삭제했을 때, 다음의 에러가 표시되기 시작했습니다.
@executable_path/Frameworks
부에서Runpath Search Paths
내 설정에서내 빌드 설정에서.모든 것을 교체하는 모든 것을 다시 고정하십시오.교체하면 모든 것이 복구됩니다(소스 제어에 감사함).
어떻게 그렇게 되었는지는 모르겠지만 내장된 Swift 런타임을 찾기 위해서는 바이너리가 필요한 것 같습니다.
장치의 경우 바 이 스 우 이 레 내 임 for, the need도 framework the device프크 to워 also you the믹다 add경디)에 동적 프레임워크를 추가해야 한다.Embedded binaries
의 항General
탭으로 이동합니다.
에서는 Xcode 8의 입니다.Embedded Content Contains Swift Code
옵션은 사용할 수 없습니다.
이 로로 to to it it it it it it it it it it로 바뀌었다."Always Embed Swift Standard Libraries = YES"
Xcode 13(리액트 네이티브의 경우는 13.1).
하여 본 적이 있습니다./usr/lib/swift
Runpath Search Paths의 엔트리로 표시됩니다.
그 후, 내 프로젝트는 충돌하지 않고 실행되었습니다!
이전에 제안되었던 것에서는 아무것도 도움이 되지 않았다.
Xcode에서 직접 증명서가 생성되면 버그라고 생각합니다.해결 방법(Xcode 6.1/6A1052d 이상)
- 증명서가 관리되고 있는 Apple Developer Web 사이트에 액세스 합니다.https://developer.apple.com/account/ios/certificate/certificateList.action
- 증명서를 선택하고(「상태」아래에 「Xcode에 의한 관리」라고 표시됩니다) 그것을 「취소」합니다.
- https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html #//apple_ref/doc/uid/TP40012582-CH31-SW32에 따라 수동으로 새 증명서를 생성합니다.
- [ Xcode ]> [ Preferences ]> [ Accounts ]> [ your Apple ID ]> [ team name ]> [ refresh ]버튼을 더블 클릭하여 증명서와 프로비저닝프로파일을 갱신합니다.
Swift 테스트 실행 중 이 문제가 발생했습니다(앱이 아닙니다). 에서는 이 테스트보다 더 한 것으로 .@executable_path/Frameworks
에 it inRunpath Search Paths
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 설정하는 했습니다: Runpath Search Paths 음 。
$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks
여기서 이 오류의 다른 원인을 공유합니다.이걸 해결하는 데 몇 시간이 걸렸어요
제 경우 키 체인 액세스에서 증명서의 신뢰 정책이 Always Trust로 되어 있습니다.기본값으로 되돌리면 문제가 해결되었습니다.
증명서 설정 창을 열려면 증명서 키 체인 액세스목록에서 증명서를 더블 클릭합니다.
이 문제는 Xcode 10.2에서 다시 발생합니다.Apple에서 다음 패키지를 다운로드하여 설치해야 합니다.명령줄 도구에 대한 Swift 5 런타임 지원을 제공합니다.
https://support.apple.com/kb/DL1998?locale=en_US
'어울릴 수 없다'를 돼요.Runpath Search Paths
로로 합니다.@executable_path/Frameworks
빌드 설정의 다음 스크린샷에 나와 있습니다.
임베디드 Swift로 할 수 .YES
[ Options ]( 옵션)Embedded Content Contains Swift Code
.
애플은 이미 Swift 라이브러리 libswiftCore.dylib를 참조하려고 할 때 Swift 앱 크래시에 대해 요약했다고 생각합니다.
테크니컬 Q&A QA1886에서 인용한 내용:
Swift 라이브러리 libswiftCore.dylib을 참조하려고 하면 Swift 앱이 크래시됩니다.
Q: Swift 언어 앱을 실행하려고 할 때 발생하는 디바이스 콘솔의 libswiftCore.dylib 로딩 오류는 어떻게 해야 하나요?
A: 이 문제를 해결하려면 팀 ID로 설정된 OU(Subject Organizational Unit)를 사용하여 코드 서명 인증서를 사용하여 앱에 서명해야 합니다.iOS 8 출시 후 생성되는 모든 엔터프라이즈 및 표준 iOS 개발자 인증서는 Swift 언어 앱을 실행할 수 있도록 적절한 위치에 새로운 팀 ID 필드가 있습니다.
일반적으로 이 오류는 다음 중 하나의 메시지와 함께 장치의 콘솔 로그에 표시됩니다.
[....] [deny-mmap] mapped file has no team identifier and is not a platform binary:
/private/var/mobile/Containers/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib
Dyld Error Message:
Library not loaded: @rpath/libswiftCore.dylib
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0
Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5
새 인증서는 아카이브를 구축하고 앱을 패키징할 때 필요합니다.새로운 인증서 중 하나를 가지고 있더라도 기존 신속한 앱 아카이브를 종료하는 것만으로는 작동하지 않습니다.iOS 8 이전 버전의 인증서를 사용하여 빌드된 경우 다른 아카이브를 빌드해야 합니다.
중요: 새로운 Enterprise Distribution 인증서를 해지하고 설정해야 할 경우 주의하십시오.사내 엔터프라이즈 개발자인 경우 엔터프라이즈 직원 중 한 명이 아직 사용 중인 앱에 서명하는 데 사용된 배포 인증서를 해지하지 않도록 주의해야 합니다. 해당 엔터프라이즈 배포 인증서로 서명된 앱은 즉시 작동을 중지합니다.위의 내용은 Enterprise Distribution 증명서에만 적용됩니다.개발 증명서는 기업/표준 iOS 개발자에게서 취소해도 안전합니다.
AirSign guyers가 사내증명서 서브젝트필드에 없는OUAtribute에서 문제의 원인을 기술하고 있습니다.
제목 : UID=269J2W3P2L, CN=iPhone 배포:회사명, OU=269J2W3P2L, O=회사명, C=FR
저는 기업 개발 증명서를 가지고 있고, 새로운 증명서를 만들어 문제를 해결했습니다.
프로젝트 P가 커스텀라이브러리 L을 Import하고 있다고 칩시다.그러면 L을 에 추가해야 합니다.
전 좋아요P -> Build Phases -> Embed Frameworks -> +
.
이 오류 메시지는 Xcode 업그레이드 시(그리고 이후 Swift의 새 버전으로) 이전/이전 버전으로 구축/컴파일된 프레임워크를 프로젝트에 사용할 때도 발생할 수 있습니다.
이 경우 프레임워크를 재구축하고 다시 추가하면 문제가 해결됩니다.
가장 쉽고 무시하기 쉬운 방법: 청소 및 재구축.
이것으로, 상기의 회답을 시험해 본 결과, 문제가 해결되었지만 동작하지 않았습니다.
새 Mac으로 옮긴 후에도 같은 문제가 발생했는데, 몇 시간 후에 질문에서 제시된 모든 답변을 시도해 봤지만, 이 모든 것이 잘 되지 않았습니다.
이 누락된 증명서를 설치하는 것이 저의 해결책이었습니다.http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
여기서 답을 찾았습니다.https://stackoverflow.com/a/14495100/976628
대상에 대한 복사 포드 리소스를 다음 위치에서 변경합니다.
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"
대상:
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
파생된 데이터를 삭제하여 해결하였고, 이번에는 정상적으로 동작하였습니다.Xcode 7.3.1로 시험했다.GM
모든 것을 시험해 본 결과, 빌드에 항상 모든 디테일이 포함되어 있는 것은 아닌 것 같다는 것을 알게 되었습니다.아마도 처리 속도를 높이기 위해서...디바이스에서 실행하기 전에 패키징 전체를 확인하려면 먼저 Cleaning을 수행합니다.Shift-Cmd-K다음으로 빌드: Cmd-B.그런 다음 장치에서 실행합니다.진정해요. 그 자리에 계신 모든 멋진 분들께 안부 전해주세요!
swift를 사용하는 라이브러리를 포함하는 xcode 프로젝트를 만드는 통합 프로젝트를 진행했습니다.
우리는 이 점에 대해 합리적인 제안을 하나 하나 시도했다.
아무것도 안 먹혔어.코드가 새 장치에서 올바르게 실행되고 iOS에서 크래시됨 <=12
swift는 「ALWES_EMBED_SWIFT_LIBRAIES」=「YES」로 설정해도 swift 라이브러리는 포함되지 않을 정도로 스마트한 것 같습니다.
실제로 문제가 해결된 것은 프로젝트에 더미 스위프트 파일을 포함시키는 것입니다.파일에는 디스패치 호출, Foundation 라이브러리가 포함되어 있어야 합니다.
이것은 mighty-xcode에 라이브러리를 포함시킬 것을 암시하는 것 같습니다만, 이번에는 실제로입니다.
다음은 동작시키기 위해 추가한 더미 파일입니다.
import Dispatch
import Foundation
class ForceSwiftInclusion {
init() {
// Force dispatch library.
DispatchQueue.main.async {
print("something")
}
// Force foundation library.
let uuid = UUID().uuidString
print("\(uuid)")
}
}
도, 단합할 수 있도록 , , , , , , , , , , , , , , , , , , , , , .project.AddBuildProperty(target, "SWIFT_VERSION", "Swift 5");
xcode 프로젝트를 작성하기 위한 포스트 프로세싱으로 이동합니다.
내 경우, 그것은 단지 내 타겟의 이름일 뿐이었다.
MyApp.something으로 이름을 바꾸었는데 같은 문제가 발생하였습니다.그런데 빌드 설정 창에서 보니 제품 모듈 이름이 MyApp과 같이 바뀌었습니다.그래서 타겟명(My App Something)의 점을 삭제하면 문제가 사라집니다.
모든 것을 시도해 봤지만 성공하지 못한 나에게, 효과가 있었던 것은@executable_path/Frameworks
Packaging section
그 안에 알 수 없다
Xcode 11에서는 General -> Frameworks, Libraries, Embedded Content 순으로 이동하여 해당 프레임워크의 Embed 옵션을 Embedd & Sign으로 변경하였습니다.
릴리스 빌드를 작성할 때 Xcode 13+에서도 같은 문제가 있었습니다.이 문제의 트러블 슈팅에 시간을 낭비해야 했습니다.드디어 다음 순서로 문제를 해결할 수 있었습니다.
[ Build Settings ]-> [ Linking ]의 [Runpath Search Paths]에 릴리즈 엔트리를 새로 추가했습니다.
/usr/lib/module
그 후, 크래시 하지 않고 앱을 실행할 수 있었습니다!
어떤 해결책도 나에게 효과가 없었다.전화기를 재기동하면, 수정이 끝난다.이상하지만 효과가 있었어.
World Wide Developer cert의 허가를 변경했을 때 이 솔루션들 중 어느 것도 효과가 없는 것 같았습니다.Use System defaults
효과가 있었어요스텝과 스크린샷을 아래 링크에 포함시켰습니다.
애플이 이 엄청난 오류를 해결해야 하기 때문에, 여기서 언급한 대로 애플 버그 리포트에 티켓을 기록할 것을 권장합니다.https://stackoverflow.com/a/41401354/559760
Xcode 7.2, iOS 9.2, 9.0.둘 다 오류가 있었다.무엇이 그것을 변화시켰는지 모르지만, WWDR에 대한 위의 해결방법은 나에게 맞는 것이었다.증명서를 설치하고 문제를 해결합니다.
https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846
거기에는 많은 답이 있지만 내 대답이 도움이 될 수도 있다.
같은 문제로 시뮬레이터에서는 정상적으로 동작하고 있습니다만, 런치 앱에서는 디바이스가 크래쉬 되어 위와 같은 에러가 발생하고 있습니다.나는 모든 해답과 해결책을 시도해 보았다.[ My Case ](내 경우), [My Project I ](프로젝트)에서 여러 타겟이 있습니다.대상 A에서 대상 B를 중복 생성했습니다.대상 A가 충돌한 동안 대상 B는 정상적으로 작동합니다.타겟마다 다른 이미지 자산을 사용하고 있습니다.구글을 검색해 본 결과 누군가에게 도움이 될 만한 것을 발견했습니다.
Launch images assets for both apps의 이름을 변경하면(예: 타겟 A Launch Image 자산명 Launch Image A. 타겟 B 런치 이미지 자산명 Launch Image B), 각 타겟의 [General]탭에서 올바르게 할당됨) 앱 크래시가 중지됩니다.내 앱은 정상적으로 동작합니다.
서드파티 Swift libs(예: SQLite)에 의존하는 MacOS 명령줄 Swift 앱을 구축하는 데 있어 위의 어떤 솔루션도 작동하지 않는 것 같습니다.빌드 설정의 실행 경로 검색 경로에 다음 경로를 직접 추가하는 것이 작동했습니다.
/어플리케이션/Xcode.app/Contents//개발자/툴체인/XcodeDefault.xctoolchain/usr/lib/swift/macosx/
실행 시 Xcode가 2가지 버전의 libswiftCore를 발견했다고 경고했습니다.이것은 타당합니다.단, 이 행을 포함하지 않으면 Xcode는 libswiftCore 버전을 찾을 수 없습니다.
어쨋든, 그렇게 생각하지 않아도 됩니다.내 앱은 배포하고 싶지 않은 유틸리티일 뿐이고, 적어도 지금 실행이 되고 있습니다.
동시에 여러 버전의 Xcode가 설치되어 있습니다.이 프레임워크는 새로운 버전의 Xcode로 구축되었습니다.제가 컴파일하려고 했던 앱은 이전 버전의 Xcode로 되어 있었습니다.같은 버전의 Xcode로 프레임워크와 앱을 모두 청소하고 컴파일했더니 동작했습니다.
언급URL : https://stackoverflow.com/questions/26024100/dyld-library-not-loaded-rpath-libswiftcore-dylib
'programing' 카테고리의 다른 글
Swift에서 빈 어레이를 만드는 방법 (0) | 2023.04.23 |
---|---|
What does >& mean? (0) | 2023.04.23 |
매일 오후 10시에 cron을 한 번 실행하는 방법 (0) | 2023.04.23 |
맨 아래 행을 선택하는 방법 (0) | 2023.04.23 |
Swift: 모든 어레이 요소를 삭제합니다. (0) | 2023.04.23 |