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 studio,构建kotlin时出现奇怪错误:生成错误代码