❗️ Android SDK 只捕获 java 相关的宕机
如需捕获 C++ 宕机信息,请查看 Android NDK 接入指南 文档
# 接入指南
# 1.工具下载
在 SDK 下载页面点击下载 Android SDK。
# 2.导入依赖文件
将下载后压缩包中的[Crasheye.jar]文件拷贝到你的工程[libs]目录中,然后在 Android Studio 工程中展开[libs]文件夹,你就能看到刚才拷贝进去的[Crasheye.jar]文件,右键点击,选择[Add As Library...],导入成功。
# 3.配置配置 AndroidManifest.xml 文件
在 [AndroidManifest.xml] 文件中添加 SDK 所需的配置
权限配置(必需)
渠道信息(可选)
<!--权限配置,必需>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application ……>
<activity ……/>
<!--渠道信息,可选>
<meta-data android:name="CRASHEYE_CHANNEL" android:value="Your_Channel"/>
</application>
# 4.初始化SDK
Crasheye 只需要添加一行代码便可完成对 APP 异常的监控。
TIP
💡 建议将该初始化代码添加到 Application.onCreate()或者 MainActivity.onCreate()之后。
@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Crasheye.init(this, "Your_AppKey");
}
TIP
👍 至此,Android 上的 SDK 接入工作就完成了
# 5.测试
请在真机上调试验证,在 Crasheye 后台便能实时看到监控数据。
启动您的 app 程序可以在 LogCat 中看到输出 "init success!" 等字样,如下图:
# 常用API
# Crasheye.setChannelID
设置渠道信息
- 你可以将渠道号信息配置在 AndroidManifest.xml 文件中,Crasheye 会自动读取你配置的信息并上报,参见配置 AndroidManifest.xml 文件。
- 如果你不希望在 AndroidManifest.xml 中写入渠道信息,你也可以通过直接调用 API 的方式进行设置,代码示例如下:
@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Crasheye.setChannelID("Your_Channel");
Crasheye.init(this, "Your_AppKey");
}
# Crasheye.setAppVersion
设置 App 版本号
- Crasheye 默认会读取 AndroidManifest.xml 中配置的 android:versionName 版本号信息,当然你也可以通过调用 API 自行设置:
@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Crasheye.setAppVersion("Your_APP_Version");
Crasheye.init(this, "Your_AppKey");
}
# Crasheye.setFlushOnlyOverWiFi
设置仅在 Wifi 环境下上报
- 为了节省用户在非 wifi 环境下的网络流量,Crasheye 提供接口可使崩溃后的堆栈信息仅在手机链接 Wifi 的情况下才上报:
@override
public void onCreate(Bundle savedInstanceState) {
/* true:仅在wifi下上报;
* false:所有网络均上报。
* 默认值为false
*/
super.onCreate(savedInstanceState);
Crasheye.setFlushOnlyOverWiFi(true);
Crasheye.init(this, "Your_AppKey");
}
# Crasheye.setUserIdentifier
设置用户标识 为每一条上报记录设置用户标识,可以方便后期筛选和定位问题,比如开发人员想看到自己手机上报的崩溃信息,就可以采用这种方式:
Crasheye.setUserIdentifier(String userIdentifier);
# Crasheye.setLogging
设置收集 log 日志
- 此接口主要是收集运行中的 logcat 日志,当发现异常时会把收集到的 log 信息保存起来,并一同上传至服务器;(接口最大支持收集 1000 行最新的 log 日志)
/**
* 设置获取log日志 获取行数和获取的关键字
* @param lines 获取的行数(最大收集1000行)
* @param filter 获取的关键字(可不传) 。例如:filter 是"Crasheye"就相当于LogCat过滤栏中输入“logcat -d Crasheye”
*/
Crasheye.setLogging(int lines, String filter);
# Crasheye.leaveBreadcrumb
添加面包屑(打点信息)
- 您可以在您的代码中添加多个面包屑(打点信息)然后在 Crasheye 平台上查看面包屑(打点信息)的时间和顺序,这样您就可以监视到您的项目是否按照您的预设跑了!只需要在每个您想监视的地方调用如下 API 即可:
Crasheye.leaveBreadcrumb(String breadcrumb);
# Crasheye.addExtraData
添加自定义数据
- 如果您觉得 Crasheye 默认捕获的数据还不足以满足您的要求的话,您可以添加自定义数据,只需要调用如下 API 即可:
Crasheye.addExtraData(String key, String value);
# Crasheye.sendScriptException
主动上报脚本信息接口
- 此接口主要是给开发者主动调用,在捕获到的异常堆栈信息时,如:lua、js 等脚本异常,可以通过调用接口上报至服务端。(为了减少重复上报,相同的异常信息在 10 分钟内只能上报一次)
/**
* 脚本上报接口
* @param errorTile 错误脚本的标题
* @param stacktrace 堆栈信息
* @param language 脚本语言
*/
Crasheye.sendScriptException(String errorTitle, String stacktrace, String language);
# Crasheye.getCrasheyeUUID
获取设备 ID 信息
- 此接口是用户获取当前手机的设备 ID 信息,通过此设备 ID 信息可以通过页面搜索,找到对应的机器异常信息。
Crasheye.getCrasheyeUUID();
# Crasheye.setIsBetaVersion
设置测试版本
/**
* 设置该版本是否为测试版本
* @param isBeta 是否为测试版本
*/
Crasheye.setIsBetaVersion(boolean isBeta)
# Mapping文件上传
# mapping.txt文件
https://developer.android.com/studio/build/shrink-code#native-crash-support (opens new window)
mapping.txt 文件默认路径
<项目文件夹>/app/build/outputs/mapping/release/mapping.txt
为何需要上传Mapping文件?
mapping文件是用来配合【符号文件】解析SDK上传的堆栈信息的。上传上来的堆栈信息是难以理解的信息,需要解析之后才能看懂。
# 工具上传
- 环境要求 Java SE Runtime Environment 7 (opens new window) 或以上
- 准备
- 运行上传工具,具体参数如下:
参数 | 说明 |
---|---|
-appkey | 项目的 appkey |
[-veresion] | 应用版本(可选),默认从项目 AndroidManifest.xml 中读取 |
[-AndroidManifestPath] | AndroidManifest.xml 路径(用于读取应用版本号,与-version 参数互斥)(可选) |
符号文件路径 | D:\AndroidProject\libslua.so (android工程中用到了c/c++代码,在构建的时候会生成, 具体文件路径需要看项目生成后文件路径) |
[-mapping] | mapping.txt 文件路径 |
java -jar CrasheyeAndroidSymbol.jar -appkey=项目的AppKey [-version=应用版本号] [-AndroidManifestPath=AndroidManifest.xml路径] 符号文
件路径 -mapping=mapping.txt的文件路径
- 上传成功
# 网页上传
- 设置 - 符号文件 - mapping 文件上传
- 选择应用版本
- 将 Mapping 文件通过网页上传