Android版本:8.1
需求:在系统app里集成bugly,收集错误信息。
一丶在makefile里加入bugly的SDK
把从bugly下载的jar包放入本地app的lib目录下
LOCAL_STATIC_JAVA_LIBRARIES := bugly
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := bugly:lib/bugly_crash_release.jar
这里bugly只是个代名词,格式为 xxx:path
二丶在代码里初始化
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
在application下加入metadata
<!--bugly config-->
<!-- 配置APP ID -->
<meta-data
android:name="BUGLY_APPID"
android:value="<APP_ID>" />
<!-- 配置APP版本号 -->
<meta-data
android:name="BUGLY_APP_VERSION"
android:value="<APP_Version>" />
<!-- 配置APP渠道号 -->
<meta-data
android:name="BUGLY_APP_CHANNEL"
android:value="<APP_Channel>" />
<!-- 配置Bugly调试模式(true或者false)-->
<meta-data
android:name="BUGLY_ENABLE_DEBUG"
android:value="<isDebug>" />
上面除了APP_ID指的是我们创建的app的id, 其余的是自定义。
然后就是在Application.java的Oncreate里初始化buglym 记得导包
MyApplication.java
import com.tencent.bugly.crashreport.CrashReport;
@Override
public void onCreate() {
super.onCreate();
//init bugly
CrashReport.initCrashReport(getApplicationContext(), "xxxxxxxxx", false);
}
之后就可以调用测试,在主Activity的oncreate里执行测试。
MainActivity.java
import com.tencent.bugly.crashreport.CrashReport;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xxxxx);
CrashReport.testJavaCrash();
}
遇到的问题:编译成功测试崩溃,出了错,但是崩溃信息没有上报到bugly。
日志显示
Cleartext HTTP traffic to android.bugly.qq.com not permitted
2019-05-27 14:39:41.527 11029-11061/? W/System.err: java.io.IOException: Cleartext HTTP traffic to android.bugly.qq.com not permitted
2019-05-27 14:39:41.528 11029-11061/? W/System.err: at com.tencent.bugly.proguard.s.a(BUGLY:266)
2019-05-27 14:39:41.528 11029-11061/? W/System.err: at com.tencent.bugly.proguard.s.a(BUGLY:115)
2019-05-27 14:39:41.528 11029-11061/? W/System.err: at com.tencent.bugly.proguard.v.run(BUGLY:355)
2019-05-27 14:39:41.528 11029-11061/? W/System.err: at com.tencent.bugly.proguard.u$1.run(BUGLY:723)
解决办法:
在res的xml里创建一个network_security_config.xml文件,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后,在AndroidManifest.xml文件下的application标签增加以下属性:
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
/>