簽署你的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'
}

书籍推荐