`
yelinsen05
  • 浏览: 497871 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android android.uid.shared MK编译或eclipse编译后签名

阅读更多
在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运行在一个进程中,这样可以共享数据,应该会很有用的。
分享到:
评论
4 楼 yelinsen05 2013-11-05  
yong_815 写道
博主你好,签名成功,但是安装不了。正如你所言:试试原始的Android中的key来签名,何谓原始的android key呢?上面提到的从源码里面拷贝出来的platform.pk8和platform.x509.pem 算不算原始的android key?


需要 你运行的sdk或 手机平板的源代码中的签名文件。
3 楼 yong_815 2013-10-22  
博主你好,签名成功,但是安装不了。正如你所言:试试原始的Android中的key来签名,何谓原始的android key呢?上面提到的从源码里面拷贝出来的platform.pk8和platform.x509.pem 算不算原始的android key?
2 楼 cs624178950 2011-11-09  
模拟机能安装?为什么真机不能安装啊?
1 楼 yyg0303 2011-10-09  
你好,请问下面这句话提到的两个文件是不是要装什么软件才能找到?
“首先找到密钥文件,在我的Android源码目录中的位置
      是"build\target\product\security",下面的platform.pk8和platform.x509.pem
      两个文件。”
我把电脑都找了一遍都找不到。

相关推荐

    为apk签android.uid.system名工具包

    在Android系统中,`platform.x509.pem`通常与系统的签名密钥相关联,用于签署系统级的应用或更新,这样它们就可以获得像`android.uid.system`这样的高级权限。这个证书的公钥用于验证APK的签名。 3. **platform.pk8...

    android 添加系统权限 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    或直接把目标系统的签名证书platform.pk8和platform.x509.pem(根据android.mk文件的LOCAL_CERTIFICATE 定义,也可能是shared.pk8、media.pk8等)覆盖到build\target\product\security也可,这样就不需要再手工签名了...

    android.uid.system所需文件

    在Android操作系统中,"android.uid.system"是一个关键的概念,它涉及到系统的权限管理和应用程序的运行环境。这个标签指示了与系统核心服务和权限相关的文件集合。下面将详细解释这个概念及其相关文件的重要性和...

    安卓按键模拟点击相关-Android手机屏幕助手用来替换NavigationBar虚拟导航按键。由于涉及到系统按键消息。所以需要在源码环境下编译需要系统签名需要声明androidsharedUserId=android.uid.system.zip

    Android手机屏幕助手,用来... 所以需要在源码环境下编译,需要系统签名,需要声明android_sharedUserId=_android.uid.system_ .zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    windows环境 Android 签名工具

    3.用于android.uid.system,需要使用Android源码签名文件签名的情况。 4.签名后的apk,即可安装到Android系统。 5.注意,签名文件需要你自己Android源码系统的,我这里不提供。build/target/product/security 就是这...

    Android的apk获得签名.docx

    2. **编译未签名APK**:使用Eclipse或其他IDE编译出未签名的APK文件,例如`ForlinxActivity.apk`。 3. **签名过程**: - 将编译出的APK文件与前面提到的签名文件放置在同一目录下。 - 打开命令行窗口(如Windows下...

    如何反编译android应用以及重编译,签名和对齐优化知识.pdf

    - `shared`:具有`android:sharedUserId=android.uid.shared`的应用。 - `media`:具有`android:sharedUserId=android.uid.media`的应用。 - `platform`:具有`android:sharedUserId=android.uid.system`的应用,...

    Android系统签名文件生成工具

    app获取系统级权限有两种方法,一个是root,另一个是在AndroidManifest中添加android:sharedUserId="android.uid.system",但是Manifest文件中加入sharedUserId后,我们会发现一个问题,就是INSTALL_FAILED_SHARED_...

    android系统签名工具

    通过在每个App中使用sharedUserId设置即可共享系统账户权限,比如android:sharedUserId="android.uid.system" 这样就是用了system这个uid了。给apk增加系统签名,否则一些系统apk将无法安装,使用命令: java -jar ...

    使用Android Studio实现为系统级的app签名

    我们在做系统级的app开发时,往往会在AndroidManifest.xml文件中添加:android:sharedUserId=”android.uid.system”以获取系统级的权限,如果你正在使用Android Studio进行开发,编译生成的apk会因为签名问题无法...

    如何安装系统认证签名过的APK

    系统中所有使用 android.uid.system 作为共享 UID 的 APK ,都会首先在 manifest 节点中增加android:sharedUserId=“android.uid.system”,然后在 Android.mk 中增加 LOCAL_CERTIFICATE := platform。可以参见 S

    android源码上编译APK

    在`AndroidManifest.xml`中,添加`android:sharedUserId="android.uid.system"`,使应用能获取系统权限。注意,在资源引用时,应该使用`@drawable/aa`而非`"aa"`的形式。 创建`Android.mk`文件是构建过程的关键部分...

    android混淆与签名与反编译方法

    在Android开发中,混淆、签名和反编译是三个关键步骤,它们对于应用程序的安全性和发布流程至关重要。 **混淆**的主要目的是保护代码不被轻易逆向工程解析,减少恶意攻击的可能性。在Android中,通常使用ProGuard...

    Android实现锁屏、设置密码、恢复出厂设置示例

    <device-admin xmlns:android="http://schemas.android.com/apk/res/android"> ``` 接下来,你需要创建`MyDeviceAdminReceiver`类,继承自`DeviceAdminReceiver`,并在其中重写必要的方法,如`onEnabled()`...

    android 12.认识Android的UID(Unix user ID)与权限

    在传统计算机上,UID 是跟随着「人」(例如计算机的使用者或用户),而在 Android 里,UID 是跟随着「软件」(例如 Android 应用程序)。每个应用程序都有一个唯一的 UID,这个 UID 决定了应用程序可以访问哪些资源...

    Android系统签名APK

    6. **权限提升**:只有经过系统签名的APK才能获取到`android.system.app`或`android.uid.system`权限,这意味着应用可以运行在系统进程中,享有更高级别的操作权限。但这通常仅适用于系统应用或经过官方认证的更新。...

    浅入浅出Android安全(中文版).pdf

    常见的`sharedUserId`有“android.uid.system”、“android.media”和“android.uid.shared”等。 设置应用权限通常在应用的`AndroidManifest.xml`中进行,例如: ```xml <uses-permission android:name="android....

    Android内核和驱动篇-Android内核介绍.txt

    根据给定文件的信息,我们可以深入探讨Android内核与驱动程序的关键知识点,这将为我们提供一个全面的视角,了解Android操作系统底层技术的复杂性和创新性。 ### Android内核基础 Android内核是基于Linux内核的一...

    APK.xml.dex反编译工具包v1.6.exe

     非常方便汉化工作者对APK或Dex文件的编译操作;  本工具箱集合了,当今最强悍,最犀利的APK反编译工具;  【注意:反编译文件名称 不能用中文,否则无法回编译。】 1.APK+Dex文件反编译及回编译工具V1.2版本...

    Android 源码里面添加一个系统app,最简单的app demo实例

    将编译签名后的APK复制到Android源码的`system/app`或`system/priv-app`目录下,具体取决于你的应用是否需要系统级别的权限。如果你的应用只是普通用户应用,放在`system/app`即可;如果是需要特殊权限的,应放入`...

Global site tag (gtag.js) - Google Analytics