2008-10-07 35 views
11

Có thể thiết lập dự án iPhone XCode để bỏ qua bước xây dựng 'CompressResources' không?Bỏ qua bước xây dựng 'Nén tài nguyên' cho các ứng dụng iPhone XCode

Cụ thể, tôi muốn bỏ qua giai đoạn nơi nó chạy pngcrush trên tất cả các tệp .png của tôi, nhiều tệp trong số đó không tồn tại trải nghiệm ở dạng mà ứng dụng của tôi có thể đọc.

Chỉnh sửa: phiên bản pngcrush được sử dụng tạo tệp png chứa đoạn 'bắt buộc, riêng tư' không chuẩn, ngăn chặn giải mã một cách rõ ràng. Tôi đã sửa đổi đầu đọc png của mình để xử lý các tệp này, nhưng tôi vẫn muốn một phương thức bỏ qua bước này cho từng dự án. Một trong những tác dụng phụ khác của pngcrush là nó không lưu giá trị màu của các điểm ảnh trong suốt, do đó các hoạ tiết alpha-ed cho thấy viền ở các mức mip nhỏ hơn.

Định dạng png của iphone được mô tả tại đây: http://modmyi.com/wiki/index.php/Iphone_PNG_images. Nói tóm lại,

  • Bỏ qua đoạn CgBI
  • Bỏ qua các tiêu đề zlib
  • Swap BGR đến trật tự kênh RGB

Edit: Có vẻ nó cũng premultiplies alpha, vì vậy:

  • Chia theo alpha
+5

Nếu bất cứ ai quan tâm đến lý do tại sao Xcode cố gắng tối ưu hóa PNG và những gì nó làm chính xác, Jeff Lamarche đã viết một lời giải thích tuyệt vời. Ngoài việc giải thích lý do tại sao byte-hoán đổi và premultiplying kênh alpha là hữu ích, ông cũng nói về những gì sẽ xảy ra khi bạn sử dụng các định dạng hình ảnh khác ngoài PNG. http://iphonedevelopment.blogspot.com/2008/10/iphone-optimized-pngs.html –

+0

Trong các bài kiểm tra của tôi, tôi nhận thấy rằng việc xử lý trước diễn ra trong các chức năng tải đồ họa lõi. Việc tắt tính năng nén trong Xcode không có hiệu lực. – Plumenator

Trả lời

10

Bạn có thể thêm "IPHONE_OPTIMIZE_OPTIONS = -skip-PNGs" vào cài đặt dự án của bạn để ngăn chặn xáo trộn png, nhưng hãy cẩn thận với nó, bạn có thể cần phải tối ưu hóa biểu tượng và Default.png riêng biệt sau đó.

3

Nếu bạn nhìn vào đầu ra xây dựng, bạn sẽ thấy rằng bước CompressResources chạy tập lệnh /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/iphoneos-optimize. Điều này dường như chỉ là một kịch bản shell chạy pngcrush và biên dịch plists thành định dạng nhị phân. Bạn có thể sửa đổi kịch bản này để không chạy pngcrush.

Lưu ý rằng ai đó trong số this thread nhận thấy rằng nếu họ không chạy tệp biểu tượng của họ qua pngcrush thì nó không hiển thị trên điện thoại.

Điều thú vị là phiên bản pngcrush trong thư mục của tập lệnh có đối số -iphone. Có ai biết đây có phải là tiêu chuẩn hay thứ gì đó mà Apple chỉ giao với việc xây dựng nó không?

+0

iPhone sử dụng định dạng PNG không chuẩn được tối ưu hóa để hiển thị nhanh hơn trên phần cứng. Có một cặp tập lệnh ở đâu đó trên web sẽ "không thể tối ưu hóa" PNG được khôi phục từ ứng dụng iPhone. – benzado

8

Kịch bản tối ưu hóa iphoneos chuyển đổi tệp PNG thành định dạng không chuẩn được tối ưu hóa để hiển thị trên iPhone. Tập lệnh sẽ chuyển đổi bất kỳ tệp nào có phần mở rộng png mà nó tìm thấy bên trong gói ứng dụng của bạn.

Tôi gặp sự cố tương tự và đã giải quyết vấn đề bằng cách cung cấp cho tệp của tôi phần mở rộng _png (ví dụ: tiền tố gạch dưới). iphoneos-optimization bỏ qua nó và để lại nó một tập tin PNG thông thường. Nếu bạn có thể đối phó với nó theo cách đó, nó có thể an toàn hơn rất nhiều so với mucking về với các kịch bản xây dựng.

+0

Điều này rất hữu ích! Lưu ý rằng khi tôi đã thử điều này tôi vẫn thấy (nhỏ) gradient dải (vấn đề tôi đã cố gắng sửa chữa) trong giả lập nhưng không phải trên điện thoại. – MrDatabase

5
  • mở xây dựng thiết lập
  • Dưới "đóng gói" chọn file nén PNG
  • Chọn "KHÔNG"
Các vấn đề liên quan