天天看點

生成keystore和apk簽名

在Android項目開發中想要将項目導出為apk的時候需要選擇一個數字證書,即keystore檔案,用來對apk進行簽名,是導出APP的一個鑰匙,一般需要我們自己生成android.keystore檔案。

使用JDK的keytool工具生成

  1. 安裝jdk,keytool.exe位于目錄下/jdk/bin/
  2. 使用指令:

    keytool -genkey -v -keystore android.keystore -alias androidtest -keyalg RSA -validity 365

#參數說明
- genkey 生成檔案
- alias 别名
- keyalg 加密算法
- validity 有效期
- keystore 檔案名
           

示例

C:\Users\Admin>keytool -genkey -v -keystore android.keystore -alias androidtest -keyalg RSA -validity 365
輸入密鑰庫密碼:
再次輸入新密碼:
您的名字與姓氏是什麼?
  [Unknown]:  test
您的組織機關名稱是什麼?
  [Unknown]:  test
您的組織名稱是什麼?
  [Unknown]:  test
您所在的城市或區域名稱是什麼?
  [Unknown]:  test
您所在的省/市/自治區名稱是什麼?
  [Unknown]:  test
該機關的雙字母國家/地區代碼是什麼?
  [Unknown]:  test
CN=test, OU=test, O=test, L=test, ST=test, C=test是否正确?
  [否]:  y

正在為以下對象生成 2,048 位RSA密鑰對和自簽名證書 (SHA256withRSA) (有效期為 365 天):
         CN=test, OU=test, O=test, L=test, ST=test, C=test
輸入 <androidtest> 的密鑰密碼
        (如果和密鑰庫密碼相同, 按回車):
再次輸入新密碼:
[正在存儲android.keystore]

Warning:
JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore android.keystore -destkeystore android.keystore -deststoretype pkcs12" 遷移到行業标準格式 PKCS12。
           
  1. 生成檔案android.keystore
  2. 檢視keystore資訊:

    keytool -list -keystore “android.keystore -rfc

使用Android Studio生成

  1. 打開Android Studio-Build-Generate Signed Bundle/APK-APK-Next-Create New,填寫資訊
    生成keystore和apk簽名
  2. 點選OK,在Key store path路徑下生成android.keystore

使用keystore給apk簽名

  1. 打開Android Studio-Build-Generate Signed Bundle/APK,選擇Key store path,填寫密碼,點選Next
    生成keystore和apk簽名
  2. 選擇release,Signature Versions勾選V1和V2,最後Finish
    生成keystore和apk簽名
  3. 提示生成/release/app-release.apk即可
    生成keystore和apk簽名

Android Studio代碼混淆及自動簽名打包apk

參考:Android studio 代碼混淆及打包apk

混淆

混淆配置的檔案:proguard-rules.pro

自動簽名apk

  1. 打開Project Structure,選擇Modules-Signing Configs,添加自己的config
    生成keystore和apk簽名
  2. 執行完成後,會在build.gradle中自動加上 signingConfigs{ config {…} }的資訊
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    defaultConfig {
        applicationId "com.meigsmart.meigrs32"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 53
        versionName "1.0.53"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

	//簽名參數
    signingConfigs {
        sginconfig {
            keyAlias 'androiddebug'
            keyPassword 'android'
            storeFile file('debug.keystore')
            storePassword 'android'
        }
    }

    buildTypes {
        release {
        	//簽名
            signingConfig signingConfigs.sginconfig
            //混淆 ture為開啟 一般relseae時為true debugs為false
            minifyEnabled false
            //加載預設混淆配置檔案
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            signingConfig signingConfigs.sginconfig
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
           
  1. 選擇Build Variants-build Types,選擇release
    生成keystore和apk簽名

    zip align enabled 預設為true, 用于啟用優化Apk的操作