Android APP签名和用户UID

来源:互联网 发布:修改linux运行级别 编辑:程序博客网 时间:2024/04/29 20:22

Android APP签名除了能够声明发布者的身份,另外还有一下两个作用

1.使用一些特殊的key签名,可以获取到不同的资源

testkey -- a generic key for packages that do not otherwise specify a key.
platform -- a test key for packages that are part of the core platform.
shared -- a test key for things that are shared in the home/contacts process.
media -- a test key for packages that are part of the media/download system.

android 的为我们提供了这4种key的测试key,他们位于android\build\target\product\security

我们已系统的platform 为例

在security目录下

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

该命令会生成platform.pem文件

openssl pkcs12 -export -in  platform.x509.pem -out platform.p12 -inkey  platform.pem -password pass:android -name androiddebugkey

该命令生成一个数据证书platform.p12

keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepassandroid

该命令生成我们需要的keystore文件

2.APP签名后,如果其他发布者使用相同名称的发布包由于签名不一样,该APK是无法覆盖你的APP的

下面介绍用android stdio为APP生成keystore

在开发工具上直接将APP安装到设备上是,开发工具会为APP签入一个DebugKey,但是当我们要正式发布一个APP时,必须要为该APP签入合适的签名,该签名主要用于声明作者身份,表明该APP是可信任的。

系统不会安装一个未签名的APP,签名证书不需要授权,APP开发者普遍都使用自己的证书签名,如开发者可以使用Android Stdio为自己的APP签名:

1.step 1


2.step 2


这里需要使用java SDK中的keytool命令

keytool -genkey -alias wiwide -keypass wiwide2016 -keyalg RSA -keysize 1024 -validity 365 -keystore c:\key\jimmy.keystore -storepass 123456 -dname CN=wiwide

在对话框中输入生成的keystore文件所在的目录,以及别名和秘钥




UID

今天编译调试一个APP的时候发现andio Stduio报SHARED_USER_INCOMPATIBLE的错误


研究了一下发现在AndroidManifest.xml中,将sharedUserId声明成了system的,临时把这个关掉就能调试了

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.wiwide.jiang.wiplussettings"    android:sharedUserId="android.uid.system">

扩展了解一下sharedUserI

Android的每一个APP都会分配到一个自己的UID,前面说了android提供了四种key类型

在使用system类型的key时,还需要在android.mk中定义LOCAL_CERTIFICATE := platform这句表示该APP使用目标系统中的platform key就是上面提到的security目录中的platform.pk8和platform.x509.pem两个文件来签名,不过这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用。如果需要在第三方的系统中使用,需要有第三方的KEY





0 0
原创粉丝点击