iOS bugly符号表自动上传脚本

Build Phase脚本

  • 确保Mac拥有JDK环境
  • 需要去bugly下载上传的jar包
#!/bin/sh
# Copyright 2014-2015 Bugly @Tencent. All rights reserved.
#
################################################################################
# 注意: 请配置下面的信息
################################################################################
BUGLY_APP_ID="xxxxxx"
BUGLY_APP_KEY="xxxxxxxxx
BUNDLE_IDENTIFIER="com.xx.xxxx"
BUGLY_SYMBOL_JAR_PATH="xxxxx.jar"      #去bugly下载jar包,确保电脑有该java环境
ENABEL_BUGLY_SYMBOL_UPLOAD=0    #Archive是否开启符号上传(个别机器没有java环境可以设置0)

################################################################################
# 自定义配置
################################################################################
# Debug模式编译是否上传,1=上传 0=不上传,默认不上传
UPLOAD_DEBUG_SYMBOLS=1
#
# 模拟器编译是否上传,1=上传 0=不上传,默认不上传
UPLOAD_SIMULATOR_SYMBOLS=0
#
# # 脚本默认配置的版本格式为CFBundleShortVersionString(CFBundleVersion),  如果你修改默认的版本格式, 请设置此变量, 如果不想修改, 请忽略此设置
# CUSTOMIZED_APP_VERSION=""
#
#
#
# This script will extract symbols from the .dSYM and generate .symbol file(Bugly supported) and upload to server.
# You could visit http://bugly.qq.com to get more details about Bugly.
#
# Usage:
#     * The instructions assume you have copyed this script into your project int Xcode.
#     * Copy the "buglySymbolIOS.jar" file into the "~/bin" folder.
#    * Open the project editor, select your build target.
#    * Click "Build Phases" at the top of the project editor.
#    * Click "+" button in the top left corner and select "New Run Script Phase".
#    * Click "Run Script".
#    * Paste the following script into the dark text box. You will have to uncomment the lines (remove the #) of course.
#
# --- SCRIPT BEGINS ON NEXT LINE, COPY AND EDIT FROM THERE ---
#
#
#
# --- END OF SCRIPT ---


################################################################################
# 注意: 如果你不知道此脚本的执行流程和用法,请不要随便修改!
################################################################################

# 退出执行并打印提示信息
exitWithMessage() {
    echo "--------------------------------"
    echo -e "${1}"
    echo "--------------------------------"
    echo "No upload and exit."
    echo "----------------------------------------------------------------"
    exit ${2}
}

echo "----------------------------------------------------------------"
echo "Copyright 2014-2015 Bugly @Tencent. All rights reserved."

echo "This script will extract symbols from the .dSYM file and generate .symbol file(Bugly supported) and upload to server."
echo "You could visit http://bugly.qq.com to get more details about Bugly."
echo "----------------------------------------------------------------"

echo "Uploading dSYM to Bugly."
echo ""

# Bugly服务域名
DSYM_UPLOAD_DOMAIN="bugly.qq.com"

# 读取Info.plist文件中的版本信息
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}")

# ios 11以后获取版本号与build
# Build号
BUNDLE_VERSION=`xcodebuild -showBuildSettings | grep CURRENT_PROJECT_VERSION | tr -d 'CURRENT_PROJECT_VERSION ='`
# 版本号
BUNDLE_SHORT_VERSION=`xcodebuild -showBuildSettings | grep MARKETING_VERSION | tr -d 'MARKETING_VERSION ='`

# 组装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 "--------------------------------"
echo "Step 1: Prepare application information."
echo "--------------------------------"

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}"

echo "--------------------------------"
echo "Step 2: Check the arguments ..."

# 上传
function upload() {
    echo "---------------开始上传-----------------"
    DSYM_FOLDER="${CONFIGURATION_BUILD_DIR}"
    for dsymFile in $(find "$DSYM_FOLDER" -name '*.dSYM'); do
        echo "正在上传: $dsymFile"
       
       (/usr/bin/java -jar "${BUGLY_SYMBOL_JAR_PATH}" -appid "${BUGLY_APP_ID}" -appkey "${BUGLY_APP_KEY}" -bundleid "${BUNDLE_IDENTIFIER}" -version "${BUNDLE_SHORT_VERSION}" -platform "IOS" -inputSymbol ${dsymFile} ) || exitWithMessage "Error: Failed to extract symbols." 1
    done

    echo "---------------上传完成-----------------"
}


# 是否开启上传功能
if [ $ENABEL_BUGLY_SYMBOL_UPLOAD -eq 0 ]; then
exitWithMessage "已关闭bugly符号上传.(如有需要开启请设置ENABEL_BUGLY_SYMBOL_UPLOAD=1)" 0
fi

# 检查模拟器编译是否允许上传符号
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

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

# 检查必须参数是否设置
if [ ! "${BUGLY_APP_ID}" ]; then
exitWithMessage "Error: Bugly App ID not defined." 1
fi

if [ ! "${BUGLY_APP_KEY}" ]; then
exitWithMessage "Error: Bugly APP Key not defined." 1
fi

if [ ! "${BUNDLE_IDENTIFIER}" ]; then
exitWithMessage "Error: Bundle Identifier not defined." 1
fi

##检查是否Archive操作
if [[ "$TARGET_BUILD_DIR" == *"/Archive"* ]]; then
    echo "Archive the package"
else
    exitWithMessage "Warning: Build for NOT Archive mode and skipping to upload." 0
fi

# 提取符号信息
echo "--------------------------------"
echo "Step 3: Extract symbol info from .dSYM file."

# Bugly符号提取工具路径, 请确保已经把对应的buglySymbolIOS.jar拷贝到目录~/bin
#BUGLY_SYMBOL_JAR_PATH="$HOME/bin/buglySymbolIOS.jar"

if [ ! -e "$BUGLY_SYMBOL_JAR_PATH" ]; then
exitWithMessage "Error: Jar file '${BUGLY_SYMBOL_JAR_PATH}' was not found. \nPlease copy the jar file into ~/bin folder." 1
fi

# 上传
upload

echo "Please check the script and try it again."

效果

image.png
image.png

有疑问的小伙伴欢迎留言

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 介绍 什么是符号表? 符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:<起始地址> <结束地址...
    一滴矿泉水阅读 5,232评论 1 6
  • 首先是集成: AppDelegate.m中导入头文件: import <Bugly/Bugly.h> (BOOL)...
    倪大头阅读 312评论 0 1
  • 什么是符号表? 符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示: <起始地址> <结束地址> ...
    深圳阳光阅读 12,165评论 28 5
  • 一:介绍 1、什么是符号表? 符号表是内存地址与函数名、文件名、行号的映射表。 符号表元素如下所示: <起始地址>...
    平凡之路561阅读 1,238评论 1 1
  • 腾讯Bugly官方文档:Bugly iOS 符号表配置 符号表工具依赖的Java运行环境(JRE或JDK版本需要>...
    Locke阅读 2,394评论 2 5