Bugly Android SDK 常见问题

异常上报SDK常见问题

1. 开发过程中怎样查看Bugly的Logcat日志?

开启Bugly的Logcat日志需要在初始化时,isDebug参数设为true。

TAG为CrashReportInfo,是Bugly主要操作日志,包括初始化、日志上报信息;

TAG为CrashReport,是Bugly调试日志,若Bugly使用中有问题,可以将该日志信息反馈给客服人员。

2. 为什么相同的用户一天上报了几百条Crash?会消耗用户流量吗?

系统在进程发生Crash后,有可能会再次将它拉起(系统的、代码逻辑的),导致不停地Crash。例如Service、Recevier等都比较容易出现自动拉起的情况。

Bugly有自己的流量保护机制,在保证数据准确性的前提下,会尽量减少用户流量消耗。

3. Bugly上报Crash的时机是?

Bugly会在发生Crash时尝试尽量上报。如果失败,会在下次启动选择合适的时机上报。

4. 为什么我完成了Bugly集成,在页面还是看不到日志?

请检查:

1)AppId是否设置正确(若设置错误,请更正后卸载App重试);

2)初始化SDK是否在Crash之前完成;

3)网络是否可用;

4)测试时如果之前有上报突然不上报了,可能是因为Bugly有流量保护,请卸载App后再试(它并不影响真实用户Crash准确度);

以上检查OK,仍然没有上报?请直接联系我们的客服人员。

5. 每个版本都要配置符号表吗?

是的。每个App版本都需要对应一份符号表(Java的Mapping文件及SO的Symbol文件,applec++的dsym文件),配置只对设置的版本有效,重复配置将会覆盖。

6. 不配置还原符号表会影响异常上报吗?会有什么影响?

不会影响异常上报!没有符号表,堆栈无法还原成代码中的类或方法及源文件行号,会对异常合并存在一定影响。

7. 配置了还原符号表,为什么显示日志仍然没有行号信息?

您的行号信息有可能在编译或混淆apk的时候已经丢失了。符号表中是没有行号信息的。

详情请参考: http://bugly.qq.com/blog/?p=110#

8. 用了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。

9. Bugly收集了设备哪些信息?有用户隐私吗?

Bugly收集的信息都是为了更真实地为开发者还原Crash场景服务的,并不涉及用户隐私信息:

Crash环境:Crash信息及线程堆栈,ROM/RAM/SD卡容量、网络/语言等状态

App信息:包名、版本、所属进程名

设备信息:IMEI等设备识别,用于判断Crash设备统计。

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字典序比策略配置的更大,下发策略

14. 请问你们SDK包含support-v4包么?

SDK并不会打包support-v4包,但我们需要你导入support-v4包,不然会出现找不到类的异常。

15. 升级SDK支持多语言么?

目前我们支持自定义文案来实现弹窗的语言设置,web后台暂时还不支持多语言配置。

16. 初始化完成,升级策略也已经设置了。但是没有弹出升级的dialog。

检查你上传的apk包是否比本地的版本要高,并且是否在该版本配置了升级策略。

17. 点击下次进行升级后(和直接kill掉应用后),下次升级的时机是?

下次升级的时机是下次启动或者用户手动检查更新。

18. 内测升级是全量更新还是增量更新?

全量更新。

19. 为什么内测分发用户默认只开放到1000

为了防止非法应用的上传,如果是正规产品对下载次数有限制的话,可以加群@我们提高上线值。