Android项目的打包签名及应用的版本升级(二)
手机中的app应用版本升级时出现的问题:
将高版本的应用程序打包完在手机上安装时出现“已安装了存在签名冲突的同名数据包”警告提示。
分析之后找到原因是:
是因为在android手机上已经安装过一个低版本的应用,安装高版本应用时,旧版应用的签名与新版应用的签名信息不一致才导致出现此错误。
解决方法:
1.把旧的版本卸载掉,然后安装新版本。(但此方法不适用于在测试应用的更新提示功能时使用,因为它只能保证将高版本的应用能够安装在手机上,而不会出现更新的提醒)
2.用与低版本打包时的同一个证书重新打包,就可以正常安装,且会出现更新提示。
因此注意一下Android应用版本升级的条件:
包名一致(android系统才会识别为同一应用)且签名一致,系统检测到高版本的应用时才会正常更新。
ps:自动更新功能的代码
Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/railway.apk"));
// 创建Intent意图
Intent intent = newIntent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 启动新的activity
// 设置Uri和类型
intent.setDataAndType(uri,"application/vnd.android.package-archive");
// 执行安装
context.startActivity(intent);
((Activity) context).overridePendingTransition(R.anim.roll_left2,android.R.anim.fade_out );
System.exit(0);