日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 签名打包

發布時間:2024/8/1 Android 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 签名打包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


什么是簽名?

Android 要求所有已安裝的應用程序都使用數字證書做數字簽名,數字證書的私鑰由開發者持有。

Android 使用證書作為標識應用程序作者的一種方式,證書不需要由證書認證中心簽名,使用自制簽名證書。

Android 系統不會安裝或運行沒有正確簽名的應用,此規則適用于任何地方運行的Android系統。因此在真機或模擬器上運行或者調試應用前,必須為其設置好簽名。

兩種簽名:

1、調試模式下簽名 ? (sdk 為應用主動生成一個簽名證書,調試模式下簽名的應用不能對外發布,因為由構建工具創建的證書是不安全的,應用商店不接受調試證書簽名的apk)

2、公布模式下簽名 (需要生成自己的證書)

注:給自己開發的app簽名,就代表著我們自己的版權,之后要進行升級,也必須要使用相同的簽名才可以,簽名代表著自己的身份(即 keystore,是一個包括私人秘鑰集合的二進制文件),創建的keystore 多個app可以使用同一簽名。


為什么要有簽名?

開發Android的人眾多,完全有可能把雷鳴、包名命名成相同的名字,需要簽名來區分,由于開發商可能通過使用相同包名來混淆替換已經安裝的程序,簽名可以保證相同名字,但是簽名不同的包不被替換。

簽名機制在Android應用和框架中有著十分重要的作用,例如:Android系統禁止跟新安裝簽名不一致的apk,若應用需要使用system權限,必須保證apk簽名與framwork簽名一致。


為什么要這么做?

  • ?應用程序升級 - ?當發布應用的更新時,如果想染給用戶無縫的升級到新版本,需要繼續使用相同的某個或某套證書來簽名更新包,當系統安裝應用的更新時,它會比較現在的版本和新版本的證書,如果證書吻合,包括證書數據和順序都吻合,那么系統允許更新,如果新版本所做的簽名不是匹配的,那么將需要給用起一個不同的包名 - 在這種情況下,用戶相當于安裝了一個完全新的程序。
  • 用用程序模塊化 - Android允許相同證書簽名的應用程序運行在相同的進程中,此時系統會將它們作為耽擱應用程序對待,在這種方式中,可以按模塊化的凡事部署應用,用戶可以根據需要獨立的跟新每一個模塊。
  • 代碼、數據的授權共享 - Android提供模式匹配的權限控制機制,因此一個應用可以暴露功能給另一個用指定證書簽名的簽名的應用,通過用相同證書簽名多個應用,以及使用模式匹配的權限檢查,應用程序可以以安全的方式共享代碼和數據。


公鑰和私鑰的概念

在現代密碼體制中加密和解密是采用不同的秘鑰(公開秘鑰),也就是公開秘鑰算法(也叫非對稱算法、雙鑰算法),每個通信方均需要兩個秘鑰,即公鑰和私鑰,這兩個秘鑰可以互為加解密,公鑰是公開的,不要保密,而私鑰是由個人自己持有,并且必須妥善保管和注意保密的。


證書的概念

數字證書是由證書認證機構(CA)對證書申請者真實身份驗證之后,用CA的根證書對申請人的一些基本信息以及申請人的公鑰進行簽名(相當于加蓋發證書機構的公章)后形成的數字文件。CA完成簽發證書后,會將證書發布在CA的證書庫(目錄服務器)中,任何人都可以查詢和下載,因此數字證書和公鑰一樣是公開的,實際上數字證書就是經過CA認證的公鑰。

原則:

  • 一個公鑰對應一個私鑰
  • 秘鑰對中,讓大家都知道的是公鑰,不告訴大家只有自己知道的是私鑰
  • 如果用其中一個秘鑰可以解密,那么該數據必須是對應的秘鑰進行的加密
  • 非對稱秘鑰密碼的主要應用就是公鑰加密和公鑰認證,而公鑰加密的過程和公鑰認證的過程是不一樣的

例:兩個用戶 A 和 B ,A要把一段明文通過雙鑰加密的技術發送給 B , B有一對公鑰和私鑰,那么加密解密過程如下

? ? 1. B 將他的公鑰傳送給A

? ? 2. A 用 B 的公鑰加密的他的消息,然后傳送給 B

? ? 3. B 用他的私鑰解密 A 的消息


調試版相關問題

證書到期問題:用來簽署apk調試的自簽名證書有效期365天,到期后只需刪除該debug.keystore文件。

文件存儲位置 --- OS 和 Linux 系統:~/.android /

????????????????? ? ?--- windows 7, 8, 10 : C:\Users\<user>\.android\


發布版的簽名

1. 手動生成簽名的 apk (使用 Android Studio 手動生成簽名的 apk,每次發布不同版本的時候都需要手動生成一次,比較麻煩)

步驟如下:

????1> 在Android Studio菜單欄中,Build --> Generate Signed APK

? ? ? ??

? ? 2>如果你已經有一個秘鑰庫,請轉到步驟4,如果你想創建一個新的秘鑰庫,單擊新建

? ? ? ??

? ? 注:Key store path: 秘鑰庫存儲位置

????????? ?Key store password:秘鑰庫安全密碼

????????? ?Key alias:秘鑰標識名稱

????????? ?Key password: 秘鑰安全密碼

? ?????????秘鑰安全密碼應當與秘鑰庫安全密碼不同


? ? 3>創建新的秘鑰庫如下圖

? ? ? ???

????

? ? 注:秘鑰的有效時間設置以年為單位,應至少為25年,以便您可以在應用的整個生命周期內使用相同的秘鑰簽署應用更新

? ? Certificate 部分是為證書輸入關于您自己的信息,此信息不會顯示在應用中,但會作為apk的一部分包含在您的證書中

????Firstand Last Name 秘鑰頒發者姓名

????OrganizationalUnit 秘鑰頒發者組織單位

? ? Organization 組織

????Cityor Locality 城市

? ? State or Province 市或洲

????CountryCodeXX 國家代碼


? ? 4>在生成簽名apk窗口中,選擇秘鑰庫、秘鑰,并輸入兩個密碼(如果是新創秘鑰,這些字段會自動填充)然后單擊xiayi

????

????


? ? 5>選擇簽署的apk目的地,構建類型,產品風味,單擊完成


????

????

????APK Destination Folder 為簽署的APK選擇一個目的地


????Build Type 選擇構建的類型(兩種類型調試和正式


????Flavors 選擇產品風味(即我們平時所說的發布平臺,Android將為選擇的每個產品風味生成單獨的apk

????Signature?Versions 簽名版本勾選 Android7.0中引入了APKSignature Scheme v2

????

? ? 說明:v1:應用是通過zip條目進行驗證,這樣apk簽署后可進行許多修改 - 可以移動甚至重新壓縮文件

? ? v2:驗證壓縮文件的所有字節,而不是單個zip條目,簽名后無法再更改


2. 配置 build.gradle 文件自動簽名apk

步驟如下:

? ? 1>Android Studio 菜單欄 File --> Project Structure ( 快捷鍵 ctrl+alt +shift +s)

? ? 2>選中app這個module,然后切換到singning標簽欄,然后點擊添加,生成release簽名信息,點擊ok

????

? ? 3>切換到Build Types 標簽,將Signing config 選為“release”,即將剛剛生成的release簽名信息配置進去

????

????

? ? 4>隨后我們可以看到app這個module的build.gradle文件多出了如下部分代碼

??????


? ? 5>然后執行菜單欄的“build --> clean Project”



6>生成release版本的apk,在命令行terminal輸入gradlew assembleRelease (AS已經將命令行Terminal 繼承到了軟件當中)運行成功的話,效果如下:



7> 生成簽名好的文件在如下位置:




總結

以上是生活随笔為你收集整理的Android 签名打包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。