Bugly自動上傳腳本

bugly自動上傳腳本

目前bugly現(xiàn)在已經(jīng)沒有更新buglySymboliOS.jar,也就是不支持自動上傳了,只能通過上傳工具上傳了.
下面是我用上傳工具buglyqq-upload-symbol.jar做的Xcode腳本,可以跟之前一樣放在xcode打包使用,測試幾百遍調(diào)試通過的,親測有效;拒絕廢話一堆,一提到關(guān)鍵問題不管用,直接把下面腳本放在xcode中打包,親測有效

#!/bin/sh
#
# Copyright 2016 Bugly, Tencent. All rights reserved.
#
# V1.4.0
#
# 2016.08.03
#
#
#
######################################################
# 1. 腳本集成到Xcode工程的Target
######################################################
#
# --- Copy the SCRIPT to the Run Script of Build Phases in the Xcode project ---
#
# #
BUGLY_APP_ID="xxx"
# #
BUGLY_APP_KEY="xxxx"
# #
#BUNDLE_IDENTIFIER="xxxx"
# #
UPLOAD_DSYM_ONLY=0
#
# # 腳本默認配置的版本格式為CFBundleShortVersionString(CFBundleVersion),  如果你修改默認的版本格式, 請設(shè)置此變量, 如果不想修改, 請忽略此設(shè)置
# CUSTOMIZED_APP_VERSION=""
#
# # Debug模式編譯是否上傳,1=上傳 0=不上傳,默認不上傳
 UPLOAD_DEBUG_SYMBOLS=0
#
# # 模擬器編譯是否上傳,1=上傳 0=不上傳,默認不上傳
# UPLOAD_SIMULATOR_SYMBOLS=0
#
# #只有Archive操作時上傳, 1=支持Archive上傳 0=所有Release模式編譯都上傳
 UPLOAD_ARCHIVE_ONLY=0
#
# #
# source dSYMUpload.sh
#
# --- END OF SCRIPT ---
#
#
#
#
#######################################################
# 2. 腳本根據(jù)輸入?yún)?shù)處理
#######################################################
#
# #命令行下輸入應(yīng)用基本信息, .dSYM文件的父目錄路徑, 輸出文件目錄即可
#
# sh dSYMUpload.sh <bugly_app_id> <bugly_app_key> <app_bundle_identifier> <app_version> <dSYM_src_dir> <bSYMBOL_dest_dir>
#
# #
#
# #注意:
# # 1. dSYMUpload.sh會調(diào)用buglySymboliOS.jar進行.dSYM解析,所以依賴Java運行時環(huán)境
# # 2. dSYMUpload.sh和buglySymboliOS.jar的文件路徑需一致
#
#

#
# --- CONTENT OF SCRIPT ---
#

# Bugly服務(wù)域名
BUGLY_DSYM_UPLOAD_DOMAIN="api.bugly.qq.com"

# 注意jar工具的路徑跟dSYMUpload.sh腳本路徑一致, 請務(wù)必保證jar路徑的正確性
BUGLY_SYMBOL_JAR_PATH="dsymtool/buglyqq-upload-symbol.jar"
# 查找添加到系統(tǒng)目錄的jar工具
if [ ! -f "${BUGLY_SYMBOL_JAR_PATH}" ]; then
    BUGLY_SYMBOL_JAR_PATH="$HOME/bin/buglyqq-upload-symbol.jar"
fi

# 打印錯誤信息
function exitWithMessage(){
    echo "--------------------------------"
    echo "${1}"
    echo "--------------------------------"
    exit ${2}
}

# 上傳bSYMBOL文件
function dSYMUpload() {
    P_APP_ID="$1"
    P_APP_KEY="$2"
    P_APP_BUNDLE_ID="$3"
    P_APP_VERSION="$4"
    P_BSYMBOL_ZIP_FILE="$5"
    P_BuildNo="$6"
    #
#    P_BSYMBOL_ZIP_FILE_NAME=${P_BSYMBOL_ZIP_FILE##*/}
#    P_BSYMBOL_ZIP_FILE_NAME=${P_BSYMBOL_ZIP_FILE_NAME//&/_}
#    P_BSYMBOL_ZIP_FILE_NAME="${P_BSYMBOL_ZIP_FILE_NAME// /_}"

    echo "jar: ${BUGLY_SYMBOL_JAR_PATH}"

    echo "inputSymbol:${P_BSYMBOL_ZIP_FILE}"
    echo "-----------------------------"
#    java -jar "${BUGLY_SYMBOL_JAR_PATH}" -appid "${BUGLY_APP_ID}" -appkey "${BUGLY_APP_KEY}" -bundleid jcringBlack.com  -version 1.9.55 -buildNo 1 -platform IOS -inputSymbol ${P_BSYMBOL_ZIP_FILE}
    java -jar "${BUGLY_SYMBOL_JAR_PATH}" -appid "${BUGLY_APP_ID}" -appkey "${BUGLY_APP_KEY}" -bundleid "${P_APP_BUNDLE_ID}"  -version "${BUGLY_APP_VERSION}" -buildNo "${P_BuildNo}" -platform IOS -inputSymbol ${P_BSYMBOL_ZIP_FILE}
    echo "-----------------------------"

}

# 執(zhí)行
function run() {
 
    CONFIG_BUGLY_APP_ID="$1"
    CONFIG_BUGLY_APP_KEY="$2"
    CONFIG_BUGLY_APP_BUNDLE_IDENTIFIER="$3"
    CONFIG_BUGLY_APP_VERSION="$4"
    CONFIG_DSYM_SOURCE_DIR="$5"
    CONFIG_DSYM_DEST_DIR="$6"
    CONFIG_BUGLY_APP_NUMBER="$7"
 
    # 檢查必須參數(shù)是否設(shè)置
    if [ ! "${CONFIG_BUGLY_APP_ID}" ]; then
        exitWithMessage "Error: Bugly App ID not defined. Please set 'BUGLY_APP_ID' " 0
    fi
 
    if [[ "${CONFIG_BUGLY_APP_ID}" == *"App ID"* ]]; then
        exitWithMessage "Error: Bugly App ID not defined." 0
    fi
 
    if [ ! "${CONFIG_BUGLY_APP_KEY}" ]; then
        exitWithMessage "Error: Bugly App Key not defined." 0
    fi
 
    if [ ! "${CONFIG_BUGLY_APP_BUNDLE_IDENTIFIER}" ]; then
        exitWithMessage "Error: Bundle Identifier not defined." 0
    fi
 
    if [ ! "${CONFIG_BUGLY_APP_VERSION}" ]; then
        exitWithMessage "Error: App Version not defined." 0
    fi
 
    if [ ! -e "${CONFIG_DSYM_SOURCE_DIR}" ]; then
        exitWithMessage "Error: Invalid dir ${CONFIG_DSYM_SOURCE_DIR}" 0
    fi
 
    if [ ! -e "${CONFIG_DSYM_DEST_DIR}" ]; then
        mkdir ${CONFIG_DSYM_DEST_DIR}
    fi
    
    DSYM_FOLDER="${CONFIG_DSYM_SOURCE_DIR}"
    IFS=$'\n'
 
    echo "Scaning dSYM FOLDER: ${DSYM_FOLDER} ..."
    RET="F"
     
    # 睡眠8秒
    sleep 30
     
    #
    for dsymFile in $(find "$DSYM_FOLDER" -name '*.dSYM'); do
        RET="T"
        echo "Found dSYM file: $dsymFile"
 
        DSYM_FILE_NAME=${dsymFile##*/}
        DSYM_SYMBOL_ZIP_FILE_NAME="${DSYM_FILE_NAME}.dSYM"
        DSYM_SYMBOL_ZIP_FILE_NAME="${DSYM_SYMBOL_ZIP_FILE_NAME// /_}"
        DSYM_SYMBOL_ZIP_FILE=${CONFIG_DSYM_DEST_DIR}/${DSYM_SYMBOL_ZIP_FILE_NAME}
         
        echo "目標路徑:${DSYM_SYMBOL_ZIP_FILE}"
        echo "符號表路徑:$dsymFile"
         
        if [ -e $DSYM_SYMBOL_ZIP_FILE ]; then
            rm -f $DSYM_SYMBOL_ZIP_FILE
        fi
         
        # 如果只上傳dSYM,直接壓縮dSYM目錄
#        zip -rj ${DSYM_SYMBOL_ZIP_FILE} ${dsymFile} -x *.plist
        # 復(fù)制文件
         cp -R ${dsymFile} ${CONFIG_DSYM_DEST_DIR}
    done
    if [ $RET = "F" ]; then
        exitWithMessage "No .dSYM found in ${DSYM_FOLDER}" 0
    fi
    
#    # 檢測文件內(nèi)是否有文件
#    checkdirempty=`ls ${CONFIG_DSYM_DEST_DIR} | wc -l`
#    echo $checkdirempty
#
#    while [ ! -e "${CONFIG_DSYM_DEST_DIR}" ]; do
#      sleep 1
#     echo "沒有文件了"
#   done

          # 上傳
    dSYMUpload $CONFIG_BUGLY_APP_ID $CONFIG_BUGLY_APP_KEY $CONFIG_BUGLY_APP_BUNDLE_IDENTIFIER $CONFIG_BUGLY_APP_VERSION $CONFIG_DSYM_DEST_DIR $CONFIG_BUGLY_APP_NUMBER
    
}

# 在Xcode工程中執(zhí)行
function runInXcode(){
    echo "Uploading dSYM to Bugly in Xcode ..."

    echo "Info.Plist : ${INFOPLIST_FILE}"

    BUNDLE_VERSION=$(/usr/libexec/PlistBuddy -c 'Print CFBundleVersion' "${INFOPLIST_FILE}")
    BUNDLE_SHORT_VERSION=$(/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' "${INFOPLIST_FILE}")
    BUNDLE_IDENTIFIER=$(/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" "${INFOPLIST_FILE}")

     #組裝Bugly默認識別的版本信息(格式為CFBundleShortVersionString(CFBundleVersion), 例如: 1.0(1))
#    if [ ! "${CUSTOMIZED_APP_VERSION}" ]; then
#        BUGLY_APP_VERSION="${BUNDLE_SHORT_VERSION}(${BUNDLE_VERSION})"
#    else
#        BUGLY_APP_VERSION="${CUSTOMIZED_APP_VERSION}"
#    fi

    echo "Product Name: ${PRODUCT_NAME}"
    echo "Bundle Identifier: ${BUNDLE_IDENTIFIER}"
    echo "Version: ${BUNDLE_SHORT_VERSION}"
    echo "Build: ${BUNDLE_VERSION}"

    echo "Bugly App ID: ${BUGLY_APP_ID}"
    echo "Bugly App key: ${BUGLY_APP_KEY}"
#    echo "Bugly App Version: ${BUGLY_APP_VERSION}"
# 輸出build identifier
  
    echo "--------------------------------"
    echo "Check the arguments ..."

    ##檢查模擬器編譯是否允許上傳符號
    if [ "$EFFECTIVE_PLATFORM_NAME" == "-iphonesimulator" ]; then
    if [ $UPLOAD_SIMULATOR_SYMBOLS -eq 0 ]; then
        exitWithMessage "Warning: Build for simulator and skipping to upload. \nYou can modify 'UPLOAD_SIMULATOR_SYMBOLS' to 1 in the script." 0
    fi
    fi

    ##檢查是否是Release模式編譯
    if [ "${CONFIGURATION=}" == "Debug" ]; then
    if [ $UPLOAD_DEBUG_SYMBOLS -eq 0 ]; then
        exitWithMessage "Warning: Build for debug mode and skipping to upload. \nYou can modify 'UPLOAD_DEBUG_SYMBOLS' to 1 in the script." 0
    fi
    fi

    ##檢查是否Archive操作
    if [ $UPLOAD_ARCHIVE_ONLY -eq 1 ]; then
    if [[ "$TARGET_BUILD_DIR" == *"/Archive"* ]]; then
        echo "Archive the package"
    else
        exitWithMessage "Warning: Build for NOT Archive mode and skipping to upload. \nYou can modify 'UPLOAD_ARCHIVE_ONLY' to 0 in the script." 0
    fi
    fi
    #
    run ${BUGLY_APP_ID} ${BUGLY_APP_KEY} ${BUNDLE_IDENTIFIER} ${BUNDLE_SHORT_VERSION} ${DWARF_DSYM_FOLDER_PATH} ${BUILD_DIR}/BuglySymbolTemp ${BUNDLE_VERSION}
}

# 根據(jù)Xcode的環(huán)境變量判斷是否處于Xcode環(huán)境
INFO_PLIST_FILE="${INFOPLIST_FILE}"

BuildInXcode="F"
#表示INFO_PLIST_FILE文件存在
if [ -f "${INFO_PLIST_FILE}" ]; then
    BuildInXcode="T"
fi

if [ $BuildInXcode = "T" ]; then
    runInXcode
else
    echo "\nUsage: dSYMUpload.sh <bugly_app_id> <bugly_app_key> <app_bundle_identifier> <app_version> <dSYM_src_dir> <bSYMBOL_dest_dir> [upload_dsym_only]\n"
    # 你可以在此處直接設(shè)置BuglyAppID和BuglyAppKey,排除不常變參數(shù)的輸入
    BUGLY_APP_ID="$1"
    BUGLY_APP_KEY="$2"
    BUNDLE_IDENTIFIER="$3"
    BUGLY_APP_VERSION="$4"
    DWARF_DSYM_FOLDER_PATH="$5"
    SYMBOL_OUTPUT_PATH="$6"
    UPLOAD_DSYM_ONLY=$7
    run ${BUGLY_APP_ID} ${BUGLY_APP_KEY} ${BUNDLE_IDENTIFIER} ${BUGLY_APP_VERSION} ${DWARF_DSYM_FOLDER_PATH} ${SYMBOL_OUTPUT_PATH} ${UPLOAD_DSYM_ONLY}
fi
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容