2011-08-05 4 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のステップを無効にすることができました。編集:私はpngcrush直接むしろxcodeビルドツールiphoneosを使用して呼び出すわけではない最適化(私は仮定)正しい設定でpngcrushを呼び出します! – Downie

+0

私は同じ.pngイメージ上でiphoneos-optimizeスクリプトを5回実行し、常に同じチェックサムを生成します。これは、pngcrushが安定していることを示唆しているようで、xcodeは私のプロセスで欠けているさらなるステップを適用します。 – Downie