1. 码力APP监控的工作原理是怎样的?

码力APP监控主要由三部分组成:码力SDK、码力云端、码力控制台。您需要将码力SDK嵌入到移动应用工程,它将负责采集和上报影响用户体验的各种性能指标数据给码力云端;再由码力云端进行数据处理;最终,您可以通过码力控制台进行性能数据查看、分析、问题定位和管理等操作。


2. 什么是码力SDK?

码力SDK是嵌入到移动应用工程中的探针(软件程序),支持iOS和Android两个平台,用于跟踪和反馈用户使用过程中出现的应用崩溃、加载错误以及加载缓慢等各种对用户体验造成负面影响的故障或性能问题。

3. 码力SDK支持哪些版本的iOS和Android?

码力支持对iOS以及Android端应用进行性能监控:

  1. IOS:支持7.0以及以上环境;
  2. Android:
    • java jdk1.5+
    • gradle 2.8+
    • groovy 2.4+
    • android
      • buildToolsVersion 20+
      • android sdk 2.3+
    • 支持android MulitDex


4. 码力SDK对APP的性能影响如何?

码力SDK对APP性能影响非常轻微,数据传输也是经过压缩和聚合处理的,不会影响终端用户的使用体验。


5. 集成SDK后,多久可以看到数据?

发布并运行新的APP,等候1分钟左右即可在码力控制台查看到网络数据。

6. 集成码力SDK后,在控制台没有看到数据,如何排查?

若出现数据上报失败的情况,您可以排查和确认以下情况:
Step 1:请确认APP是否处于Debug模式,码力SDK默认在Debug模式下默认不上报性能数据。Android端可以配置在Debug模式下上报数据的开关,请在配置文件中添加如下配置:
image
Step 2:请确认您已经开启了崩溃、网络上报的相关功能,并在联网环境下运行您的APP;
Step 3:请确认APP中的APPKey是否与控制台的APPKey吻合。特别是使用「安全图片」进行APPKey加密的APP,数据会默认上报到「安全图片」记录的APPKey中。

若控制台已经显示了网络数据,而没有展示崩溃数据。很有可能是app中还集成其他有崩溃检测功能的SDK,请先关闭app中的其他崩溃上报功能再来尝试。

若您已经检查过以上情况,而依旧未看到数据。请在配置文件中添加配置项,将sdk的日志等级设置为DEBUG,重新打包后,运行您的app触发崩溃和网络请求,并且将码力sdk输出的日志复制或者截图,在下面的码力「钉钉服务群」反馈您的问题。
image


7. 为什么我还没有集成码力SDK,控制台就有数据了?

百川其他产品的SDK本身也具有崩溃上报功能,若该功能为开启状态,码力云端就会收到该应用的Crash信息。鉴于这些信息同样也是APP的性能数据,因此也会被码力云端进行聚合统计,并展现在码力控制台中。

百川产品自带的崩溃上报功能非常基础,仅支持JAVA类型崩溃的上报,同时崩溃的日志信息采集也不完整。这里建议您集成码力SDK来进行全面稳定的崩溃、网络性能监控。


8. 如何配置自动上传符号表文件(mapping.txt/dSYM)?

Android

在配置Grandle的过程中,添加参数「autoMappingUpload」并设置为true。开启后,SDK将自动上传mapping.txt到码力云端,则控制台错误堆栈的源代码类名称以及行号等可正常显示。

iOS

要实现dSYM的自动上报,需要在应用Build Phase中添加一段脚本,如图示:
image

脚本内容为:

#!/bin/sh

# 配置信息
UPLOAD_SIMULATOR_DSYM=0     # 默认不上传模拟器DSYM
UPLOAD_DEBUG_DSYM=0     # 默认不上传调试DSYM
APP_KEY=""              # 百川AppKey
APP_VERSION=""          # 自定义版本, 若不填写, 则使用CFBundleShortVersionString

if [ ! "$APP_VERSION" ]; then
    APP_VERSION=$(/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' "${INFOPLIST_FILE}")
fi

# 配置检查
if [ "$EFFECTIVE_PLATFORM_NAME" == "-iphonesimulator" ]; then
    if [ $UPLOAD_SIMULATOR_DSYM -eq 0 ]; then
        exit 0
    fi
fi

if [ "$CONFIGURATION" == "Debug" ]; then
    if [ $UPLOAD_DEBUG_DSYM -eq 0 ]; then
        exit 0
    fi
fi

if [ ! "$APP_KEY" ]; then
    echo "APP_KEY为必须项, 请修改脚本中的配置信息."
    exit 1
fi

# 设置检查
if [ "$DEBUG_INFORMATION_FORMAT" != "dwarf-with-dsym" ]; then
    echo "Build Settings - Build Options - Debug Infomation Format需设置为\"DWARF with dSYM File\""
    exit 1
fi

# 上传
for file in $(find "$DWARF_DSYM_FOLDER_PATH" -name '*.dSYM'); do
    pushd "$DWARF_DSYM_FOLDER_PATH"

    FILENAME="${file##*/}"
    DSYM_ZIP="${FILENAME// /_}.zip"
    zip -r "$DSYM_ZIP" "$FILENAME"
    curl -F appKey="$APP_KEY" -F platform="ios" -F appVersion="$APP_VERSION" -F symbolFile=@"$DSYM_ZIP" 'https://mali.taobao.com/api/SymbolUpload'
    rm "$DSYM_ZIP"

    popd
done

在添加完脚本后,需要编辑脚本中的APP_KEY,填入应用对应的AppKey。如果需要自定义应用版本,需同时编辑APP_VERSION

默认配置下,脚本只在非模拟器环境、非Debug时上报dSYM,可以调整脚本中的UPLOAD_SIMULATOR_DSYMUPLOAD_DEBUG_DSYM改变此行为。

注:若进行了以上操作的开发者,发现上报的奔溃详情没有符号化,请再次确认配置。在模拟器以及debug环境下,dSYM文件是不上报的。


9. 网络性能监控支持哪些网络库?

Android

OkHttp2
OkHttp3
retrofit
HttpURLConnection

iOS

NSURLConnection
NSURLSession
CFNetwork

10. 我已经在控制体上传了dSYM文件,为什么日志符号化没有生效?

您需要确认上传的dSYM文件与控制台接收到崩溃日志的编译版本相同(即UUID匹配)。手工上传非常容易引起dSYM文件版本号相同但是UUID不同的情况,而这样的问题通过配置SDK自动上报即可避免。

FAQ

关于此文档暂时还没有FAQ
返回
顶部