gpt4 book ai didi

iphone - 如何减小 iPhone 应用程序的大小?

转载 作者:行者123 更新时间:2023-12-03 18:15:18 25 4
gpt4 key购买 nike

替代标题(以帮助搜索)

压缩 PNG

减小 iPhone 存档 (.ipa) 的大小

添加构建规则以在 Xcode 中压缩图像

<小时/>

iOS 应用程序如果小于 100MB,则只能通过 3G 下载。减小应用程序大小的最佳策略是什么?

我想关注的领域是:

  • Images
  • 数据库
  • 代码
  • 静态库

注意: 原始问题可以在该问题的修订版中查看

最佳答案

添加 Xcode 构建规则来压缩 PNG

iOS 应用程序中的图像占据了其大小的大部分。如果它是一个通用应用程序,要求其所有图像一式三份(iPhone Standard、iPhone Retina iPad),则尤其如此。

The best type of image to use in an iOS App is a PNG 。当您的设计师在 Photoshop 中创建这些图像时,它们会保存大量可以丢弃的元数据。

但是,您不想完全丢失所有这些数据,因为如果设计师需要更改图像,这些数据对他们很有用。

PNGOUT 优化

有多种工具可用于优化 PNG 文件,但 pngout 似乎是最佳选择。

  1. Download the Mac Version of pngout
  2. 将二进制命令行应用程序 pngout 复制到项目中的目录。将二进制文件添加到项目目录可确保构建项目的任何人都可以使用该应用程序在任何系统上。

创建构建规则 (Xcode 4)

构建规则是特定于目标的,因此如果您有多个目标,则必须将规则复制到每个目标中。

  • 将 DEBUG 和 DISTRIBUTION 宏添加到您的构建配置中。优化 PNG 需要大量的处理器资源,因此您只想在分发构建上执行此操作。 Pre-processor macros 正如您所看到的,我添加了 DEBUG_BUILD=1DISTRIBUTION_BUILD=1

  • 添加 PNG 文件的构建规则。构建规则仅在构建过程中处理特定文件(和/或)文件类型。这样做的力量在于规则可以链接在一起。 Build Rule - Xcode 4 http://tinypic.com/images/404.gif

  • 点击“添加规则”按钮;

    • 将 Process 设置为“名称匹配的源文件”及其值 *.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 限制 pngout s 输出和 -force 可以防止 pngout 在文件无法优化时以状态 2 退出并导致 Xcode 报告构建错误。

    此脚本只是测试 ${GCC_PREPROCESSOR_DEFINITIONS} 来查看它是否是 DISTRIBUTION_BUILD 如果是,则使用 pngout 来优化文件,否则它将其复制到 ${DERIVED_FILES_DIR} 以便 Xcode 可以继续处理它。

    最后,不要忘记将 ${DERIVED_FILES_DIR}/${INPUT_FILE_NAME} 添加到“输出文件”列表中,这就是 Xcode 知道如何查找您已处理过的文件。

    关于iphone - 如何减小 iPhone 应用程序的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2490910/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com