日常bug收集之App升级问题

app升级时报 解析包时出现问题

一般关于app升级的问题都比较棘手,也不是问题麻烦,麻烦的是,更改不了上一个包的代码。

  • 解析包时出现问题

    出现这种情况,有几种可能:
    1、下载下来安装的包本身就有问题,直接重新换包更新不多说
    2、Android手机系统太低了,不支持软件支持的最低版本,解决方法,换手机哈哈。
    3、360加固的问题


Intent intent = new Intent(Intent.ACTION_VIEW);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
    } else {
        //通过provider生成Uri
        Uri uri = UpdateFileProvider.getUriForFile(context, context.getPackageName() + ".updatefileprovider", file);
        //赋予临时权限给Uri
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
    }
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
    if (force) {
        System.exit(0);
    }

如果你的安装代码里面像这样,那么直接用没加固过的包更新没有任何问题,但是如果你用360加固过的包来进行升级的话,就会出现解析包时出现问题这个异常,原因是什么呢?
原因是: 360加固会导致代码执行顺序发生变化,强制更新安装的时候System.exit(0);会先执行导致出错
解决办法:

  • 新增Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION权限,全的作用自己去查api吧
  • 对杀死进程的代码做延时处理if (force) { new Handler().postDelayed(new Runnable() { @Override public void run() { System.exit(0); } }, 500); }
    为了安全起见,我两种方式都加了,这样就解决下一个版本强制升级的时候再出现 解析包时出现问题 这个问题了。但是这个版本似乎没有救了,唯一的挽回方式就是改成不强制升级。
    参考链接https://bbs.360.cn/thread-15488054-1-1.html

你可能感兴趣的:(日常bug收集之App升级问题)