http://blog.chinaunix.net/space.php?uid=20665441&do=blog&id=305500
主要講的是應用程序數字簽名
接下來,系統會提示你輸入apk文件的保存地址。這樣我們就編譯生成了發佈版的未簽名的apk文件. eg.sdialer.apk
2 完成了發佈版的編譯,接下來是獲取私鑰,會用到JDK下的兩種工具:keytool和jarsigner. keytool是生成私鑰的工具。
keytool命令的解釋:
-genkey 產生一個密鑰對(公鑰和私鑰)
-v 開啓詳細輸出
-keystore<keystore-name>.keystore 包含私鑰的keystore名稱
-storepass<password> keystore的密碼。安全起見,通常建議不要在命令行輸入這個選項,如果你不提供這個選項,
keytool就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
-alias<alias_name> 密鑰的別名
-keyalg<alg> 產生密鑰的加密算法,可以採用DSA和RSA中的一種
-dname 用於描述密鑰的產生者。這個值將作爲自簽名證書中的發佈者。如果你此時沒有輸入,那麼在執行簽名時,
jarsigner會提示你輸入 dname(distinguished name)
-validity 密鑰的有效期,這裏以天來計算。我們通常建議大於10000天
-keypass<password> 密鑰的密碼,安全起見,通常建議不要在命令行輸入這個選項,如果你不提供這個選項,
keytool就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
jarsigner命令解釋:
-keystore 包含私鑰的keystore
<keystore-name>.keystore
-verbose 開啓詳細輸出
-storepass<password> keystore的密碼,安全起見,通常建議不要在命令行輸入這個選項,
如果你不提供這個選項,jarsigner就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
-keypass<password> 密鑰的密碼,安全起見,通常建議不要在命令行輸入這個選項,如果你不提供這個選項,
jarsigner就會提示你輸入密碼,這樣你的密碼就不會保存在shell歷史中。
eg.
keytool -genkey -v -keystore s-dialer.keystore -alias sdialer_name -keyalg RSA -validity 10000
輸出一個s-dialer.keystore,密鑰別名爲sdialer_name。有了密鑰,我們就可以用它來進行簽名。
簽名工具是jarsigner.
eg. jarsigner -verbose -keystore s-dialer.keystore sdialer.apk sdialer_name
這樣,就爲應用程序sdialer.apk完成了簽名
應用程序的版本
Android應用程序主要通過androidmanifest.xml中的android:versionCode和android:versionName來實現版本管理的