2011-08-05 3 views
0

xcode가 만드는 iOS PNG 최적화를 복제하는 데 문제가있는 것 같습니다. 우리의 응용 프로그램은 사용자가 번들에 저장된 파일의 체크섬을 서버의 체크섬과 비교하여 자산 서버를 통해 콘텐츠를 업데이트 할 수있게합니다. png가 서버에 업로드되기 전에 xcode 개발자 디렉토리 (Stack Overflow post) 내의 iphoneos-optimize 스크립트가 실행됩니다. 문제는 png에서 수행 된 체크섬 (서버와 장치에서 모두)이 다른 결과를 생성한다는 것입니다.iOS - pngcrush 불일치

이것은 시뮬레이터가 아니라 장치에서 테스트되었다는 것을 언급 할 가치가 있습니다 (이는 png를 손상시키지 않습니다). 또한 가시적 인 결과는 동일하지만 단지 다른 체크섬입니다.

답변

1

이미지를 더 철저하게 분석 할 수 있도록 장치에서 서버로 번들 .png를 업로드하는 테스트를 만들었습니다. .png 파일을 열었을 때 실제로 이미지를 볼 수있었습니다.이 이미지는 XCode 빌드 프로세스에 의해 맹 글링되지 않았다고 제안했습니다 (바이트 등을 바꿈으로써). 그런 다음 XCode 내의 빌드 설정에서 png 압축을 비활성화하고 다시 시도했습니다. 이번에 서버로 보낸 이미지는 pngcrushed되었고 파일의 체크섬은 내가 수동으로 짓 눌린 이미지와 일치했습니다. Xcode 3.2.6의 빌드 설정이 거꾸로되어있을 수 있습니다. 그런 다음 Xcode 3.2.5를 실행하는 동료의 컴퓨터에서 테스트 한 결과 설정이 예상대로 작동했습니다. 압축 플래그가 설정되었을 때 짓 눌린 이미지를 생성합니다.

나는 봤지만 문제에 대한 어떤 버그/문제점 보고서도 찾을 수 없었다. 그러나 그 증거는 그것이 Xcode 문제라고 제안합니다. 이것에 대해 다른 사람으로부터 확인을받는 것이 좋을 것입니다.

1

체크섬을 사용하여 중복이없는 것으로 가정합니다.

pngcrush 옵션을 보면 절차의 실제 결과를 예측할 수없는 것으로 보입니다. pngcrush이 Xcode에 의해 호출되기 때문에, 우리는 그것이 어떤 옵션을 사용하는지 모른다.

제 조언은 단순히 자산을 고유하게 식별하는 다른 체계를 찾는 것입니다. 명명 체계 일 수도 있고 서버 URL을 사용하여 작업 할 수도 있습니다.

+0

예 체크섬을 사용하여 불필요한 데이터를 클라이언트에 다운로드하지 않도록합니다. 이것이 사실이라면 (pngcrush가 안정적이지 않다면) 새로운 해결책을 제시해야 할 수도 있습니다. 나는 그것이 동일한 자산과 일치 할 것이라고 생각했을 것이다. 필자는 안정적인 파쇄 도구를 제공하고 xcode pngcrush 단계를 비활성화 할 수있었습니다. 편집 : 나는 오히려 오히려 xngcode 빌드 도구를 사용하여 pngcrush 전화 iphoneos - 차례로 올바른 설정 (나는 가정) pngcrush 호출합니다! – Downie

+0

동일한 .png 이미지에서 iphoneos-optimize 스크립트를 5 번 실행했으며 항상 동일한 체크섬을 생성합니다. 이것은 pngcrush가 안정적이며 xcode가 프로세스에서 누락 된 추가 단계를 적용한다고 제안하는 것 같습니다. – Downie