Android SDK接入指南
SDK集成
1.下载AppInsights的Android SDK包;
2.将aar文件复制到module的libs目录下,在module的gradle文件中添加依赖:
dependencies {implementation files('libs/insight-crash-release.aar')}
为了使APP Crash堆栈的可读性更高,建议您配置符号表文件,更准确地定位问题:
- 纯Java代码的工程:只需要配置混淆后生成的Mapping文件即可;
- 含有Native代码的工程:建议配置符号表工具从Debug SO中提取的Symbol符号表文件。
基础配置
在AndroidManifest.xml中添加权限:
<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" />
请避免混淆AppInsights,在Proguard混淆文件中增加以下配置:
-dontwarn com.tencent.insight.**-keep public class com.tencent.insight.**{*;}
初始化SDK
获取AppId
AppId和App Key是创建应用时自动生成。
在页面左侧导航栏选择应用设置 > SDK接入。
调用初始化方法,AppInsights会为自动检测环境并完成配置:
CrashReport.initCrashReport(getApplicationContext(), "注册应用时生成的APPID", false);
为了保证运营数据的准确性,建议不要在异步线程初始化AppInsights。
第三个参数为SDK调试模式开关,调试模式的行为特性如下:
- 输出详细的AppInsights SDK的Log;
- 每一条Crash都会被立即上报;
- 自定义日志将会在Logcat中输出。
建议在测试阶段建议设置成true,发布时设置为false。
此外,AppInsights支持通过“AndroidManifest.xml”来配置APP信息。如果同时又通过代码中设置了APP信息,则最终以代码配置的信息为准。
在“AndroidManifest.xml”的“Application”中增加“meta-data”配置项:
<application<!-- 配置APP ID --><meta-dataandroid:name="INSIGHT_APP_ID"android:value="<APP_ID>" /><!-- 配置APP版本号 --><meta-dataandroid:name="INSIGHT_APP_VERSION"android:value="<APP_Version>" /><!-- 配置APP渠道号 --><meta-dataandroid:name="INSIGHT_APP_CHANNEL"android:value="<APP_Channel>" /><!-- 配置Bugly调试模式(true或者false)--><meta-dataandroid:name="INSIGHT_ENABLE_DEBUG"android:value="<isDebug>" /></application>
不同于“android:versionName”,“INSIGHT_APP_VERSION”配置的是AppInsights平台的APP版本号。
通过“AndroidManifest.xml”配置后的初始化方法如下:
CrashReport.initCrashReport(getApplicationContext());
AppInsights默认从“AndroidManifest.xml”文件中读取“versionName”作为版本号
MultiDex注意事项
如果使用了MultiDex,建议通过Gradle的“multiDexKeepFile”配置等方式把AppInsights的类放到主Dex,另外建议在Application类的”attachBaseContext”方法中主动加载非主dex:
public class MyApplication extends SomeOtherApplication {@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(context);Multidex.install(this);}}