iOS App图标自动加上版本号等自定义信息

  1. XCode版本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    IFS=$'\n'
    buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
    versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
    PATH=${PATH}:/usr/local/bin

    function generateIcon () {
    BASE_IMAGE_NAME=$1

    TARGET_PATH="${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${BASE_IMAGE_NAME}"
    echo $TARGET_PATH
    echo $SRCROOT
    echo $(find ${SRCROOT} -name "AppIcon120x120.png")
    BASE_IMAGE_PATH=$(find ${SRCROOT} -name ${BASE_IMAGE_NAME})
    WIDTH=$(identify -format %w ${BASE_IMAGE_PATH})
    FONT_SIZE=$(echo "$WIDTH * .15" | bc -l)
    echo "font size $FONT_SIZE"

    # if [ "${CONFIGURATION}" == "Debug" ]; then
    # convert debugRibbon.png -resize ${WIDTH}x${WIDTH} resizedRibbon.png
    # convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$buildNumber" - | composite resizedRibbon.png - ${TARGET_PATH}
    # fi

    convert ${BASE_IMAGE_PATH} -fill white -font Times-Bold -pointsize ${FONT_SIZE} -gravity south -annotate 0 "$versionNumber.$buildNumber" - | convert -fill yellow -font Times-Bold -pointsize ${FONT_SIZE} -gravity north -annotate 0 "${CONFIGURATION}" - ${TARGET_PATH}
    }

    generateIcon "AppIcon60x60@2x.png"
    generateIcon "AppIcon60x60@3x.png"
  2. Jenkins版本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    IFS=$'\n'

    CONFIGURATION=Release
    PROJECT_ROOT=${WORKSPACE}/${JOB_NAME}
    SOURCE_ROOT=${PROJECT_ROOT}/${JOB_NAME}
    PLIST_FILE=${SOURCE_ROOT}/Info.plist
    APP_ICON_PATH=${SOURCE_ROOT}/Images.xcassets/AppIcon.appiconset

    rm -rf ${WORKSPACE}/ipa/*
    rm -rf ${WORKSPACE}/app/*

    BUNDLE_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PLIST_FILE")
    BUNDLE_SHORT_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$PLIST_FILE")

    NORTH_STRING=${CONFIGURATION}_${BUILD_NUMBER}
    SOUTH_STRING=${BUNDLE_VERSION}

    PATH=${PATH}:/usr/local/bin

    function generateIcon () {
    IMAGE_NAME=$1
    echo "APP_ICON_PATH = $APP_ICON_PATH"

    SOURCE_IMAGE_PATH=`find ${PROJECT_ROOT} -name $IMAGE_NAME -depth 1`
    echo "SOURCE_IMAGE_PATH = $SOURCE_IMAGE_PATH"
    TARGET_IMAGE_PATH=${APP_ICON_PATH}/${IMAGE_NAME}

    WIDTH=$(identify -format %w ${SOURCE_IMAGE_PATH})
    FONT_SIZE=$(echo "$WIDTH * .15" | bc -l)
    echo "width = $WIDTH, font size = $FONT_SIZE"

    convert ${SOURCE_IMAGE_PATH} \
    -fill black -font Times-Bold -pointsize ${FONT_SIZE} \
    -gravity north -annotate +0+10 "${NORTH_STRING}" \
    - |
    convert -fill white -font Times-Bold -pointsize ${FONT_SIZE} \
    -gravity south -annotate 0 "${SOUTH_STRING}" - \
    ${TARGET_IMAGE_PATH}
    }

    if [ "${CONFIGURATION}" != "Distribution" ]; then
    generateIcon "AppIcon60x60@2x.png"
    generateIcon "AppIcon60x60@3x.png"
    fi