Advertisement

Android添加系统权限时遇到INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
当在Android开发过程中尝试安装应用并遇到了INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误时,这通常表示新安装的应用与已存在的应用之间的用户ID不兼容。本文将详细解析此问题的原因,并提供解决方案。 在使用Eclipse编译APK并尝试安装时遇到INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误的原因是AndroidManifest.xml文件声明了android:sharedUserId=android.uid.system,但没有相应的签名。 解决方法如下: 1. 找到用于构建目标系统的签名证书platform.pk8和platform.x509.pem,在Android源码目录的build\target\product\security下。如果没有这两个证书,则需要自行获取。 2. 将签名校验工具(signapk.jar)、平台公钥(platform.x509.pem)及私钥(platform.pk8),以及编译出来的APK文件都放到同一目录中。 3. 使用以下命令签名: ``` java -jar signapk.jar platform.x509.pem platform.pk8 Demo.apk signedDemo.apk ``` 4. 安装signedDemo.apk即可。 类似地,在Android源码树编译时也会遇到同样的问题,解决方法相似。或者可以直接把目标系统的签名证书platform.pk8和platform.x509.pem(根据android.mk文件的LOCAL_CERTIFICATE定义,也可能是shared.pk8、media.pk8等)覆盖到build\target\product\security目录下,这样就不需要再手工签名了。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • AndroidINSTALL_FAILED_SHARED_USER_INCOMPATIBLE
    优质
    当在Android开发过程中尝试安装应用并遇到了INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误时,这通常表示新安装的应用与已存在的应用之间的用户ID不兼容。本文将详细解析此问题的原因,并提供解决方案。 在使用Eclipse编译APK并尝试安装时遇到INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误的原因是AndroidManifest.xml文件声明了android:sharedUserId=android.uid.system,但没有相应的签名。 解决方法如下: 1. 找到用于构建目标系统的签名证书platform.pk8和platform.x509.pem,在Android源码目录的build\target\product\security下。如果没有这两个证书,则需要自行获取。 2. 将签名校验工具(signapk.jar)、平台公钥(platform.x509.pem)及私钥(platform.pk8),以及编译出来的APK文件都放到同一目录中。 3. 使用以下命令签名: ``` java -jar signapk.jar platform.x509.pem platform.pk8 Demo.apk signedDemo.apk ``` 4. 安装signedDemo.apk即可。 类似地,在Android源码树编译时也会遇到同样的问题,解决方法相似。或者可以直接把目标系统的签名证书platform.pk8和platform.x509.pem(根据android.mk文件的LOCAL_CERTIFICATE定义,也可能是shared.pk8、media.pk8等)覆盖到build\target\product\security目录下,这样就不需要再手工签名了。
  • 处理Python中删除文件问题
    优质
    本文章详细介绍了在使用Python编程语言进行文件操作时,如果遇到由于权限不足导致无法删除文件的问题,应如何解决。文中提供了多种方法和代码示例帮助读者理解并解决问题。 在使用`os.remove()`删除文件的过程中遇到了PermissionError错误,在经过长时间排查后才发现问题是由于试图删除一个尚未关闭的文件导致的。 下面是引发问题的部分代码: ```python with open(front_pic_path, rb) as f: pic_base64 = base64.b64encode(f.read()) # 原始代码中此处未包含f.close() os.remove(front_pic_path) ``` 后来添加了`f.close()`这一行后问题就解决了。 以上就是解决Python删除文件时遇到权限错误的方法,希望能对大家有所帮助。
  • Android入Glide库:Failed to resolve: com.android.support:s...
    优质
    本文介绍了在Android开发过程中集成Glide图片加载库时常见的一个问题:“Failed to resolve: com.android.support”错误,并提供了解决方案。通过检查Gradle配置和确保所有依赖项正确安装,开发者可以顺利解决该难题,使项目正常运行。 本段落主要介绍了在Android开发过程中添加Glide库遇到的错误“Error: Failed to resolve: com.android.support:support-annotations:26.0.2”的解决方法,并通过示例代码进行了详细讲解,对学习或工作有一定参考价值,需要的朋友可以参考一下。
  • 在下载 HomeBrew 404
    优质
    本文将介绍在尝试通过终端命令安装Homebrew时遇到404错误的原因,并提供相应的解决办法。 今天在MacBook上安装软件时,Homebrew出现了404错误:curl: (22) The requested URL returned error: 404 Not Found Error: An exception occurred within a child process: DownloadError: Failed to download resource “ant–bcel”。经过查看发现,Homebrew寻找的该软件版本是6.1.13版,而实际上该软件已经更新到6.1.14版了。因此可能是Homebrew没有及时更新,需要使用以下命令进行更新。
  • SQL Server附数据库代码5123
    优质
    当使用SQL Server并试图附加数据库时遭遇错误代码5123,这通常表示存在与主文件组或数据文件相关的配置问题。此文档旨在提供可能的原因及解决方法。 本段落介绍了几种附加数据库出现错误代码5123的情况及解决方法,遇到相同问题的用户可以参考这些建议。
  • Androidjava.lang.NoClassDefFoundError的解决方法
    优质
    本文详细介绍了在Android开发过程中遇到java.lang.NoClassDefFoundError错误的原因及多种解决方案,帮助开发者快速定位并解决问题。 在Android开发过程中,有时会遇到一个常见的运行时异常——`java.lang.NoClassDefFoundError`。这个错误通常意味着在编译期间能够找到类的定义,但在运行时却无法加载该类。 本段落将深入探讨这个问题,并具体讨论如何解决 `java.lang.NoClassDefFoundError: androidosPersistableBundle` 这个特定错误。`PersistableBundle` 是从 Android 5.0(API Level 21)开始引入的一个新特性,用于替代旧的 `Bundle` 对象,在应用被系统销毁后能够持久保存数据。当在 API Level 21 以下的设备上尝试使用 `PersistableBundle`时,由于这些版本不支持这个类,因此会出现 `NoClassDefFoundError`。 错误触发场景: 1. 当你在代码中使用了包含 `PersistableBundle` 参数的方法(如 `onCreate()` 和 `onSaveInstanceState()`),并且你的应用试图在低于 API Level 21 的设备上运行时,由于这些设备不支持 `PersistableBundle` ,所以会导致崩溃。 错误解决办法: 1. 避免在较低API级别的设备上使用 `PersistableBundle`。你可以通过条件判断或者使用 `Build.VERSION.SDK_INT` 来检查当前设备的 API 级别,并只在 API Level 21 及以上的设备上使用 `PersistableBundle`。 ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 使用 PersistableBundle; } else { 使用传统方式或不使用 PersistableBundle; } ``` 2. 正确地重写 Activity 的生命周期方法。在上述问题中,开发者可能错误地重写了带有两个参数(`Bundle` 和 `PersistableBundle`)的 `onCreate()` 和 `onSaveInstanceState()` 方法。对于 API Level 21 以下的设备,应确保只覆盖带有单个 `Bundle` 参数的方法,以避免引发异常。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } ``` 理解 NoClassDefFoundError: NoClassDefFoundError 通常是由于类路径配置错误、依赖库未正确打包或运行环境缺失导致的。在 Android 中,这可能是由于未正确处理依赖库的版本兼容性,或者在构建过程中未包含某些库的 AAR 或 JAR 文件。因此,确保在 Gradle 构建文件中正确声明和管理依赖项,并且在打包应用时包含所有必要的资源和库,是避免这类错误的关键。 总结: `java.lang.NoClassDefFoundError` 在 Android 开发中是一个常见的问题,尤其是在处理版本兼容性时。正确地处理 API 级别的差异、确保在低版本设备上不使用高版本特有的类以及正确地重写生命周期方法都是避免这种错误的有效策略。同时,保持对项目依赖的清晰管理,使用条件编译和运行时检查也能帮助我们构建更加健壮和兼容的应用程序。
  • 解决Windows或删除组件的特定Ox7e的方法
    优质
    本文章将详细介绍在使用Windows操作系统过程中遇到“Ox7e”错误时的具体解决方案。当用户尝试添加或删除系统组件时,此问题较为常见。我们将提供一系列逐步指导帮助用户快速解决问题。 在使用添加或删除Windows组件功能时,经常遇到提示“无法加载安装程序iis2.dll, 或是找不到函数 OcEntry. 请与你的系统管理员联系。”点击确定后会出现“无法初始化应用程序”的错误信息。特定的错误代码为0x7e。
  • 在用Python安装openpyxl
    优质
    本文介绍了作者使用Python安装openpyxl库过程中遇到的问题,并分享了解决方法和心得。适合编程爱好者参考学习。 你的Python代码显示你并未导入openpyxl库,但实际上你是已经导入了。这里解释了为什么会出现无法引用已导入文件的情况。
  • Navicat连接MySQL 8.0.112059
    优质
    本文介绍了在使用Navicat连接MySQL 8.0.11版本数据库时可能出现的2059错误,并提供了解决该问题的方法和建议。 在使用Navicat Premium连接MySQL时遇到错误的原因是:mysql8之前的版本加密规则为`mysql_native_password`,而在mysql8之后的版本加密规则变为`caching_sha2_password`。 解决方法如下: 1. 登录MySQL: ``` mysql -uroot -ppassword ``` 2. 选择数据库 `mysql` ```sql use mysql; ``` 3. 根据需要,如果要允许远程连接,请将localhost替换为% 4. 更改用户root@localhost的加密方式(如果不需要远程访问则保留localhost) ``` ALTER USER root@localhost IDENTIFIED BY password PASSWORD EXPIRE NEVER; ```
  • 在Linux中使用Kettlelibwebkitgtk-1.0-0
    优质
    当在Linux环境下使用Kettle(也称为Pentaho Data Integration, PDI)进行数据集成任务时,可能会遭遇因缺少“libwebkitgtk-1.0-0”库而导致的运行问题。此简介针对遇到此类障碍的技术人员或开发人员,提供可能的解决方案和安装指导,帮助他们顺利解决该依赖性错误,确保Kettle软件正常运作。 我买了一份教程,花了50积分的rpm依赖文件,结果安装不上,一直显示需要timezone设置。后来又重新下载了一个libwebkit才装上。