① android開發對apk文件進行簽名
對apk簽名的步驟(適用於找回apk,對空包進行簽名)
1.復制java的jdk,bin目錄的絕對路徑(如果是默認安裝應該和我的路徑差不多)C:\Program Files\Java\jdk1.8.0_111\bin
2.進入cmd窗口,進入bin目錄(如果是新手,輸入cd C:\Program Files\Java\jdk1.8.0_111\bin)
輸入命令 jarsigner -verbose -keystore d:\project\360Wallpaper.keystore -signedjar d:\qihusign.apk d:\Qihuunsign.apk QIHU360
將簽名修改成自己簽名的路徑 ,生成的apk文件的名字路徑修改一下,再輸入需要簽名的apk文件路徑,最後輸入自己簽名的別名就可以
(新手,歡迎指正)
② Android studio 如何創建apk簽名
1、打開軟體
找到「Build」選項
2、打開生成apk簽名的窗口
Build---->Generate Signed APK...
3、 選擇創建新的密鑰
Creata new...
4、 選擇密鑰存儲路徑,並為密鑰命名
填寫信息
5、設置密碼,填寫或更改信息
密碼請牢記,密碼請牢記,密碼請牢記(三遍了)
證書內容貌似可以空白
6、ok,然後,下一步
如果遇到下圖的情況,不用擔心,繼續點擊ok
問題解決辦法:https://www.jianshu.com/p/67c2972182a0
7、然後,下一步
8、選擇簽名版本
v1或者v1&v2 然後點擊finish 即可,找到剛才保存的路徑,即可找到簽名文件
建議選擇v1&v2
③ 如何將android應用生成簽名
1.簽名的步驟
a.創建key
b.使用步驟a中產生的key對apk簽名
2.具體操作
方法一: 命令行下對apk簽名(原理)
創建key,需要用到keytool.exe (位於jdk1.6.0_24jrein目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24in目錄下),把上兩個軟體所在的目錄添加到環境變數path後,打開cmd輸入
D:>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*說明:-genkey 產生密鑰
-alias demo.keystore 別名 demo.keystore
-validity 40000 有效期限4000天
-keystore demo.keystore */
D:>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*說明:-verbose 輸出簽名的詳細信息
-keystore demo.keystore 密鑰庫位置
-signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數中依次為簽名後產生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore.*/
注意事項:android工程的bin目錄下的demo.apk默認是已經使用debug用戶簽名的,所以不能使用上述步驟對此文件再次簽名。正確步驟應該是:在工程點擊右鍵->Anroid Tools-Export Unsigned Application Package導出的apk採用上述步驟簽名。
方法二:使用Eclipse導出帶簽名的apk
Eclipse直接能導出帶簽名的最終apk,非常方便,推薦使用,步驟如下:
第一步:導出。
第二步:創建密鑰庫keystore,輸入密鑰庫導出位置和密碼,記住密碼,下次Use existing keystore會用到。
第三步:填寫密鑰庫信息,填寫一些apk文件的密碼,使用期限和組織單位的信息。
第四步:生成帶簽名的apk文件,到此就結束了。
第五步:如果下次發布版本的時候,使用前面生成的keystore再簽名。
第六步:Next,Next,結束!
方法三:使用IntelliJ IDEA導出帶簽名的apk
方法步驟基本和Eclipse相同,大概操作路徑是:菜單Tools->Andrdoid->Export signed apk。
④ 如何用Android 源碼生成APK簽名文件
我們很多應用需要用到系統簽名,可以通過生成系統簽名文件,在生成apk時使用這個簽名,然後可以安裝到機器中,不需要放在源碼里編譯,重新刷系統。
先附上 50和 20機器人通用的debugkey(圖已經省略)
在linux環境中,以Android源碼目錄為根目錄。
其中的platform.pk8是製作系統簽名需要的文件。
1、在這個目錄下,執行
生成臨時文件platform.pem
2、接著執行以下命令,將在目錄下生成platform.p12文件,它本質上應該就是一個數字證書
3、然後再執行以下命令出現以下信息,表示成功生成platform.jks
這個名字可以改成debug.keystore. 它的後綴本身是沒有關系,eclipse和AS都識別 platform.jks
4、然後在打包 apk 的時候選擇platform.jks文件,就可以直接用adb命令安裝apk到機器中了。
xxxx表示需要安裝的apk路徑
5、簽名的 Key store password和Key password都是android
⑤ Android Studio 之簽名
通過簽名可以確保數據來源的可靠性和數據的不可篡改性
對 Apk 進行簽名,也就是在 Apk 中寫入一個指紋,寫入指紋後,Apk 中有任何修改,都會導致這個指紋無效,Android 系統在安裝 Apk 進行簽名校驗時就會不通過,進而無法安裝該 Apk
如上圖:
通常的簽名驗簽過程中,接收方收到消息後,會先向 CA 機構驗證證書的合法性,再進行簽名校驗。但 Apk 的證書通常由開發者自己製作,沒有向 CA 機構申請,Android 系統在安裝 Apk 時也並沒有校驗證書本身的合法性,只是從證書中提取公鑰和加密演算法,因此,如果對第三方 Apk 重新簽名,也能安裝到沒有安裝過這個 Apk 的系統中
keystore 文件包含私鑰、公鑰和數字證書,分為很多種,Android 使用的是 Java 標准 keystore 格式 JKS(Java Key Storage)
Android App Bundle:用於通過 Google Play 發布的應用,需要升級到AS 3.2 以上版本才支持App Bundle 格式;
APK:用於創建可部署到設備上的簽名 APK
點擊 Finish 就會生成簽名文件與簽名後的 Apk
當我們需要升級 Apk 版本的時候,需要再次對 Apk 文件進行簽名,可以通過配置 build.gradle 讓其自動生成簽名後的 Apk
如果你的項目是開源的,需要把你的簽名信息寫在 local.properties 中,然後在 .gitignore 配置文件中加入 local.properties ,這樣 local.properties 就不會提交到開源項目中,簽名信息也就不會被人獲取
local.properties:
app/build.gradle:
有時候我們的 apk 中某些功能需要系統簽名,例如靜默安裝。測試系統簽名的 apk,需要 root 許可權,而帶 Google APIs 的模擬器不能 root,因此要注意不能選擇帶 Google APIs 的模擬器
下面執行的操作都是在 Linux 中,如果 apk 是 window 中生成的,需要拷貝到 linux 操作,再將生成的系統簽名過得 apk 再拷貝到 window,比較麻煩,可以考慮後面的自動系統簽名,還是需要在 linux 操作一次,不過之後就可以只在 window 操作了
這兩個文件在目錄 aosp/build/target/proct/security 下,如下圖
在目錄 aosp/prebuilts/sdk/tools/lib 下,如下圖
將前面獲取的 platform.pk8 、 platform.x509.pem 和 signapk.jar 文件放到需要簽名的 apk 同一個目錄,執行以下命令
如果出現上面的錯誤:Failed to load any of the given libraries: [conscrypt_openjdk_jni-linux-x86_64, conscrypt_openjdk_jni-linux-x86_64-fedora, conscrypt_openjdk_jni]
解決方法:
到目錄 aosp/prebuilts/sdk/tools/linux/lib64 下,復制 libconscrypt_openjdk_jni.so 文件到需要簽名 apk 的同一個目錄,並將命令改為
自動進行系統簽名的原理是:先生成一個 system.jks 文件,使用 keytool-importkeypair 對 system.jks 文件進行系統簽名,再 build.gradle 和 local.properties 進行配置,直接使用帶有系統簽名的 system.jks 對 apk 進行簽名,這樣編譯生成的apk文件就自帶系統簽名了
按照前面的方法,生成一個 system.jks 文件,此時是在 window 系統中操作的
進入 keytool-importkeypair 目錄,將 system.jks、platform.pk8、platform.x509.pem 文件拷貝進來,拷貝之後的目錄結構為
使用 linux 中修改過的帶有系統簽名的 system.jks 文件將 window 中最開始生成的 system.jks 覆蓋掉,再像前面的自動簽名部分一樣,修改 build.gradle 和 local.properties 的配置,之後生成的 apk 就是系統簽名過的了
測試方法是,在 AndroidManifest.xml 中添加 android:sharedUserId="android.uid.system" 後安裝到 非 Google APIs 的模擬器上 , Google APIs 的模擬器不能 root,無法安裝
會發現只有使用 system.jks 文件簽名後才能安裝,否則安裝失敗,會報以下的錯誤:
⑥ Android開發之通過apksigner對apk進行v2簽名
在 Android 7.0 Nougat 中引入了全新的 APK Signature Scheme v2簽名方式,美團也推出相應的 Android渠道包生成工具Walle 。
360加固後需要重新簽名,藉助360官方提供的 簽名工具qihoo apk signer ,是採用的7.0以前的v1簽名,這時再通過walle打渠道包,是無法成功往apk寫入渠道號的。這時我們就必須藉助 Android SDK提供的apksigner 工具對已經打包好的apk進行v2簽名。
Android官方文檔已經對 apksigner的使用 有比較詳細的解釋。下面說說實際的操作步驟:
zip對齊,因為APK包的本質是一個zip壓縮文檔,經過邊界對齊方式優化能使包內未壓縮的數據有序的排列,從而減少應用程序運行時的內存消耗 ,通過空間換時間的方式提高執行效率(zipalign後的apk包體積增大了100KB左右)。
打開cmd,把目錄切換到SDK的build-tools目錄下念閉知(例如 E:SDKuild-tools25.0.2 ),執行:
zipalign命令選項不多:
-f : 輸出文件覆蓋源文件
-v : 詳細的輸出log
-p : outfile.zip should use the same page alignment for all shared object files within infile.zip
-c : 檢查當前APK是否已經執行過Align優化。
另外上面的數字4是代表按照4位元組(32位)邊界對齊。
這個工具位於SDK目錄的build-tools目錄下。必須說明的是,v2簽名方式時在Android7.0後才推出的,所以只有 版本>25 的SDKuild-tools中才能找到apksigner.jar。
打開cmd,把目錄切到SDKuild-tools版本號lib下(例如 E:SDKuild-tools25.0.2lib ),執行:
示例:
apksigner還支持另外的一些選項, 詳情點擊這里 。包括仔消指定min-sdk版本、max-sdk版本、輸出詳細信息、檢查apk是否已經簽名等等。
例如檢查apk是否已經簽名:
zipalign + apksigner,兩步走完成態首對apk包的v2簽名。且以上工具位於AndroidSDK目錄的build-tools中。