一:簽名類型
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