簽署你的Android應用程式(.keystore)

產生的方法很簡單,只要照著貼就可以了。

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

如果這邊出現「keytool: command not found」,請把$JAVA_HOME\bin加入環境變數$PATH中,或是直接到$JAVA_HOME\bin\目錄下執行keytool,例如小蛙的環境是C:\Program Files\Java\jdk1.7.0_02\bin,就先cd C:\Program Files\Java\jdk1.7.0_02\bin之後開始輸入上面的指令。

將上述指令-keystore rdss.keystore以及-alias rdss中的rdss改成自己要的名字,其他東西照著貼上就好,-validity官方說明文件建議設定10000以上的值(指令細節可參考官方文件)。

輸入金鑰儲存庫密碼: mykeystorepassword
重新輸入新密碼: mykeystorepassword
您的名字與姓氏為何?
  [Unknown]:  Hans
您的組織單位名稱為何?
  [Unknown]:
您的組織名稱為何?
  [Unknown]:
您所在的城市或地區名稱為何?
  [Unknown]:  Taipei
您所在的州及省份名稱為何?
  [Unknown]:  Taiwan
此單位的兩個字母國別代碼為何?
  [Unknown]:  TW
CN=Hans, OU=Unknown, O=Unknown, L=Taipei, ST=Taiwan, C=TW 正確嗎?
  [否]:  Y

針對 CN=Hans, OU=Unknown, O=Unknown, L=Taipei, ST=Taiwan, C=TW 產生有效期 10,000
 天的 2,048 位元 RSA 金鑰組以及自我簽署憑證 (SHA256withRSA)

輸入 <rdss> 的金鑰密碼
        (RETURN 如果和金鑰儲存庫密碼相同):
新憑證 (自我簽署):
...
[儲存 rdss.keystore]

密碼千萬要記牢,小蛙在開發照照明星臉的時候就是忘了密碼,花了兩天的時間把所有可能的密碼都試過一次才終於式出來><(前後兩個基本上用一樣的密碼就好了,免得忘記),完成後可以看到在執行keytool的目錄下出現了一個剛剛設定的「rdss.keystore」,如此一來就完成自己的簽署檔案囉!

主要加入下面兩段

signingConfigs {                                                                                                                    
    config {
        keyAlias 'rdss'
        keyPassword '123456'
        storeFile file("../rdss.keystore")
        storePassword '123456'
    }
}   

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
}
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "com.tengmuz.jnidemo"
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {                                                                                                                    
        config {
            keyAlias 'rdss'
            keyPassword '123456'
            storeFile file("../rdss.keystore")
            storePassword '123456'
        }
    }   

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }

    externalNativeBuild {
        ndkBuild {
            path file("src/main/jni/android.mk")
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}