1. 程式人生 > >Linux 下apk檔案實現簽名

Linux 下apk檔案實現簽名

簽名的意義
  為了保證每個應用程式開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程式,我們需要對我們釋出的APK檔案進行唯一簽名,保證我們每次釋出的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。


apk檔案簽名主要分為三個步驟,證書的建立-->簽名生成-->優化(可選)

前提是已經安裝jdk並且已經新增到環境變數中。

證書的建立

keytool -genkey -v alias KeyName -keyalg RSA -keysize 2048 -validity 10000 -keystore KeyFileName.keystore

這行命令中一些重要的引數值說明如下:

KeyName:表示證書的別名

KeyFileName.keystore: 證書儲存的檔名

10000: 表示證書的有效期,單位(天)

RSA:證書的加密型別,一般預設為RSA

其次在建立的過程中要填寫一些基本的資訊,證書密碼等相關的資訊。

證書生成後的檢視

keytool -list -alias KeyName -keystore KeyFileName.keystore

對APK進行簽名
jarsigner -verbose -keystore KeyFileName.keystore sign_apk_file.apk KeyName
引數解釋:

KeyFileName.keystore 已經生成號的證書

sign_apk_file.apk 需要簽名的apk檔案

KeyName 證書的別名

待簽名的apk檔案根根目錄下如果有資料夾“META-INFO”,請先刪除(重新簽名就需要這樣做)。 如果不想建立過程輸出太多資訊,可以刪除“-verbose” 。 上述簽名會直接覆蓋原來的檔案,如果不想被覆蓋而簽名為另外的新檔案 signed.akp, 只需將 signed.apk 改為
 -signedjar signed.apk sign_old.akp 
即可。 簽名後可以使用如下命令驗證是否簽名成功:
> jarsigner -verify signed.apk 
如果需要檢視更詳細的驗證資訊,可修改為:
> jarsigner -certs -verbose -verify signed.apk 

使用android sdk的zipalign工具優化已簽名的apk檔案
> zipalign -v 4 unaligned.apk aligned.apk 

注意要在簽名後再zipalign。這個工具不是jdk自帶的,而是在%ANDROID_HOME%\tools\zipalign。

相關推薦

Linux apk檔案實現簽名

簽名的意義   為了保證每個應用程式開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程式,我們需要對我們釋出的APK檔案進行唯一簽名,保證我們每次釋出的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。 apk檔案簽名主要

Linux用UDP實現檔案傳輸

UDP程式設計框圖                                           UDP協議中伺服器和客戶端的互動存在於資料的收發過程中。         進行網路資料收發的時候,伺服器和客戶端的資料是對應的:客戶端傳送資料的動作,對伺服器來說是接

LinuxShell指令碼實現批量重新命名資料夾,批量重新命名檔案(讓原本繁重的工作變得簡單)

最近接了個專案,具體做什麼都不說了,其中有個工作就是批量更改資料夾,然後批量更改資料夾下的檔名字,一會兒先貼程式碼,再詳細解釋步驟。 下面是我的簡化版的目錄結構,實際上有上百個。 project dir1 dir1.py dir2

Linux系統呼叫實現檔案操作

系統呼叫(系統呼叫是作業系統提供給使用者程式的一組“特殊”函式介面,使用者通過這組介面獲得作業系統提供的服務)中操作I/O的函式,都是針對檔案描述符的。 通過檔案描述符可以直接對相應檔案進行操作,如:open、close、write、read、ioctl #define STDIN_FIL

linux檔案的拓展,由lseek實現

程式碼如下:  1 #include<stdio.h>   2 #include<unistd.h>   3 #include<sys/types.h>   4 #include<sys/stat.h>   5 #includ

Mac系統apk檔案重新簽名

1. 下載apkTool工具,按照官方提示放到相應的位置並配置; 2. 使用命令 “sudo apktool d your.apk”,得到一個資料夾your;  3. 使用命令 “sudo apktool b your”,進入your資料夾中的dist,看到一個apk,這個

【轉】Linux配置檔案讀取操作流程及其C程式碼實現

轉自:http://blog.csdn.net/zhouzhaoxiong1227/article/details/45563263#comments 一、概述 Linux具有免費、可靠、安全、穩定、多平臺等特點,因此深受廣大程式設計師的歡迎。 為了體現軟體產品的靈活性,可新增配置檔案存放某些重要的

linux檔案io程式設計實現檔案的拷貝

/* copy_file.c */ #include <unistd.h> #include <sys/types.h> #include <sys/stat.h>

linuxrsync+inotify實現兩臺伺服器檔案實時同步

假設兩個伺服器: 192.168.0.1 源伺服器  有目錄 /opt/test/ 192.168.0.2 目標伺服器  有目錄 /opt/bak/test/ 實現的目的就是保持這兩個伺服器某個檔案目錄保持實時同步 實現方式: 通過rsync+inotify-too

VMware實現XP和Linux檔案共享【轉】

利用vmmare tools來實現XP和Linux檔案共享的具體操作步驟: 需要有linux.iso檔案,ed2k://|file|ws602_vmware_tools_linux.rar|108234461|0E66D3A0645D0F9447518843440A695

Linuxnfs+rpcbind實現伺服器之間的檔案共享

目前,越來越多的專案不再是單機,而是趨向於分散式部署,所以在分散式部署就需要檔案共享,例如A伺服器上傳的圖片,希望在B伺服器上也可以訪問。因此就需要跨機器共享檔案,在這裡就簡單的採用nfs+rpcbi

Linux用rsync實現檔案同步

rsync是linux下的一款快速增量備份工具Remote Sync,是一款實現遠端同步功能的軟體(資料映象備份軟體),它在同步檔案的同時,可以保持原來檔案的許可權、時間、軟硬連結等附加資訊。它不像FTP那樣需要全備份,rsync可以根據資料的變化進行差異備份,從而減少資

Linux使用inotify實現檔案監控

1、需求 工程中需要對某個資料夾下的檔案進行監控,檔案、目錄發生變化後需要進行處理; 普通的方法是通過迴圈不停遍歷資料夾,但檔案數量較多時,將導致判定時間較長,並且無法區分檔案使用正在使用; 萬幸是Linux2.6後提供了一種inotify 對檔案系統進行監控,通過觸發的方

linux讓irb實現代碼自己主動補全的功能

下載 article 一行代碼 技術 簡單 inux 我們 clu 童鞋 我不知道其它系統上irb是否有此功能,可是在ubuntu上ruby2.1.2自帶的irb默認是沒有代碼自己主動補全功能的,這多少讓人認為有所不便.事實上加上也非常easy,就是在irb裏載

LinuxFTPserver的實現(仿vsftpd)

stat 通信 ip地址 啟動 思想 ipp size_t ascii 上傳 繼上一篇博文實現Linux下的shell後,我們進一步利用網絡編程和系統編程的知識實現Linux下的FTPserver。我們以vsftpd為原型並實現了其大部分的功能。因為篇幅和時間的關系

linux使用rzsz實現文件的上傳和下載

輸入 ssh登錄 usr 終端 啟動 mode 裝包 ftw soft 新搞的雲服務器用SecureCRT不支持上傳和下載,沒有找到rz命令。記錄一下如何安裝rz/sz命令的方法。 一、工具說明 在SecureCRT這樣的ssh登錄軟件裏, 通過在L

linuxexpect命令實現批量ssh免密

輸入 left 防止 輸出 one 時間 line jdb eof 有時候我們需要批量發送ssh命令給服務器,但是有可能有些服務器是新加入的,還沒有配置ssh免密,這個時候就會提示我們輸入yes/no 或者password等,expect腳本命令就是用於在提示這些的時候

linux 使用rinetd實現流量轉發

rinetdRinetd是為在一個Unix和Linux操作系統中為重定向傳輸控制協議(TCP)連接的一個工具。Rinetd是單一過程的服務器,它處理任何數量的連接到在配置文件/etc/rinetd中指定的地址/端口對.使用iptables 很容易將TCP 和UDP 端口從防火墻轉發到內部主機上。但是如果您需要

LinuxBond技術實現平衡負載

bond0 雙網卡 熱備 高速度 問題介紹 一般企業內用於提供NFS服務、samba服務或者vsftpd服務時,要求系統必須提供7*24小時的網絡傳輸服務。它所能提供的最大網絡傳輸速度為100MB/s,但是當訪問的用戶數量特別多時,服務器的訪問壓力非常大,網絡傳輸速率特別慢。 解決方法 因此我

LinuxRIAD的實現及mdadm命令的基本用法

一、RAID簡述 磁碟陣列(Redundant Arrays of Independent Disks,RAID),是把多個物理磁碟組成一個陣列,當作一個邏輯磁碟使用,它將資料以分段或條帶的方式儲存在不同的磁碟中,這樣可以通過在多個磁碟上同時儲存和讀取資料來大幅提高儲存系統的資料吞吐量 二、RAID分類