Android:清单中的奇怪错误

Posted

技术标签:

【中文标题】Android:清单中的奇怪错误【英文标题】:Android: strange error in Manifest 【发布时间】:2012-11-23 14:47:50 【问题描述】:

我正在修改我的 android 应用程序,我正在真实设备上尝试它(在 Eclipse 中运行应用程序),一切正常。因此,当我对我的更改感到满意时,我打开了 Manifest 以修改版本以发布它,但在 Manifest 中没有任何更改的情况下,在以下行发生了错误:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

错误是:

Permission is only granted to system apps

这怎么可能?我多次使用这条线构建了我的应用程序。

【问题讨论】:

【参考方案1】:

谢谢大家。我用

解决了这个奇怪的问题
 Project > Clean

现在一切都恢复正常了!

【讨论】:

不要赞成这个答案 - 它与实际问题无关,即 此权限不适用于第三方应用程序。开发人员在安全设备上所做的任何事情都无法改变这一事实。 这确实回答了如何让它再次编译的问题。 AFAIK INSTALL_PACKAGES 是一个signatureOrSystem 权限,因此只要将您的应用程序添加到设备ROMed 的系统映像应该可以工作,那么使用相同密钥签名的后续版本在安装为更新时也应该获得权限。【参考方案2】:

您可能不会自己安装软件包,甚至不要问这个问题。

为此使用Intent

Intent installIntent = new Intent(Intent.ACTION_VIEW );
installIntent.setDataAndType(
    Uri.parse("file://" + context.getFilesDir().getAbsolutePath() + "/" + file_name_to_install),
    "application/vnd.android.package-archive");
startActivity(installIntent);

如果您使用的是 Eclipse,很可能它使用了旧版本/过时版本的 Manifest,当您打开它时,更改会重新加载并显示错误消息。只需删除违规权限并使用 Intents。

【讨论】:

我需要从我的应用安装新的 apk。我用这个方法几个月了,没有遇到任何问题。但是今天清单显示我的这个错误,没有任何改变! android.permission.INSTALL_PACKAGES 表示您的应用可以安装其他应用,但由于此权限只能授予系统应用,因此您的应用不适用。以下是更多信息:***.com/questions/3476600/… @Joseph82 您可能使用过早期版本的 SDK,但当前版本认为 INSTALL_PACKAGE 权限是危险的并添加到“系统或签名”类中。这意味着用户应用程序不能使用此权限,除非应用程序安装在 /system/app 或使用制造商证书签名 这个权限永远不可用 - 如果它出现在早期版本的清单中,它只是被忽略了。关键的事实是,它从未对 3rd 方应用程序有效,并且不需要使用 Intent 启动安装过程。【参考方案3】:

如果您已经更改了您的 lint 首选项,则清洁将起作用。否则请检查以下解决方案。

Permission is only granted to system app

它说要更改您的 Lint 设置

在 Eclipse 中:

窗口 -> 首选项 -> Android -> Lint 错误检查。

在列表中找到带有ID = ProtectedPermission 的条目。将 Severity 设置为低于 Error 的值。这样您仍然可以使用 Eclipse 编译项目。

在 Android Studio 中:

File -> Settings -> Inspections

Android Lint 下,找到Using system app permission。取消选中复选框或选择低于错误的严重性。

【讨论】:

以上是关于Android:清单中的奇怪错误的主要内容,如果未能解决你的问题,请参考以下文章

android studio中的奇怪错误,网上没有类似的东西,也不知道原因

Android调试奇怪的错误

奇怪的gradle错误android studio

Android studio,构建kotlin时出现奇怪错误:生成错误代码

React Native 运行 - Android 产生奇怪的错误

FliCard 和 ListView Android 中一个奇怪的可见性错误