質問

代替タイトル (検索を支援するため)

PNG の圧縮

iPhone アーカイブ (.ipa) のサイズを削減する

Xcode で画像を圧縮するためのビルド ルールを追加する


iOS アプリは、100MB 未満の場合、3G 経由でのみダウンロードできます。アプリのサイズを削減するための最良の戦略は何ですか?

私が注力したい分野は次のとおりです。

  • 画像
  • データベース
  • コード
  • 静的ライブラリ

注意: 元の質問は、この質問の改訂版で見ることができます

役に立ちましたか?

解決

PNGは本当にロスレス画像圧縮のための最善の選択肢です。あなたは PNGOUTするを使用してサイズのためにあなたのPNG画像を最適化することができますが、私は特に多くのスペースを取っているファイルを問い合わせてもよいです?それはどのように非デバッグのリリースと比べてどうですか?

編集:あなたはPNGOUTの自由GUI版が欲しい場合は、 PNGGauntlet 。

他のヒント

加えXcodeの構築ルールの圧縮Png

画像提供するiOS向けアプリを作成することができますので、大多数のサイズです。この場合はユニバーサルアプリを必要とする全てのイメージ三(iPhone標準、iPhone Retina iPad).

最適なタイプの画像を使用するiOSアプリはPNG.が発表されたこれらの画像をPhotoshopで保存され、多くのメタデータを変更することができます。■

しかしんゆったりしたいすべてのデータが完全で有用なデザイナーが必要であれば、変更することができます。

PNGOUT最適化

ツールはいくつかあための最適化PNGファイルが pngout よう最善のオプションです。

  1. ダウンロードMac版pngout.
  2. コピーのバイナリコマンドライン申請 pngout るディレクトリにプロジェクトに関する 追加バイナリのプロジェクトディレクトリであることを確ではどなたでもご利用いただくのプロジェクトを他のシステム。

を構築ルール(Xcode4)

構築ルールを特定のターゲットだより対象者が必要にコピーする規則です。

  1. 追加のデバッグおよび分布のマクロを構築可能です。- 最適化、Pngにもプロセッサの激しいなだけいたいで流通構造を作成する環境が整いました Pre-processor macros ご覧のとおりの中にい DEBUG_BUILD=1DISTRIBUTION_BUILD=1.

  2. 追加の構築ルールをPNGファイルです。 を構築ルールの単なるプロセスが特定のファイルは以下のように)ファイルタイプの構築です。の力でこのルールで連鎖させます。 構築ルール-Xcode4http://tinypic.com/images/404.gif

  3. をクリックし、"追加ルール"ボタンを押;

    • 設定プロセス"のソースファイル名のマッチング"の価値 *.png.
    • 設定を"カスタムスクリプト"

ペーストこのコードのリストボックス

echo "----------------------------------------------------------------" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
echo "${INPUT_FILE_PATH}" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
echo "${DERIVED_FILES_DIR}/${INPUT_FILE_NAME}" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
echo ${GCC_PREPROCESSOR_DEFINITIONS} >> "${DERIVED_FILES_DIR}/pngout-log.txt"

BUILD=`echo ${GCC_PREPROCESSOR_DEFINITIONS} | grep -o DISTRIBUTION_BUILD`

echo $BUILD >> "${DERIVED_FILES_DIR}/pngout-log.txt"

if [ "${BUILD}" == "DISTRIBUTION_BUILD" ]; then
echo "COMPRESS" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
"${PROJECT_DIR}/build-process/pngout" -y -q -force "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_NAME}"
else
echo "COPY" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
cp -f "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_NAME}"
fi

echo "...done." >> "${DERIVED_FILES_DIR}/pngout-log.txt"

あな環境変数の注意:

  • ${INPUT_FILE_PATH} —フルパスでの画像ファイル
  • ${INPUT_FILE_NAME} —画像ファイル名(拡張子なし)
  • ${DERIVED_FILES_DIR} —がXcode店舗構築をファイルなど
  • ${GCC_PREPROCESSOR_DEFINITIONS} —マクロ設定した上

同作業を行っていたこのライン:

    "${PROJECT_DIR}/build-process/pngout" -y -q -force "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_NAME}"

${PROJECT_DIR} をフルパスで、プロジェクトの -y 上書き既存のファイル -q 限界 pngouts出力 -force を防止 pngout からの撤退との状態の2つのファイルできない最適化および起こしXcode報告書の構築。

このスクリプトだけで試験を ${GCC_PREPROCESSOR_DEFINITIONS} がで DISTRIBUTION_BUILD その場合で pngout 最適化ファイルを、そうでない場合はコピーで、 ${DERIVED_FILES_DIR} でXcodeできます

最後に, を忘れてはならない追加 ${DERIVED_FILES_DIR}/${INPUT_FILE_NAME} の"出力ファイル一覧"こうしてXcode先番号は予約確認通知にしたファイルに処理されます。

デバッグビルドは、通常、リリースビルドよりもはるかに大きくなります。リリースモードでビルドしてみます。

あまりにも役立つかもしれないいくつかのコンパイラオプションがあります。しかしiPhoneのリリースモード用わからないいただきましデフォルト。 -Osは小さいバイナリのために最適化されます。それを実行することはできません任意のコードを削除しますデッドコード除去のためのオプションもあります。また、あなたは...バイナリをストリッピングしてみてください可能性がないように注意してください場合はiphoneのバイナリのためにその作品いえます。

これはあなたの問題は、実行可能なバイナリサイズとしない画像リソースが原因であると仮定されます。

私が使用した イメージオプティム そして 画像アルファ アプリのサイズを減らすため。詳細については、このケーススタディをご覧ください。 iPad用ツイートボット

@rjstellingは本当に素敵な答えを持っている、と私はより良いそれを言うために始めることができませんでしたが、それで一つの小さな問題があります。これは、ローカライズされた画像では動作しません。あなたは、私は非常にあなたがそれを避けることができれば、やったことがないお勧め何かある画像内のテキストを埋め込む場合、これが唯一の問題です。ただし、ローカライズされた画像を使用する必要がある場合は、代わりに使用する以外のrjstelling手順のすべてに従ってください:

if [ "${BUILD}" == "DISTRIBUTION_BUILD" ]; then
echo "COMPRESS" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
"${PROJECT_DIR}/build-process/pngout" -y -q -force "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_NAME}"
else
echo "COPY" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
cp -f "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_NAME}"
fi

以下のコードを使用

if [ "${BUILD}" == "DISTRIBUTION_BUILD" ]; then
echo "COMPRESS" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
"${PROJECT_DIR}/build-process/pngout" -y -q -force "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_REGION_PATH_COMPONENT}${INPUT_FILE_NAME}"
else
echo "COPY" >> "${DERIVED_FILES_DIR}/pngout-log.txt"
cp -f "${INPUT_FILE_PATH}" "${DERIVED_FILES_DIR}/${INPUT_FILE_REGION_PATH_COMPONENT}${INPUT_FILE_NAME}"
fi

唯一の変更は、エクスポートファイルのパスにあることに注意してください。あなたは正しく動作させるには、画像の局在を取得するにはエクスポートパスにINPUT_FILE_REGION_PATH_COMPONENTを付加する必要があります。 INPUT_FILE_REGION_PATH_COMPONENTは、ローカライズされたフォルダは、特定のファイルのために存在しない限り、通常は空です。あなたがする必要はありませんので、それが事実であること、それは、フォルダ名と末尾にスラッシュを提供しています。

また、仕事に、このためにOutput Filesにご${DERIVED_FILES_DIR}/${INPUT_FILE_REGION_PATH_COMPONENT}${INPUT_FILE_NAME}の設定を変更する必要があります。

わからない私が今までその問題を持っていた唯一の1だけど、うまくいけば、それが誰かを助けます。

私の削減を提供するiOS向けアプリから90MBに50MB最近の数ヶ月.このテーマに関するイベント、ツール:

プロフィールiOSアプリサイズ

  1. 解凍おipaチェックのような資源の動画、フォントや画像ファイルです。

  2. イクバイナリファイルによる図書館およびオブジェクトファイル(クラス)を使用Linkmapファイル XCode Linkmapパーサ.

削減の画像ファイル

削減へのバイナリファイル

  • ストリップdocumentation
  • 見つ未使用の輸入を fui

検査ます。ipaファイル

を変えるだけでは延長ます。ipaファイル .zip、その後でファインダーに解凍します。右クリックし unzipped.アプリのバンドル"を選択パッケージの内容を表示"に 資源です。ここでいう最 スペース。

てご検討いただくことができ、圧縮されたサイズの各項目おります。ipaによる 口ターミナルおよび実行は以下のコマンド:

解凍-lv/path/to/お/アプリです。ipa

サイズのカラムの圧縮サイズのそれぞれのファイル内におります。ipa ファイルです。く評価されるべきであることとしてお仕事のサイズを縮小し 資源にアプリです。きの低減、資源、 その後生産ます。ipaファイルは、この圧縮サイズ このリソースが変更されませんしています。最も効果的な 技術を低減するためのサイズます。ipaファイルを削除 不要な資源です。

アクセスの記事を参照 リンク Apple社から開発ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top