Android SDK接入指南

SDK集成

1.下载AppInsights的Android SDK包;
2.将aar文件复制到module的libs目录下,在module的gradle文件中添加依赖:

  1. dependencies {
  2. implementation files('libs/insight-crash-release.aar')
  3. }

为了使APP Crash堆栈的可读性更高,建议您配置符号表文件,更准确地定位问题:

  • 纯Java代码的工程:只需要配置混淆后生成的Mapping文件即可;
  • 含有Native代码的工程:建议配置符号表工具从Debug SO中提取的Symbol符号表文件。

基础配置

在AndroidManifest.xml中添加权限:

  1. <uses-permission android:name="android.permission.INTERNET" />
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

请避免混淆AppInsights,在Proguard混淆文件中增加以下配置:

  1. -dontwarn com.tencent.insight.**
  2. -keep public class com.tencent.insight.**{*;}

初始化SDK

获取AppId
AppId和App Key是创建应用时自动生成。
在页面左侧导航栏选择应用设置 > SDK接入。

调用初始化方法,AppInsights会为自动检测环境并完成配置:

  1. CrashReport.initCrashReport(getApplicationContext(), "注册应用时生成的APPID", false);

为了保证运营数据的准确性,建议不要在异步线程初始化AppInsights。
第三个参数为SDK调试模式开关,调试模式的行为特性如下:

  • 输出详细的AppInsights SDK的Log;
  • 每一条Crash都会被立即上报;
  • 自定义日志将会在Logcat中输出。

建议在测试阶段建议设置成true,发布时设置为false。

此外,AppInsights支持通过“AndroidManifest.xml”来配置APP信息。如果同时又通过代码中设置了APP信息,则最终以代码配置的信息为准。
在“AndroidManifest.xml”的“Application”中增加“meta-data”配置项:

  1. <application
  2. <!-- 配置APP ID -->
  3. <meta-data
  4. android:name="INSIGHT_APP_ID"
  5. android:value="<APP_ID>" />
  6. <!-- 配置APP版本号 -->
  7. <meta-data
  8. android:name="INSIGHT_APP_VERSION"
  9. android:value="<APP_Version>" />
  10. <!-- 配置APP渠道号 -->
  11. <meta-data
  12. android:name="INSIGHT_APP_CHANNEL"
  13. android:value="<APP_Channel>" />
  14. <!-- 配置Bugly调试模式(true或者false)-->
  15. <meta-data
  16. android:name="INSIGHT_ENABLE_DEBUG"
  17. android:value="<isDebug>" />
  18. </application>

不同于“android:versionName”,“INSIGHT_APP_VERSION”配置的是AppInsights平台的APP版本号。
通过“AndroidManifest.xml”配置后的初始化方法如下:

  1. CrashReport.initCrashReport(getApplicationContext());

AppInsights默认从“AndroidManifest.xml”文件中读取“versionName”作为版本号

MultiDex注意事项

如果使用了MultiDex,建议通过Gradle的“multiDexKeepFile”配置等方式把AppInsights的类放到主Dex,另外建议在Application类的”attachBaseContext”方法中主动加载非主dex:

  1. public class MyApplication extends SomeOtherApplication {
  2. @Override
  3. protected void attachBaseContext(Context base) {
  4. super.attachBaseContext(context);
  5. Multidex.install(this);
  6. }
  7. }