create-keystore
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAndroid Keystore Creation Skill
Android Keystore Creation Skill
Android 앱 서명을 위한 Keystore 파일을 생성하고 관리하는 스킬입니다.
这是一款用于生成和管理Android应用签名所需Keystore文件的Skill。
Keystore 생성
Keystore生成
기본 생성 명령어
基础生成命令
bash
keytool -genkey -v \
-keystore <keystore_name>.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias <alias_name>bash
keytool -genkey -v \
-keystore <keystore_name>.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias <alias_name>입력 항목
输入项目
| 항목 | 설명 | 예시 |
|---|---|---|
| keystore password | Keystore 비밀번호 | 최소 6자 이상 |
| key password | 개별 키 비밀번호 | Keystore와 동일 가능 |
| CN (Common Name) | 이름 | Hong Gildong |
| OU (Organizational Unit) | 부서 | Development |
| O (Organization) | 조직/회사 | MyCompany |
| L (Locality) | 도시 | Seoul |
| ST (State) | 시/도 | Seoul |
| C (Country) | 국가 코드 (2자리) | KR |
| 项目 | 说明 | 示例 |
|---|---|---|
| keystore password | Keystore密码 | 至少6位 |
| key password | 单独密钥密码 | 可与Keystore密码相同 |
| CN (Common Name) | 姓名 | Hong Gildong |
| OU (Organizational Unit) | 部门 | Development |
| O (Organization) | 组织/公司 | MyCompany |
| L (Locality) | 城市 | Seoul |
| ST (State) | 道/省 | Seoul |
| C (Country) | 国家代码(2位) | KR |
비대화식 생성 (자동화용)
非交互式生成(自动化用)
bash
keytool -genkey -v \
-keystore release-key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias my-key-alias \
-dname "CN=Hong Gildong, OU=Development, O=MyCompany, L=Seoul, ST=Seoul, C=KR" \
-storepass <password> \
-keypass <password>bash
keytool -genkey -v \
-keystore release-key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias my-key-alias \
-dname "CN=Hong Gildong, OU=Development, O=MyCompany, L=Seoul, ST=Seoul, C=KR" \
-storepass <password> \
-keypass <password>Gradle 설정
Gradle配置
방법 1: gradle.properties (권장)
方法1: gradle.properties(推荐)
properties
undefinedproperties
undefined~/.gradle/gradle.properties 또는 프로젝트 gradle.properties
~/.gradle/gradle.properties 或项目gradle.properties
RELEASE_STORE_FILE=../keystore/release-key.jks
RELEASE_STORE_PASSWORD=your_store_password
RELEASE_KEY_ALIAS=my-key-alias
RELEASE_KEY_PASSWORD=your_key_password
undefinedRELEASE_STORE_FILE=../keystore/release-key.jks
RELEASE_STORE_PASSWORD=your_store_password
RELEASE_KEY_ALIAS=my-key-alias
RELEASE_KEY_PASSWORD=your_key_password
undefined방법 2: build.gradle.kts 설정
方法2: build.gradle.kts配置
kotlin
android {
signingConfigs {
create("release") {
storeFile = file(project.property("RELEASE_STORE_FILE") as String)
storePassword = project.property("RELEASE_STORE_PASSWORD") as String
keyAlias = project.property("RELEASE_KEY_ALIAS") as String
keyPassword = project.property("RELEASE_KEY_PASSWORD") as String
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}kotlin
android {
signingConfigs {
create("release") {
storeFile = file(project.property("RELEASE_STORE_FILE") as String)
storePassword = project.property("RELEASE_STORE_PASSWORD") as String
keyAlias = project.property("RELEASE_KEY_ALIAS") as String
keyPassword = project.property("RELEASE_KEY_PASSWORD") as String
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}방법 3: build.gradle (Groovy)
方法3: build.gradle (Groovy)
groovy
android {
signingConfigs {
release {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}groovy
android {
signingConfigs {
release {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}Keystore 관리
Keystore管理
Keystore 정보 확인
查看Keystore信息
bash
keytool -list -v -keystore <keystore_name>.jksbash
keytool -list -v -keystore <keystore_name>.jks인증서 지문(Fingerprint) 확인
查看证书指纹(Fingerprint)
bash
undefinedbash
undefinedSHA-1 (Google Play 등록용)
SHA-1(Google Play注册用)
keytool -list -v -keystore <keystore_name>.jks | grep SHA1
keytool -list -v -keystore <keystore_name>.jks | grep SHA1
SHA-256
SHA-256
keytool -list -v -keystore <keystore_name>.jks | grep SHA256
undefinedkeytool -list -v -keystore <keystore_name>.jks | grep SHA256
undefined비밀번호 변경
修改密码
bash
undefinedbash
undefinedKeystore 비밀번호 변경
修改Keystore密码
keytool -storepasswd -keystore <keystore_name>.jks
keytool -storepasswd -keystore <keystore_name>.jks
Key 비밀번호 변경
修改Key密码
keytool -keypasswd -alias <alias_name> -keystore <keystore_name>.jks
undefinedkeytool -keypasswd -alias <alias_name> -keystore <keystore_name>.jks
undefinedAlias 변경
修改Alias
bash
keytool -changealias -keystore <keystore_name>.jks \
-alias <old_alias> \
-destalias <new_alias>bash
keytool -changealias -keystore <keystore_name>.jks \
-alias <old_alias> \
-destalias <new_alias>Play App Signing 업로드 키
Play App Signing上传密钥
Google Play Console의 Play App Signing을 사용하는 경우:
使用Google Play Console的Play App Signing时:
PEM 파일로 인증서 내보내기
将证书导出为PEM文件
bash
keytool -export -rfc \
-keystore upload-key.jks \
-alias upload-key \
-file upload-certificate.pembash
keytool -export -rfc \
-keystore upload-key.jks \
-alias upload-key \
-file upload-certificate.pem보안 권장사항
安全建议
Keystore 보관
Keystore保管
- Keystore 파일을 Git에 커밋하지 않기 (에 추가)
.gitignore - 비밀번호를 코드에 직접 작성하지 않기
- 안전한 장소에 백업 보관 (분실 시 앱 업데이트 불가)
- CI/CD에서는 환경변수 또는 Secret Manager 사용
- 不要将Keystore文件提交到Git(添加到)
.gitignore - 不要在代码中直接写入密码
- 存放在安全位置并备份(丢失后无法更新应用)
- CI/CD中使用环境变量或Secret Manager
.gitignore 추가
添加到.gitignore
gitignore
undefinedgitignore
undefinedKeystore
Keystore
*.jks
*.keystore
keystore.properties
undefined*.jks
*.keystore
keystore.properties
undefined환경변수 사용 (CI/CD)
使用环境变量(CI/CD)
kotlin
android {
signingConfigs {
create("release") {
storeFile = file(System.getenv("KEYSTORE_PATH") ?: "../keystore/release.jks")
storePassword = System.getenv("KEYSTORE_PASSWORD") ?: ""
keyAlias = System.getenv("KEY_ALIAS") ?: ""
keyPassword = System.getenv("KEY_PASSWORD") ?: ""
}
}
}kotlin
android {
signingConfigs {
create("release") {
storeFile = file(System.getenv("KEYSTORE_PATH") ?: "../keystore/release.jks")
storePassword = System.getenv("KEYSTORE_PASSWORD") ?: ""
keyAlias = System.getenv("KEY_ALIAS") ?: ""
keyPassword = System.getenv("KEY_PASSWORD") ?: ""
}
}
}문제 해결
问题排查
| 에러 | 원인 | 해결 |
|---|---|---|
| keytool: command not found | JDK 미설치 또는 PATH 미설정 | JDK 설치 후 PATH 설정 |
| keystore password was incorrect | 비밀번호 오류 | 올바른 비밀번호 입력 |
| alias does not exist | 잘못된 alias | |
| 错误 | 原因 | 解决方法 |
|---|---|---|
| keytool: command not found | 未安装JDK或未配置PATH | 安装JDK并配置PATH |
| keystore password was incorrect | 密码错误 | 输入正确的密码 |
| alias does not exist | Alias错误 | 使用 |
사용 예시
使用示例
사용자가 다음과 같이 요청하면 이 스킬을 활용합니다:
- "keystore 만들어줘"
- "앱 서명 키 생성해줘"
- "릴리즈 키 만들어줘"
- "키스토어 생성해줘"
- "Play Store 업로드 키 만들어줘"
用户提出以下请求时可使用本Skill:
- "帮我创建Keystore"
- "帮我生成应用签名密钥"
- "帮我创建发布密钥"
- "帮我生成密钥库"
- "帮我创建Play Store上传密钥"