【发布时间】:2018-01-18 13:16:18
【问题描述】:
我想要 .apk 文件,这是我的应用程序上的新版本。安装在安卓设备上进行升级;
但我收到“解析错误”或“未安装应用程序”
如果我手动尝试安装 .apk 文件删除旧版本应用程序。 ,它有效 如果我在调试旧版本应用程序后手动尝试安装 .apk 文件,它不起作用
我在我的代码上测试了另一个不同的 .apk 文件,它可以安装,所以我不考虑这个,但你可以检查一下;
File fileTest = new File(Environment.getExternalStorageDirectory() + "/download/appName.apk");
if (fileTest != null && fileTest.exists() == true){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/appName.apk")), "application/vnd.android.package-archive");
startActivity(intent);
这个问题可能是签名不同或Sdk版本不同。 我测试的签名与我的代码应用程序和 .apk 文件不同;
Signature sig = updateContext.getPackageManager().
getPackageInfo(updateManager.updateContext.getPackageName(),
PackageManager.GET_SIGNATURES).signatures[0];
Signature releaseSig = updateManager.updateContext.getPackageManager().
getPackageArchiveInfo(path2, PackageManager.GET_SIGNATURES).signatures[0];
String path2 =Environment.getExternalStorageDirectory() +
"/download/appName.apk";
if (sig.hashCode() != releaseSig.hashCode()) //false
那你怎么看?
【问题讨论】:
-
我不知道SDK,但要替换的应用程序的签名必须相同。我已经在使用不同计算机上构建的调试应用程序时遇到过这个问题(生成的签名不同)
-
转到设置卸载两个应用程序(或)两个用户应用程序,在某些手机有两个或多个用户帐户也删除这些应用程序,并通过调试模式安装应用程序。
标签: android signature android-install-apk