在windows平台通过eclipse编译android源码中,如果编译Settings或者android manifest XML中 shared user id 包含android.uid.shared等系统权限的时候,则会报以下错误。
Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE
Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
INSTALL_FAILED_UPDATE_INCOMPATIBLE
1、由于卸载没有完全,可以使用设置中卸载相应应用,或者adb uninstall com.android.***
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
主要是由于使用了android.uid.shared导致的问题。
解决方案如下
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
1. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
2. 使用mm命令来编译,生成的apk就可以在模拟器中运行了。
第二个方法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:
1. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
2. 查看Android.mk文件,加入LOCAL_CERTIFICATE := 这一行,根据这行的内容,选择相应的签名。
platform----->platform.pk8和platform.x509.pem
shared ----->shared.pk8和shared.x509.pem
3. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,
首先找到密钥文件,在我的Android源码目录中的位置
是"build\target\product\security",下面的platform.pk8和platform.x509.pem
两个文件。
然后用Android提供的Signapk工具来签名,signapk的源代码是
在"build\tools\signapk"下,
用法为"java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk",
文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。
4.其他的APPS应用也是按照该方法可以正常运行,
不过这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到platform.pk8和 platform.x509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示"Package ... has no signatures that match those in shared user android.uid.system",这样也是保护了系统的安全。
最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。
分享到:
相关推荐
在Android系统中,`platform.x509.pem`通常与系统的签名密钥相关联,用于签署系统级的应用或更新,这样它们就可以获得像`android.uid.system`这样的高级权限。这个证书的公钥用于验证APK的签名。 3. **platform.pk8...
或直接把目标系统的签名证书platform.pk8和platform.x509.pem(根据android.mk文件的LOCAL_CERTIFICATE 定义,也可能是shared.pk8、media.pk8等)覆盖到build\target\product\security也可,这样就不需要再手工签名了...
在Android操作系统中,"android.uid.system"是一个关键的概念,它涉及到系统的权限管理和应用程序的运行环境。这个标签指示了与系统核心服务和权限相关的文件集合。下面将详细解释这个概念及其相关文件的重要性和...
Android手机屏幕助手,用来... 所以需要在源码环境下编译,需要系统签名,需要声明android_sharedUserId=_android.uid.system_ .zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
3.用于android.uid.system,需要使用Android源码签名文件签名的情况。 4.签名后的apk,即可安装到Android系统。 5.注意,签名文件需要你自己Android源码系统的,我这里不提供。build/target/product/security 就是这...
2. **编译未签名APK**:使用Eclipse或其他IDE编译出未签名的APK文件,例如`ForlinxActivity.apk`。 3. **签名过程**: - 将编译出的APK文件与前面提到的签名文件放置在同一目录下。 - 打开命令行窗口(如Windows下...
- `shared`:具有`android:sharedUserId=android.uid.shared`的应用。 - `media`:具有`android:sharedUserId=android.uid.media`的应用。 - `platform`:具有`android:sharedUserId=android.uid.system`的应用,...
app获取系统级权限有两种方法,一个是root,另一个是在AndroidManifest中添加android:sharedUserId="android.uid.system",但是Manifest文件中加入sharedUserId后,我们会发现一个问题,就是INSTALL_FAILED_SHARED_...
通过在每个App中使用sharedUserId设置即可共享系统账户权限,比如android:sharedUserId="android.uid.system" 这样就是用了system这个uid了。给apk增加系统签名,否则一些系统apk将无法安装,使用命令: java -jar ...
我们在做系统级的app开发时,往往会在AndroidManifest.xml文件中添加:android:sharedUserId=”android.uid.system”以获取系统级的权限,如果你正在使用Android Studio进行开发,编译生成的apk会因为签名问题无法...
系统中所有使用 android.uid.system 作为共享 UID 的 APK ,都会首先在 manifest 节点中增加android:sharedUserId=“android.uid.system”,然后在 Android.mk 中增加 LOCAL_CERTIFICATE := platform。可以参见 S
在`AndroidManifest.xml`中,添加`android:sharedUserId="android.uid.system"`,使应用能获取系统权限。注意,在资源引用时,应该使用`@drawable/aa`而非`"aa"`的形式。 创建`Android.mk`文件是构建过程的关键部分...
在Android开发中,混淆、签名和反编译是三个关键步骤,它们对于应用程序的安全性和发布流程至关重要。 **混淆**的主要目的是保护代码不被轻易逆向工程解析,减少恶意攻击的可能性。在Android中,通常使用ProGuard...
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> ``` 接下来,你需要创建`MyDeviceAdminReceiver`类,继承自`DeviceAdminReceiver`,并在其中重写必要的方法,如`onEnabled()`...
在传统计算机上,UID 是跟随着「人」(例如计算机的使用者或用户),而在 Android 里,UID 是跟随着「软件」(例如 Android 应用程序)。每个应用程序都有一个唯一的 UID,这个 UID 决定了应用程序可以访问哪些资源...
6. **权限提升**:只有经过系统签名的APK才能获取到`android.system.app`或`android.uid.system`权限,这意味着应用可以运行在系统进程中,享有更高级别的操作权限。但这通常仅适用于系统应用或经过官方认证的更新。...
常见的`sharedUserId`有“android.uid.system”、“android.media”和“android.uid.shared”等。 设置应用权限通常在应用的`AndroidManifest.xml`中进行,例如: ```xml <uses-permission android:name="android....
根据给定文件的信息,我们可以深入探讨Android内核与驱动程序的关键知识点,这将为我们提供一个全面的视角,了解Android操作系统底层技术的复杂性和创新性。 ### Android内核基础 Android内核是基于Linux内核的一...
非常方便汉化工作者对APK或Dex文件的编译操作; 本工具箱集合了,当今最强悍,最犀利的APK反编译工具; 【注意:反编译文件名称 不能用中文,否则无法回编译。】 1.APK+Dex文件反编译及回编译工具V1.2版本...
将编译签名后的APK复制到Android源码的`system/app`或`system/priv-app`目录下,具体取决于你的应用是否需要系统级别的权限。如果你的应用只是普通用户应用,放在`system/app`即可;如果是需要特殊权限的,应放入`...