Android SDK 常见问题

上传的crash是那些?

Java运行时没有被Try Catched住从而导致JVM停止运行的异常。

什么是Java的还原符号文件?

在使用Progurad工具进行代码混淆时会可以生成的mapping文件。

为什么要上传Java还原符号文件?

产品发布的安装包一般是经过混淆处理的,这样就会导致上报的异常堆栈中的类名和方法名是一种不可读的方式(例如a.b()),我们需要通过Java还原符号表还原回真实的可读的类名和方法名(例如:MyClass.myMehtod())。

kill -9、exit等会被当成Crash上报吗?

不会。

try catch的异常会被当成Crash上报吗?

不会。

App无响应异常(ANR)能否捕获?

不能。

弹出反馈页面时截图为什么没有显示?

请确认在AndroidManifest.xml文件是否添加了android.permission.WRITE_EXTERNAL_STORAGE权限。

反馈页面截图怎么显示的不是当前的Activity界面?

当应用中使用了TabActivity、GroupActivity等包含多个Activity的集合类时,不要在其OnResume()添加PgyFeedbackShakeManager.register(MainActivity.this, Constants.APPID);在其中的子Activity的OnResume()添加即可。

游戏反馈上传的截图为什么是黑色的?

请在onDrawFrame方法中添加:

PgyFeedbackShakeManager.setGLSurface(true);
GLSurfaceUtils.getInstance().takeScreenShot(gl);

如何自定义更新提示对话框?

PgyUpdateManager.register(MainActivity.this, Constants.APPID,new UpdateManagerListener() {
    @Override
    public void onUpdateAvailable(String result) {
        // 弹出自定义对话框
    }
});

怎么样测试app的更新功能已经正常工作?

app集成sdk后打包上传到蒲公英,然后手机扫二维码安装,当同一个app有新的版本再次上传到蒲公英时,手机上打开以前安装的这个app就会提示有新版本更新。

备注:集成sdk后,修改AndroidManifest.xml的android:versionCode值小于上传到蒲公英上的最新版本的android:versionCode值,就可以立即测试更新功能。

为什么我下载了历史版本,打开应用不会提示更新?

1.有可能你的历史版本没有集成sdk的更新功能。

2.你没有修改versioncode,仅仅依靠自增的buildno来控制版本,这样你是没有办法立马检测到新版本的,因为sdk并无法知道你下载的apk对应的buildno,所以本地只能保存最新的buildno,当你有新的版本再次上传时,sdk就可以根据buildno来对比检测到新版本。

自定义更新安装apk时提示“解析包出错”

public void onUpdateAvailable(final String result) {
         // 调用sdk的默认下载,apk下载地址为result字符串中downloadURL对应的值
         String downloadUrl = "apk下载地址";
         startDownloadTask(MainActivity.this,downloadUrl);
}

请检查apk下载地址是否正确,这里不是apk的单页短链接而是result里面的downloadURL对应的值。