Xcode 10 [중복]에서 0이 아닌 종료 코드로 인해 CompileSwift 명령이 실패했습니다.
이 질문에 이미 답변이 있습니다.
안녕하세요,
현재 Xcode의 최신 버전 (버전 10.0)으로 업데이트 한 후 일부 "명령 CompileSwift가 0이 아닌 종료 코드로 실패했습니다"오류와 관련된 오류를 발견했기 때문에 프로젝트를 빌드 할 수 없습니다.
이 오류를 어떻게 해결합니까? 프로젝트 내에서 사용하는 대부분의 포드 (CocoaPods 사용)에 나타납니다.
포드 버전과 포드를 사용 가능한 최신 버전으로 업데이트하려고 시도했지만 여전히 문제가 있습니다.
나는 웹을 통해 많은 것을 검색했고이 문제에 대한 정보는 거의 없습니다.
문안 인사.
현재 내 빌드가 작동 중입니다. 마침내 작동 할 때까지 시도한 단계는 다음과 같습니다.
- 전체 프로젝트에서 CommonCrypto라는 단어를 검색합니다.
- 해당 헤더 가져 오기가 포함 된 포드가있는 경우 포드 파일에서이 포드를 제거하고 포드 설치를 수행합니다.
- 프로젝트를 정리하고 빌드하십시오.
- Podfile에 Pod를 다시 추가하고 Pod 설치를 수행하십시오.
- 가능하면 실제 장치를 사용하여 프로젝트를 정리하고 다시 빌드하십시오.
해당 포드가없는 경우 프로젝트에서 발생할 수있는 일부 오래된 포드로 동일한 단계를 수행하여 시도 할 수 있습니다.
추가 된 정보 : 또한 Pod 내부에 코드 오류가있는 경우 먼저 해당 코드 문제를 해결 한 다음 프로젝트를 다시 컴파일해야합니다.
내 project.pbxproj에서 변경 한 내용을 복사하겠습니다. 별로 도움이되지는 않지만 git 차이 커밋에서 변경된 유일한 것입니다.
Removed: BDC9821B1E9BD1B600ADE0EF /* (null) in Sources */ = {isa = PBXBuildFile; };
Added: BDC9821B1E9BD1B600ADE0EF /* BuildFile in Sources */ = {isa = PBXBuildFile; };
도움이 되길 바랍니다.
문안 인사.
나를 위해 청소 프로젝트는 ShiftCommandK& OptionShiftCommandK.
이 문제가 있었고 프로젝트의 컴파일 모드 설정을 Incremental에서 Whole Module로 변경하면 문제가 해결되었습니다.
전체 오류 메시지를 읽지 않을 가능성이 큽니다. "Command CompileSwift failed with a nonzero exit code"메시지를 보면 다음과 같은 사양을 찾을 수 있습니다.
이 예에서는 이름이 같은 두 개의 파일이 있습니다. 일단 수정하면 모든 것이 정상적으로 작동했습니다.
나는 시도했다
- Xcode 닫기 및 다시 열기
- 빌드 폴더 정리
- 달리는
pod install --repo-update
이 모든 것이 여전히 문제를 해결하지 못했습니다.
Mac을 다시 시작하면 트릭이 생겼습니다 !
응용 프로그램을 청소하고 사용하여, 다시 빌드하려고 ShiftOptionCommandK다음 CommandB.
내 문제는 네이티브 Swift CommonCrypto가 존재하지 않았기 때문에 브리징 헤더와 일부 마법으로 빌드에 포함 된 대상을 사용 했기 때문입니다. CommonCrypto 가 이제 네이티브 이기 때문에 대상을 제거 #import
하고 대신 import CommonCrypto
사용 위치 를 추가 하여 문제를 해결 했습니다.
이것은 Swift 4.2 및 Xcode 10의 알려진 문제입니다. 여기에서 문제를 해결 한 기사를 찾았습니다. https://github.com/Yummypets/YPImagePicker/issues/236
간단히 말해 프로젝트 빌드 설정으로 이동하여 SWIFT_ENABLE_BATCH_MODE라는 사용자 정의 설정을 추가하고 해당 값을 NO로 설정합니다.
이전에는 다른 곳에서 제안한 다음 방법을 각각 시도했습니다 (다시 빌드, Xcode 종료, 정리 및 다시 빌드, 파생 데이터 파일 제거). 그들 중 누구도 일하지 않았습니다.
Once I added the user define build setting per the article, Swift then told me the true error. In my case, it was a missing }, but it could be any number of problems.
Here is the solution: - Go to build settings - Search SWIFT_COMPILATION_MODE - If this is "Whole Module" for Release configuration then change it to "Incremental". - Archive now.
When you change the setting to "Incremental" the process succeeds.
Let me share my experience for this issue fix.
Open target -> Build phases -> Copy Bundle Resources and remove info.plist.
Note: If you're using any extensions, remove the info.plist of that extension from the Targets.
Hope it helps.
I did the following and it works like charm:
- Open Xcode Preferences (Command,)
- Go to the
Locations
tab - Click on the small gray arrow which shows URL path for
Derived Data
The finder window will open up and show the following folders:
DerivedData
Archives
iOS DeviceSupport
UserData
DocumentationCache
iOS Device Logs
Quit Xcode
- Delete the
DerivedData
folder (it just contains a cache from previous builds) - Restart Xcode
Running pod install --repo-update
and closing and reopening x-code fixed this issue on all of my pods that had this error.
in my case the problem was due to watchkit extension being set to swift 3 while the main project's target was set to swift 4.2
Mine was a name spacing issue. I had two files with the same name. Just renamed them and it resolved.
Always gotta check the 'stupid me' box first before looking elsewhere. : )
Class re-declaration will be the problem. check duplicate class and build.
I searched the whole web but I couldn't find any solution for this problem. I managed to REMOVE the "Common Crypto" path in the section: IMPORT Paths in Build settings. The problem seems to be that "common crypto" now exists in the foundation in the ios 12 sdk.
So":
Simply remove the path for file "common crypto" in the build settings and the project will build like a charm! :)
Just adding to this question. My issue didn't have anything to do with CommonCrypto. It created a new Single App application and tested to run. Compiler was complaining about using Swift 4.2
Changing the Swift language to version 4.0 in Build settings fixed the issue. Not sure if this is a bug.
I got this randomly since Xcode 10. I think it occurs when I change something in the code while building starts. The next build works every time.
I also encountered the same issue and I did what @cdeerinck suggested and got to the following link which suggested adding a user-defined variable to the Build Settings to disable batch mode i.e. add a new user defined variable named SWIFT_ENABLE_BATCH_MODE and set it to NO, I was able to get more insights into the issue and I got to know that the error was in a framework using CommonCrypto which was added to it(by me) but since Xcode 10 it is exposed natively as part of Swift (for Apple platforms only), and adding it (or its existence from the previous version) was causing a name collision and hence it was throwing the error. To know more refer to the this link which explains the issue in more detail.
I have the same issue and my solution is change a little thing in Build Settings
SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";
ERROR = Command CompileSwiftSources failed with a nonzero exit code
In my case When I found this error, I got cramped with compilation. But when I see some related problem answers. I found a duplication file on my project. Where the same viewController was there as a class file. So yeah when I realized it I changed it name to new one. And yeah things changed!!!
For me, the error message said I had too many simulator files open to build Swift. When I quit the simulator and built again, everything worked.
It seems like this is a pretty vague error, so I will share what I did to fix it when I ran into this:
Xcode 10.1 및 Swift 4.2를 사용하여 여기에서 거의 모든 제안을 시도했지만 어느 것도 저에게 효과가 없었습니다. 그런 다음 사용중인 종속성이 Swift 4.2와 호환되지 않아 다른 포드에서이 오류가 발생한다는 것을 깨달았습니다. 그래서 그것을 고치기 위해 나는 이것을 나의 끝에 넣어서 Swift 4.0을 사용하도록 강제해야했습니다 Podfile
.
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['TKRadarChart'].include? target.name
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.0'
end
end
end
end
제 경우에는 Build Phases 의 Input Files of Carthage 프레임 워크 섹션에 프레임 워크에 대한 중복 항목이있었습니다.
'Development Tip' 카테고리의 다른 글
Django에서 단위 테스트를 어떻게 건너 뛰나요? (0) | 2020.10.04 |
---|---|
Angular2 TypeScript 파일과 JavaScript 파일을 서로 다른 폴더로 분리 ( 'dist') (0) | 2020.10.04 |
datetime 값의 시간 부분을 제거하는 방법 (SQL Server)? (0) | 2020.10.04 |
C # /. NET에서 두 이미지 병합 (0) | 2020.10.04 |
shared_ptr을 사용하는 예? (0) | 2020.10.04 |