返回
如何修复 Android 5.0 及更高版本上的 INSTALL_FAILED_DUPLICATE_PERMISSION 错误?
Android
2024-03-09 00:31:47
修复 Android 5.0 及更高版本上的 INSTALL_FAILED_DUPLICATE_PERMISSION 错误
问题概述
当尝试在 Android 5.0 及更高版本上安装包含 com.myapp.permission.C2D_MESSAGE
权限的应用程序时,可能会遇到 INSTALL_FAILED_DUPLICATE_PERMISSION
错误。
原因分析
从 Android 5.0 开始,Google 更改了处理应用程序权限的方式。每个权限只能请求一次,不能重复请求。因此,清单文件中多次指定相同权限会导致此错误。
解决方案
步骤 1:更新清单文件
- 打开清单文件(
AndroidManifest.xml
) - 移除重复指定
com.myapp.permission.C2D_MESSAGE
权限的行
步骤 2:清理项目
- 在 Eclipse 中,转到“项目”>“清理”
步骤 3:重新构建并安装
- 重新构建应用程序并尝试再次安装
修改后的清单文件示例
<!-- GCM -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- This app has permission to register and receive data message. -->
<!-- Creates a custom permission so only this app can receive its messages. NOTE: APP_PACKAGE.permission.C2D_MESSAGE -->
<permission android:name="com.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<!-- END GCM -->
其他注意事项
- 确保应用程序针对 Android 5.0 或更高版本编译
- 可使用
tools:node="remove"
注释掉重复权限 - 避免在清单文件中重复指定权限
常见问题解答
-
我收到错误,即使我已移除重复权限。
- 尝试清理项目并重新构建。
-
我看到一个不同的错误,如 INSTALL_FAILED_NO_MATCHING_ABIS。
- 确保 APK 与目标设备的 ABI 兼容。
-
如何针对 Android 5.0 编译应用程序?
- 在项目的 Gradle 文件中,将
targetSdkVersion
设置为 21 或更高版本。
- 在项目的 Gradle 文件中,将
-
为什么 Google 更改了权限处理方式?
- 提高安全性并减少潜在错误。
-
我可以为我的应用程序请求多个权限吗?
- 是的,但每个权限只能请求一次。