create-keystore

SKILL.md

Android Keystore Creation Skill

Android 앱 서명을 위한 Keystore 파일을 생성하고 관리하는 스킬입니다.

Keystore 생성

기본 생성 명령어

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

비대화식 생성 (자동화용)

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 설정

방법 1: 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

방법 2: build.gradle.kts 설정

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)

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 정보 확인

keytool -list -v -keystore <keystore_name>.jks

인증서 지문(Fingerprint) 확인

# SHA-1 (Google Play 등록용)
keytool -list -v -keystore <keystore_name>.jks | grep SHA1

# SHA-256
keytool -list -v -keystore <keystore_name>.jks | grep SHA256

비밀번호 변경

# Keystore 비밀번호 변경
keytool -storepasswd -keystore <keystore_name>.jks

# Key 비밀번호 변경
keytool -keypasswd -alias <alias_name> -keystore <keystore_name>.jks

Alias 변경

keytool -changealias -keystore <keystore_name>.jks \
  -alias <old_alias> \
  -destalias <new_alias>

Play App Signing 업로드 키

Google Play Console의 Play App Signing을 사용하는 경우:

PEM 파일로 인증서 내보내기

keytool -export -rfc \
  -keystore upload-key.jks \
  -alias upload-key \
  -file upload-certificate.pem

보안 권장사항

Keystore 보관

  • Keystore 파일을 Git에 커밋하지 않기 (.gitignore에 추가)
  • 비밀번호를 코드에 직접 작성하지 않기
  • 안전한 장소에 백업 보관 (분실 시 앱 업데이트 불가)
  • CI/CD에서는 환경변수 또는 Secret Manager 사용

.gitignore 추가

# Keystore
*.jks
*.keystore
keystore.properties

환경변수 사용 (CI/CD)

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 -list로 확인

사용 예시

사용자가 다음과 같이 요청하면 이 스킬을 활용합니다:

  • "keystore 만들어줘"
  • "앱 서명 키 생성해줘"
  • "릴리즈 키 만들어줘"
  • "키스토어 생성해줘"
  • "Play Store 업로드 키 만들어줘"
Weekly Installs
2
First Seen
Feb 7, 2026
Installed on
mcpjam2
openhands2
replit2
junie2
windsurf2
zencoder2