Bugly Android SDK 常见问题
- Bugly Android SDK 常见问题
- 异常上报SDK常见问题
- 1. Bugly收集了设备哪些信息?有用户隐私吗?
- 2. 开发过程中怎样查看Bugly的Logcat日志?
- 3. 为什么相同的用户一天上报了几百条Crash?会消耗用户流量吗?
- 4. Bugly上报Crash的时机是?
- 5. 为什么我完成了Bugly集成,在页面还是看不到日志?
- 6. 每个版本都要配置符号表吗?
- 7. 不配置还原符号表会影响异常上报吗?会有什么影响?
- 8. 配置了还原符号表,为什么显示日志仍然没有行号信息?
- 9. 用了Bugly的库应用启动不了,提示发生UnsatisfiedLinkError异常?
- 10. Crash页面中的“是否可见”信息是什么意思?
- 11. 通过(第三方)静态代码发现Bugly SDK的“addJavascriptInterface”接口存在安全漏洞?
- 升级SDK常见问题
- 1. 添加abiFilter之后Android Studio出现已下提示 "NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin."
- 2. 导入Demo提示sdk没有对应buildTools,要怎么改?
- 3. 接入ndk,在虚拟机不能正常安装,提示不支持x86架构
- 4. gradle编译很慢,一直停在Gradle:Resolve dependencies':app:_debugCompile'。
- 5. 为什么我接入SDK初始化后,还不能正常使用?
- 6. 为什么我上传了apk包,还不能提示升级?
- 7. 如果我创建了多个升级策略,下发的处理是怎样的?
- 8. Bugly的升级功能怎么让App做到直接升级到最新版本呢?比如现在2.1,最新版本2.3,中间还有一个2.2,我需要怎样设置才能让用户有新版本。直接升级到最新版本,跳过中间版本呢?
- 9. 集成了Bugly升级SDK还需要集成Bugly SDK吗?
- 10. 出现检测新版本失败的原因?
- 11. 上传的apk文件显示您当前的操作已违规,是怎么回事?
- 12. 升级SDK有技术交流群吗?QQ群号是多少?
- 13. 具体的升级策略是怎样的?
- 14. 请问你们SDK包含support-v4包么?
- 15. 升级SDK支持多语言么?
- 16. 初始化完成,升级策略也已经设置了。但是没有弹出升级的dialog。
- 17. 点击下次进行升级后(和直接kill掉应用后),下次升级的时机是?
- 18. 内测升级是全量更新还是增量更新?
- 19. 为什么内测分发用户默认只开放到1000
- 异常上报SDK常见问题
异常上报SDK常见问题
1. Bugly收集了设备哪些信息?有用户隐私吗?
最新版本sdk已经删除了很多不必要的信息采集,请先将您使用的bugly sdk更新到官网发布的最新版本
Bugly收集的信息都是为了更真实地为开发者还原Crash场景服务:
Crash环境:Crash信息及线程堆栈,ROM/RAM/SD卡容量、网络/语言等状态
App信息:包名、版本、所属进程名
设备信息:Android id,用于判断Crash设备做统计。如果遇到有关隐私协议审核不允许采集Android id的场景,可以在初始化bugly sdk的时候自定义一个device id,这样本次初始化bugly sdk就不会再采集 Android id了。具体api参考https://bugly.qq.com/docs/user-guide/advance-features-android/?v=20200622202242#userstrategy
bugly 隐私协议文档下载地址 :https://static.bugly.qq.com/bugly-sdk-privacy-statement.pdf
2. 开发过程中怎样查看Bugly的Logcat日志?
开启Bugly的Logcat日志需要在初始化时,isDebug参数设为true。
TAG为CrashReportInfo,是Bugly主要操作日志,包括初始化、日志上报信息;
TAG为CrashReport,是Bugly调试日志,若Bugly使用中有问题,可以将该日志信息反馈给客服人员。
3. 为什么相同的用户一天上报了几百条Crash?会消耗用户流量吗?
系统在进程发生Crash后,有可能会再次将它拉起(系统的、代码逻辑的),导致不停地Crash。例如Service、Recevier等都比较容易出现自动拉起的情况。
Bugly有自己的流量保护机制,在保证数据准确性的前提下,会尽量减少用户流量消耗。
4. Bugly上报Crash的时机是?
Bugly会在发生Crash时尝试尽量上报。如果失败,会在下次启动选择合适的时机上报。
5. 为什么我完成了Bugly集成,在页面还是看不到日志?
请检查:
1)AppId是否设置正确(若设置错误,请更正后卸载App重试);
2)初始化SDK是否在Crash之前完成;
3)网络是否可用;
4)测试时如果之前有上报突然不上报了,可能是因为Bugly有流量保护,请卸载App后再试(它并不影响真实用户Crash准确度);
以上检查OK,仍然没有上报?请直接联系我们的客服人员。
6. 每个版本都要配置符号表吗?
是的。每个App版本都需要对应一份符号表(Java的Mapping文件及SO的Symbol文件,applec++的dsym文件),配置只对设置的版本有效,重复配置将会覆盖。
7. 不配置还原符号表会影响异常上报吗?会有什么影响?
不会影响异常上报!没有符号表,堆栈无法还原成代码中的类或方法及源文件行号,会对异常合并存在一定影响。
8. 配置了还原符号表,为什么显示日志仍然没有行号信息?
您的行号信息有可能在编译或混淆apk的时候已经丢失了。符号表中是没有行号信息的。
详情请参考: http://bugly.qq.com/blog/?p=110#
9. 用了Bugly的库应用启动不了,提示发生UnsatisfiedLinkError异常?
通常是因为安装包中各CPU架构目录下所需要的动态库缺少导致的。
举个例子:
libs目录下存在:
armeabi\ libA.so , libBugly.so
armeabi-v7a\ libBugly.so
如果App运行在armv7的设备上,系统发现有armeabi-v7a目录,会把armeabi-v7a目录下的SO安装到系统,此时程序运行会发现找不到libA.so ,就会上报UnsatisfiedLinkError了。
解决办法:
提供armv7编译的libA.so放入armeabi-v7a下,补齐各架构所需要的SO。
把armeabi-v7a目录去掉,默认armv7下也能使用armeabi下的SO。
10. Crash页面中的“是否可见”信息是什么意思?
指的是崩溃时App的UI(Activity)是否可见(处于前台)。
11. 通过(第三方)静态代码发现Bugly SDK的“addJavascriptInterface”接口存在安全漏洞?
SDK的setJavascriptMonitor接口内部调用了addJavascriptInterface接口。而addJavascriptInterface接口在Android4.2及以下版本下存在安全漏洞,高版本Android系统已经修复了这个漏洞。
针对这个问题,SDK的setJavascriptMonitor接口内部做了Android版本的判断,如果低于Android4.2版本,便不会调用addJavascriptInterface这个接口,因此并不存在漏洞的风险,建议忽略。
升级SDK常见问题
1. 添加abiFilter之后Android Studio出现已下提示 "NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin."
在项目根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
2. 导入Demo提示sdk没有对应buildTools,要怎么改?
可以将build.gradle的buildToolsVersion改成你本地的版本,如
buildToolsVersion "22.0.1"
.。
3. 接入ndk,在虚拟机不能正常安装,提示不支持x86架构
可以在build.gradle中配置ndk支持架构 如:
ndk {
//设置支持的SO库架构
abiFilters 'armeabi', 'x86'//, 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
4. gradle编译很慢,一直停在Gradle:Resolve dependencies':app:_debugCompile'。
可能因为你请求下载较新的gradle版本,你可以修改根目录build.gradle较低版本:
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
}
5. 为什么我接入SDK初始化后,还不能正常使用?
三步走,配置gradle、配置权限、调用init方法,任何高级设置都需要在init方法之前完成。比如
// 在调用init方法前设置自定义更新对话框布局
Beta.upgradeDialogLayoutId = R.layout.upgrade_dialog;
// 调用init方法
Bugly.init(getApplicationContext(), APP_ID, false);
6. 为什么我上传了apk包,还不能提示升级?
需要在升级里新建策略,才能测试升级功能哦。
7. 如果我创建了多个升级策略,下发的处理是怎样的?
Bugly后台会随机下发一个策略。
8. Bugly的升级功能怎么让App做到直接升级到最新版本呢?比如现在2.1,最新版本2.3,中间还有一个2.2,我需要怎样设置才能让用户有新版本。直接升级到最新版本,跳过中间版本呢?
可以在配置策略时选择源版本进行升级。如果您配置了多个策略,如(2.2,2.3版本),会随机下发一个,这时你只需要保留(2.3)就可以直接升级到最新版本啦。
9. 集成了Bugly升级SDK还需要集成Bugly SDK吗?
不需要的,升级SDK里面已经包含了Bugly SDK,具备Crash上报功能。
10. 出现检测新版本失败的原因?
可能是直接在onCreate里面直接使用Beta.checkUpgrade方法,该函数是需要在更新按钮的点击事件中使用。
11. 上传的apk文件显示您当前的操作已违规,是怎么回事?
应该是您的产品包含敏感词触发了我们自动检查机制,若确定产品没有问题请联系我们的客服。
12. 升级SDK有技术交流群吗?QQ群号是多少?
有的,qq群:429975901。
13. 具体的升级策略是怎样的?
目前我们升级策略有以下几种:
- MD5都不为空且相等,不下发策略
- 若配置全量升级,则versionCode当前版本<策略配置的VersionCode,下发策略
- 若配置非全量升级,则versionName_versionCode<策略配置的versionName_versionCode,下发策略
14. 请问你们SDK包含support-v4包么?
SDK并不会打包support-v4包,但我们需要你导入support-v4包,不然会出现找不到类的异常。
15. 升级SDK支持多语言么?
目前我们支持自定义文案来实现弹窗的语言设置,web后台暂时还不支持多语言配置。
16. 初始化完成,升级策略也已经设置了。但是没有弹出升级的dialog。
检查你上传的apk包是否比本地的版本要高,并且是否在该版本配置了升级策略。
17. 点击下次进行升级后(和直接kill掉应用后),下次升级的时机是?
下次升级的时机是下次启动或者用户手动检查更新。
18. 内测升级是全量更新还是增量更新?
全量更新。
19. 为什么内测分发用户默认只开放到1000
为了防止非法应用的上传,如果是正规产品对下载次数有限制的话,可以加群@我们提高上线值。