Sud*_*nan 31 compression iphone xcode ipad ipa
替代标题(以帮助搜索)
如果iOS应用程序小于100MB,则只能通过3G下载.减少应用程序大小的最佳策略是什么?
我想关注的领域是:
注意: 原始问题可以在这个问题的修订版中查看
rjs*_*ing 23
iOS应用程序中的图像可以构成其大部分尺寸.如果它是一个通用应用程序,要求它具有一式三份的所有图像(iPhone标准,iPhone Retina iPad),尤其如此.
在iOS应用中使用的最佳图像类型是PNG.当您的设计师在Photoshop中创建这些图像时,它们会保存大量可以丢弃的元数据.
但是,您不希望完全丢失所有数据,因为如果设计师需要更改图像,这对设计人员非常有用.
有几种优化PNG文件的工具,但pngout似乎是最好的选择.
pngout到项目中的目录中.将二进制文件添加到项目目录可确保任何系统上构建项目的任何人都可以使用它.构建规则是特定于目标的,因此如果您有多个目标,则必须将规则复制到每个目标中.
将DEBUG和DISTRIBUTION宏添加到构建配置中.优化PNG是非常强大的处理器,因此您只想在分发版本上执行此操作.预处理器宏http://i52.tinypic.com/jtteg4.png正如你可以看到的,我已经添加了DEBUG_BUILD=1和DISTRIBUTION_BUILD=1.
为PNG文件添加构建规则.构建规则仅在构建过程中处理特定文件(和/或)文件类型.这种规则的力量可以链接在一起.构建规则 - Xcode 4 http://i56.tinypic.com/ioovut.png
单击"添加规则"按钮;
*.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"
Run Code Online (Sandbox Code Playgroud)
有几个环境变量值得注意:
${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}"
Run Code Online (Sandbox Code Playgroud)
${PROJECT_DIR}是一个项目的完整路径,-y覆盖现有文件,-q限制pngout输出并-force防止pngout在无法优化文件时导致状态为2并导致Xcode报告生成错误.
这个脚本只是测试${GCC_PREPROCESSOR_DEFINITIONS}它DISTRIBUTION_BUILD是否pngout用于优化文件,如果它用于优化文件,否则它将其复制到${DERIVED_FILES_DIR}Xcode可以继续处理它.
最后,不要忘记添加${DERIVED_FILES_DIR}/${INPUT_FILE_NAME}到"输出文件"列表中,这就是Xcode如何知道如何查找已处理的文件.
PNG确实是无损图像压缩的最佳选择.您可以使用PNGOUT优化PNG的大小,但是我可以查询哪些文件特别占用了大量空间吗?它与非调试版本相比如何?
编辑:如果您想要一个免费的GUI版PNGOUT,请查看PNGGauntlet.
| 归档时间: |
|
| 查看次数: |
24334 次 |
| 最近记录: |