android生成簽名apk
⑴ Android apk之v1、v2、v3簽名
Android APK簽名機制是確保應用安全、完整性和防破解的重要手段。這一機制通過應用簽名實現對開發者身份的認證,並驗證應用的完整性,以防止外部惡意修改。
Android平台支持三種簽名方案,分別是v1、v2和v3,需按順序採用,低版本平台會忽略高版本簽名方案中添加的額外數據。v1簽名方案基於Jar,流程涉及計算文件摘要、生成摘要文件和簽名文件,以及添加開發者證書。v1方案存在覆蓋范圍不足、驗證性能差和存在安全漏洞等問題。
v2方案在Android 7.0中引入,採用全文件簽名,能發現所有更改,並提供更快速、全面的驗證。v2簽名機制在源文件數據存儲區和中心目錄區插入簽名分塊,由簽名者數據、簽名和公鑰三部分組成。驗證流程包括解密、計算哈希值、比對值等步驟,確保應用未被修改。
v3方案在Android 9.0中加入,基於v2,新增了可以添加新證書的attr塊,支持密鑰輪換,使得應用在更新過程中可以更改簽名密鑰,增加了靈活性。v3簽名塊包含SignerData、Signature和PublicKey部分,與v2相比,v3在SignerData中添加了attr塊存儲所有簽名信息。驗證流程與v2相似,但支持更復雜的證書結構。
v2和v3簽名方案提供了比v1更強大和全面的保護,但需要遵循特定的驗證流程。無論使用哪種簽名方案,Android系統都會在安裝應用時驗證簽名信息,確保應用的安全性和完整性。
APK簽名機制帶來的好處包括提高應用安全性、防止破解和反編譯、確保應用完整性和兼容性,以及在更新過程中保護應用不被惡意修改。通過深入學習和理解這些簽名方案,Android開發人員能夠更好地保護應用免受攻擊,並提升應用的安全性能。
⑵ 如何用android:sharedUserId屬性生成帶有系統許可權的apk
要通過android:sharedUserId屬性生成帶有系統許可權的APK,主要需遵循以下步驟:
使用Android系統源碼環境下的make命令編譯:
- 在Android源碼根目錄下執行build/envsetup.sh以設置編譯環境。
- 使用lunch命令選擇編譯目標。
- 執行make命令編譯整個系統或根據需要選擇編譯單個模塊、指定目錄下的模塊等。
在AndroidManifest.xml中加入android:sharedUserId="android.uid.system"屬性:
- 這一步確保你的APK程序運行在系統進程中,擁有系統許可權。
使用特定的簽名文件簽名APK:
- 若使用Eclipse源碼編譯,需先編譯signapk.java以獲取SignApk$SignatureOutputStream.class和SignApk.class。
- 將這兩個class文件放入指定目錄並生成signapk.jar文件。
- 復制platform.pk8和platform.x509.pem文件至signapk.jar和SignApk.mf所在的目錄。
- 使用java jar signapk.jar命令簽名APK文件。這兩個簽名文件是系統簽名文件,確保APK能在系統中安裝和運行。
將APK放置在開發版的/system/privapp/目錄下:
- 這一步是實現APK擁有系統許可權的關鍵,因為放置在/system/privapp/目錄下的APK默認擁有系統級許可權。
注意事項: 使用android:sharedUserId屬性生成的APK僅能在原始Android系統或自己編譯的系統中運行。 確保APK簽名正確,否則可能導致APK無法安裝或運行。 將APK放置在/system/privapp/目錄下通常需要在設備已root或處於開發模式的情況下進行。
⑶ Android apk 系統簽名
因工作需要對系統的wifi和乙太網進行配置,需要獲取到系統許可權以後才能進行操作,因此研究了下對apk 進行系統簽名以獲取系統許可權,其實本來打算如果root可以的話直接通過root的方式(設備已經root),後來找了半天發現沒有api進行修改,無奈只能進行系統簽名了,有童鞋知道root方式修改不妨告訴我一下。
這些文件可以問系統廠商獲取,如果是原生系統可以到系統源碼目錄下獲取。
如果報以下的錯誤 ,這時候就用到准備的libconscrypt_openjdk_jni.so 文件
為了檢測我們的應用是否已經簽名成功 可以獲取系統許可權,看看能否獲取到。
結果:
在上一種方式中,我們成功對我們的apk進行了系統簽名,並且能使用系統許可權,但是必須每次打包出apk再進行簽名 對調試很不方便,下面我們可以生成帶有系統簽名的簽名文件,在項目中使用,就不需要每次手動進行簽名。
bubble可以替換為自己喜歡的名稱,這一步要輸入密碼,我嘗試輸入其他不行,只能輸入android。
bubble 可替換為自己喜歡的password和alias
到這里 兩種對app進行系統簽名的方式完成,如有不足,歡迎指出.
⑷ 如何對android的apk簽名進行驗證
在Android開發中,確保應用的安全性和完整性至關重要。其中一個重要步驟是對APK文件進行簽名。簽名不僅可以驗證應用的真實身份,還能確保應用在安裝過程中沒有被篡改。下面是一個詳細的簽名流程,適用於希望深入了解簽名過程的開發者。
首先,我們需要進入命令行模式。可以通過菜單鍵調用命令提示符(cmd)。然後,我們需要指定JDK安裝目錄下的Bin子目錄。如果JDK安裝在E盤,我們可以直接進入E盤,再進入JDK的安裝目錄。接下來,通過執行keytool.exe工具,創建一個keystore文件。執行命令如下:
keytool -genkeypair -alias mydemo -keyalg RSA -validity 100 -keystore mydemo.keystore
這條命令包括幾個參數:-genkeypair指定生成密鑰對,-alias用於指定別名,-keyalg用於指定密鑰演算法,-validity設置證書的有效期,-keystore指定了證書存儲的路徑。
執行命令後,系統會要求輸入證書的詳細信息,包括密碼、姓名、組織等。完成後,keystore文件即創建完成,可以保存在指定目錄。
接下來,我們需要對未簽名的APK文件進行簽名。使用JDK安裝目錄下的jarsigner.exe工具,執行如下命令:
jarsigner -verbose -keystore mydemo.keystore -signedjar Notes.apk Notes.apk mydemo.keystore
這條命令中,-verbose參數用於生成詳細的輸出,-keystore參數指定了存儲證書的路徑,-signedjar參數用於指定簽名後的APK文件、未簽名的APK文件和證書別名。
完成簽名後,我們還需要對APK進行優化。在SDK目錄下的tool目錄下,找到zipalign.exe工具。執行如下命令:
zipalign -f -v 4 Notes.apk Notes.apk
這個命令中,-f參數表示強制覆蓋已有文件,-v參數表示生成詳細的輸出,4表示基於4位元組對齊。執行後,會生成一個新的優化過的APK文件,這個文件可以對外發布。
整個過程完成後,我們就可以得到一個簽名並優化過的APK文件,確保其安全性和完整性。
⑸ Android studio怎麼生成簽名apk
1、生成你自己的jks文件
將下載好的keytool-importkeypair配置一下,其實主要就是配置一下環境變數,不熟悉的可以閱讀官方文檔,然後使用下面這條命令(需要在linux下,用windows的可以去在linux下生成jks,然後復制出新的jks回原目錄也可以)對jks文件引入系統簽名
./keytool-importkeypair -k [jks文件名] -p [jks的密碼] -pk8 platform.pk8 -cert platform.x509.pem -alias [jks的別名]
例如我的對應的就是:./keytool-importkeypair -k SignDemo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias SignDemo
運行完這條命令之後,我們就得到了有系統簽名的jks
3、配置gradle(app)
在在android區域下(與defaultConfig同級)添加signingConfigs配置:
依次填寫jks的路徑,密碼,別名等
詳情介紹
⑹ android開發 怎麼給apk文件用已有的簽名文件進行簽名,不用eclipse
給apk文件簽名主要分三步:
1、創建證書
2、簽名
3、優化(可選)
1)使用jdk的keytool工具生成簽名用的證書> keytool -genkey -v -alias CERT -keyalg RSA -keysize 2048 -validity 10000 -keystoreCERT.keystore 創建過程需要輸入一些標識信息和密碼,一些重要的參數值說明如下(根據自己的需要要進行相應的修改): CERT.keystore ---- 證書保存的文件名 CERT ---- 證書的別名 10000 ---- 10000天的有效期 2048 ---- 默認為1024 bits,Android 建議使用2048 bits或更高其他的詳細信息可以使用keytool -help查看幫助 證書生成後使用如下命令可以查看證書的信息:> keytool -list -alias CERT -keystore CERT.keystore
2)使用jdk的jarsigner工具對apk文件簽名> jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT 簽名過程需要輸入證書的密碼,一些重要的參數值說明如下(根據自己的需要要進行相應的修改): CERT.keystore ---- 證書保存的文件名 CERT ---- 證書的別名 待簽名的apk文件根根目錄下如果有文件夾「META-INFO」,請先刪除(重新簽名就需要這樣做)。如果不想創建過程輸出太多信息,可以刪除「-verbose」 。上述簽名會直接覆蓋原來的文件,如果不想被覆蓋而簽名為另外的新文件 signed.akp,只需將 to_sign.apk 改為 -signedjar to_sign.apk signed.akp 即可。簽名後可以使用如下命令驗證是否簽名成功: > jarsigner -verify to_sign.apk 如果需要查看更詳細的驗證信息,可修改為:> jarsigner -certs -verbose -verify to_sign.apk
3)使用android sdk的zipalign工具優化已簽名的apk文件> zipalign -v 4 unaligned.apk aligned.apk 注意要在簽名後再zipalign。這個工具不是jdk自帶的,而是在%ANDROID_HOME%\tools\zipalign.exe。