一:签名类型
1、testkey:普通APK,默认情况下使用。
2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。
3、shared:该APK需要和home/contacts进程共享数据。
4、media:该APK是media/download系统中的一环。
二、生成签名文件
进入$(android_src)/development/tools目录;
在网上查找编译签名文件的命令是:
sh make_key mysignkey ‘/C=CN/ST=Beijing/L=Xicheng/O=Company/OU=Department/CN=YourName/emailAddress=YourE-mailAddress’
按照这个命令编译出的文件放到系统 里面编译会报错;没有输入密码也会报这种错误Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): java.lang.NullPointerException
1.Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): java.lang.NullPointerException
2. at com.android.signapk.SignApk.decryptPrivateKey(SignApk.java:142)
3. at com.android.signapk.SignApk.readPrivateKey(SignApk.java:166)
4. at com.android.signapk.SignApk.main(SignApk.java:531)
5.Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): make: *** [out/target/product/gotechcn/obj/APPS/CalendarProvider_intermediates/package.apk] 错误 1
6.make: *** 正在等待未完成的任务....
7.Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): java.lang.NullPointerException
8. at com.android.signapk.SignApk.decryptPrivateKey(SignApk.java:142)
9. at com.android.signapk.SignApk.readPrivateKey(SignApk.java:166)
10. at com.android.signapk.SignApk.main(SignApk.java:531)
11.make: *** [out/target/product/gotechcn/obj/APPS/Calculator_intermediates/package.apk] 错误 1
12.Warning: AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.
13.Warning: AndroidManifest.xml already defines targetSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.
14. 'out/target/common/obj/APPS/Calendar_intermediates/classes.dex' as 'classes.dex'...
15.Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): java.lang.NullPointerException
16. at com.android.signapk.SignApk.decryptPrivateKey(SignApk.java:142)
17. at com.android.signapk.SignApk.readPrivateKey(SignApk.java:166)
18. at com.android.signapk.SignApk.main(SignApk.java:531)
19.make: *** [out/target/product/gotechcn/obj/APPS/Calendar_intermediates/package.apk] 错误 1
20.^Cmake: *** [out/target/product/gotechcn/obj/APPS/BasicDreams_intermediates/package.apk] 错误 130
后面用 ./执行命令后,就ok了,是sh和./ 执行编译文件的区别吧!
./make_key mysignkey ‘/C=CN/ST=Beijing/L=Xicheng/O=Company/OU=Department/CN=YourName/emailAddress=YourE-mailAddress’
编译出的签名文件放到 build/target/product/security/ 目录下重新编译固件。这样编译出的整个系统用的就是新的签名。
还有一种签名方式可以参考
https://blog.csdn.net/winceos/article/details/18089969
https://www.cnblogs.com/leaven/p/3860583.html