.png pngcrush caught libpng error 해결 방법
오늘 아침, 꽤 오래된 프로젝트를 꺼내 들고 툭툭 먼지를 털 듯 이리저리 살피면서 빌드를 하니 issues가 506개 나오면서 6개의 error도 내 뱉었다. 참나 @@
nonARC모드로 개발이 된 이 프로젝트는 2012년 7.24일 만들어졌다고 주석이 붙어 있는데 대략 5년이 넘은 소스인데 몇 번의 덧칠이 되어 뒤죽박죽이다.
이 프로젝트에 또 없던 기능을 추가해야 하는 것이 이제부터 해야할 일이다. 얼마나 걸릴지, 어떤 것들이 숨어 있을지 모르는 프로젝트를 뒤지는 일이 주 업무가 될 것 같은데 걱정이 앞선다.
경고는 어떻게 할 수 없다 치고... 에러가 나는건 예전에 우리은행 프로젝트할 때도 보았든 png파일 pngcrush error이다.
본 프로젝트는 git에 올라 가 있는데 알고 있던 초 간단 방법으로 해보니 잘 되는 것 같았다. 그런데 다시 Clean을 하고 재 빌드를 하면 똑 같이 오류가 계속 나온다. 요건 Git 때문이거나 Xcode자체 캐쉬 때문일 것 같다는 생각이 들었다.
검색을 좀 더 해보니, 친절하게 가이드 된 부분이 있었는데 절차만 있고 왜 그런지 이유가 없어서 살짝 불안하긴 했는데 그래도 그대로 따라 해보니 깔끔하게 해결이 되었다.
1. 우선 error가 나는 Xcode에서 Clean한 다음 빌드를 진행한다.
2. 빌드 후 error가 나는 항목을 찾아보면 .png가 있는데 해당 파일들을 전부 찾아서 다른 폴더에 옮겨 둔다.
3. Xcode에서 해당 파일을 삭제한다. (레퍼런스만 끊는 것이 아니라 Xcode프로젝트에서 Remove(삭제) 한다.)
4. 별도의 폴더에 옮겨 놓은 파일을 포토샵을 열어 다른 이름으로 저장하기 해서 덮어쓴다. (파일명을 변경하거나 하면 안된다. )
여기서 잠깐!
png파일의 '알파' 속성이 켜진 상태일 때 Xcode에서 빌드하면 pngcrush caught libpng error가 나오는다.
정확하게는 잘 모르지만 이미 libpng를 통해 압축이 한번 되었던 이미지를 새로운 프로젝트에서 추가해서 사용할 경우 그런 현상이 나오는 것으로 잠정 확인이 됐다. 일테면 A프로젝트에서 사용하던 보안키패드 관련 png이미지들을 빼내서 B프로젝트의 리소스로 사용할 경우 그런 경우가 허다하게 발생되었다.
png파일의 '알파' 속성을 꺼는 간단한 방법은
Mac에서 해당 파일을 더블클릭,
미리보기를 통해 파일이 열린다. 미리보기앱의 파일 메뉴에서 '복제'를 선택한다.
그리고 바로 저장을 선택하면 저장하는 옵션 창에서 파일 형식 [PNG] 하단에 '알파' 속성이 체크되어 있다면 체크를 풀고 저장. 그리고 원본파일명과 동일하게 변경을해서 덮어쓰기한다.
5. 이렇게 변환된 png파일을 삭제했던 자리에 하나씩 추가한다.
6. Clean한 다음, Build를 진행해서 에러가나는지 확인하면 된다.
가장 좋은건 디자이너가 따끈따끈하게 디자인된 파일을 이쁘게 컷팅해서 다른 이름으로 개발자에게 전달을 하고 해당 파일을 사용하는 것이 이런 복잡한 오류를 발생하지 않게 해주는 방법이다.
그런데 error는 나지만 빌드는 성공으로 떨어지고 앱스토어에 올리는데 별 문제는 되지 않는다. 다만, error가 날 경우 빌드가 성공으로 되지 않거나 5번 빌드해서 한번 성공하거나 눈에 거슬리거나 할 때는 위에서 제시한 방법을 수고스럽더라도 한번 해보길 바라는 마음에서 정리 해 두는 것이다.
'프로그래밍 > Xcode-iOS' 카테고리의 다른 글
금액 한글 변환 소스(objective-c, iOS, 아이폰) (0) | 2018.04.20 |
---|---|
Objective-C 블록구문 (0) | 2017.11.03 |
Objective-C @property 의 설정자 (0) | 2017.11.01 |
Objective-C 카테고리 정의 (0) | 2017.11.01 |
Objective-C 프로토콜 정의 (0) | 2017.11.01 |