1.修改app工程下build.gradle文件
- 在android->defaultConfig下增加ndk设置
android {
defaultConfig {
ndk {
// 设置支持的SO库架构
abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
}
}
- 新增依赖
implementation 'com.tencent.bugly:crashreport:latest.release'
//其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9
implementation 'com.tencent.bugly:nativecrashreport:latest.release'
//其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0
- 新增网络安全配置network_security_config.xml文件
res目录下新建xml目录,用于放置network_security_config.xml.
该文件用于允许通过http方式访问bugly网站进行上报.
android.bugly.qq.com
3.修改修改manifest文件
- 增加权限
- 设置网络安全配置文件
在application节点中新增如下信息:
android:networkSecurityConfig="@xml/network_security_config"
- 初始化
在Application中增加:
CrashReport.initCrashReport(applicationContext, appId, BuildConfig.DEBUG)
appId为bugly上创建的app的App ID.
- 模拟crash
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
CrashReport.testJavaCrash()
}
}
}
上述代码在点击按钮时调用CrashReport.testJavaCrash()
触发异常.
-
查看bugly上报异常
出现的问题:
Android AndroidManifest.xml文件权限出现“Permission is only granted to system apps”的解决办法
废话不多说,直接上图
例如出现这个问题,好像也不会影响我们APP的正常使用,但是有强迫症的人实在是受不鸟。
该错误的意思是该权限只是针对系统级的app的。
那么只是针对系统级的app的这个是什么意思的呢?
有时候使用某些api需要使用系统权限,如调用PackageInstaller的相关接口,需要android.permission.INSTALL_PACKAGES权限,该权限系统只会授权给系统应用。
好吧,原来是这样的。那我们来解决这个问题。
解决方式一:
网上很多都说在AS的File -> Settings -> Inspections
在Android Lint, locate Using system app permission. 选择一个比Error等级低的.(意思就是把Error换成warning或者其它等级)
好吧我的乖乖,找了半天,Android Lint之后就没找到下一步的locate ,原来是我的AS升级了,我是用的是3.2.2的版本。
原来是在Android Lint之后到correctness里面往下翻,找到Using system app permission右边有一个severity.把error改为warning就行了。
ES的方法Preferences --> EditorEditor --> Inspections --> Android Lint --> uncheck item Using System app permissio
解决方式二:
就是把uses-permission改为permisson即可。
那为什么要这样改呢?
我们可以了解一下uses-permission和permisson到底有什么区别?
uses-permission是系统(SDK)定义的,使用的时候直接调用系统定义好的权限就可以对应用开启权限。permisson相当于自定义的一个权限,可以供其他应用程序使用本应用的说明。
网上还有说法uses-permission和permisson的作用于不同,这种说法表述有误。
在一般情况下实际上不需要为自己的应用程序声明某个权限,除非你提供了供其他应用程序调用的代码或者数据。这个时候你才需要使用
刚好,我们申明的这个权限出现这个问题,就是使用某些api需要使用系统权限。所以把把uses-permission改为permisson,相当于这个权限是我们自己定义的。也可以解决这个问题。
来源:https://www.jianshu.com/p/1dd65e893da0
https://blog.csdn.net/albb_/article/details/89670130