Android開發中很重要的一部就是用自己的密鑰給Apk文件簽名,不經過簽名的Apk文件一般是無法安裝的,就算裝了最後也是失敗。
Apk查找簽名
網上流傳的「勾選允許安裝未知來源的應用」其實跟簽不簽名沒啥關係,說白了就是允許安裝不從電子市場上下載的應用而已。
近幾日需要修改一個Apk中JNI調用的.so文件,苦於沒有apk源代碼,只好研究了一下簽名相關的問題。當然有很多第三方工具可以做到,但其實JDK中已經提供了強大的簽名工具jarsigner。
去除簽名
其實很簡單,用WinRAR打開apk,找到META-INF文件夾,刪除MANIFEST.MF之外的所有其他文件即可。
簽名
運行jarsigner,如果沒有設置PATH環境變數,那可以從JDK安裝路徑下的bin目錄中找到,比如我本機的就是C:\ProgramFiles\Java\jdk1.8.0_31\bin\jarsigner.exe
Apk查找簽名代碼
jarsigner用法如下:
用法:jarsigner[選項]jar-file別名
jarsigner-verify[選項]jar-file[別名...]
[-keystore<url>]密鑰庫位置
[-storepass<口令>]用於密鑰庫完整性的口令
[-storetype<類型>]密鑰庫類型
[-keypass<口令>]私有密鑰的口令(如果不同)
[-certchain<文件>]替代證書鏈文件的名稱
[-sigfile<文件>].SF/.DSA文件的名稱
[-signedjar<文件>]已簽名的JAR文件的名稱
[-digestalg<演算法>]摘要演算法的名稱
[-sigalg<演算法>]簽名演算法的名稱
[-verify]驗證已簽名的JAR文件
[-verbose[:suboptions]]簽名/驗證時輸出詳細信息。
子選項可以是all,grouped或summary
[-certs]輸出詳細信息和驗證時顯示證書
[-tsa<url>]時間戳頒發機構的位置
總之,Apk查找簽名給大家簡單的介紹了一些,希望大家多看看。