写这篇博文之前,我看到两篇比较好的文章,里面简单详细地阐述了为什么要对android进行签名,android系统是如何进行签名的,以及签名时需要用到的几个文件来自哪?在这里将链接提供给大家。
Android中如何修改系统时间(应用程序获得系统权限)
1. android:sharedUserId 它的作用是什么?
拥有相同user id的多个apk可以配置成运行在同一个进程中。如果把程序的UID配置成“android.uid.system”, 意味着该程序运行在系统进程中,这样就有权限来修改系统时间(就可以使用系统的某些权限了)
2. 配置了android:sharedUserId,程序就可以运行在系统进程中了吗?
答案是否定的,这时候apk根本不能被安装,log信息会提示“签名不符”,原因是程序要想运行在目标系统进程中还要有目标系统的“
platform.pk8”
和“
platform.x509.pem”
两个文件, 也就是说如果我们的apk要想安装到SamSung上,那么我们就必须拥有SamSung源码目录中的“
platform.pk8”
和“
platform.x509.pem”,用这两个文件签名后的apk才真正可以放入系统进程中。
3.
“
platform.pk8”
和“
platform.x509.pem”位于系统源码目录中的什么位置呢?
它们位于
"build\target\product\security" 目录下。
4. 在对apk文件进行签名之前,我们需要做哪些准备工作?
三个必须的文件:
a. 目标系统的“
platform.pk8”
和“
platform.x509.pem”两个文件。将这两个文件复制到F:/sign目录
b.
签名工具signapk.jar , 该文件位于android系统源代码out编译目录下。 同样将这个文件复制到F:/sign 目录下
我们的应用程序要做的配置:
c.
我们需要
用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。
d.
在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
5. 好了,进行最后一步,对apk文件进行正式签名。
命令如下:
a. 进入F:sign目录
b. 输入命令:
java -jar signapk.jar platform.x509.pem platform.pk8 test.apk testnew.apk
总结一句话:要想让我们的程序运行在系统进程中,有2步是必须要做的
首先:
在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性
其次: 对应用程序进行签名,签名所需文件必须要用“
目标系统”
编译后的文件
发布时 | 开发时 |
LG | Debug Eclipse |
Manufacture(厂商) | Google public key |