키 스토어를 어떻게 만들 수 있습니까?


537

Android 용 키 저장소를 작성하는 단계는 무엇입니까?

앱에서 Google지도를 사용해야하는데 어떤 단계를 놓쳤는 지 모르겠습니다. 구체적인 세부 단계를 알려주십시오 (가이드에서 이해하지 못했습니다).


이미 수행 한 작업이 있거나 시작하기위한 권장 사항을 찾고 있습니까?
atk

2
그것들은 내가 한 다음 단계입니다 : 1-eclipse 2-install jdk 3-install SDK 4-install android plugin. win cmd에서 명령을 실행할 수 없었습니다. $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (개인 키 생성). 감사합니다
user482762

@ user482762 : CommonsWare의 답변이 효과가 있었습니까? win cmd를 실행하지 않은 이유는 무엇입니까?
atk

CommonsWare의 답변이 작동하지 않습니다 .cmd에서 명령을 실행하려고하면 "$가 내부 또는 외부 명령, 실행 가능한 프로그램 또는 배치 파일로 인식되지 않습니다"라는 오류 메시지가 나타납니다. 도와 주셔서 감사합니다
user482762

아! 실제로 $를 입력하고 싶지 않습니다. Windows에서 명령 행 (cmd 응용 프로그램)을 사용하는 경우 입력 프롬프트는 일반적으로 "c : \"와 같이 DRIVE : / DIRECTORY>와 같습니다. 유닉스에서는 프롬프트가 종종 "$"또는 ">"처럼 보입니다. 명령에서 "$"는 명령의 일부가 아니라 입력 프롬프트를 나타냅니다. $없이 모든 인수와 함께 keytool을 실행하십시오.
atk

답변:


545

제목의 질문에 대답하기 위해 표준 JDK 배포판과 함께 제공되는 Java Keytool 유틸리티를 사용하여 키 저장소를 작성하십시오 %JAVA_HOME%\bin. Windows에서 이것은 일반적으로 C:\Program Files\Java\jre7\bin입니다.

따라서 Windows에서 명령 창을 열고 해당 디렉토리로 전환하고 다음과 같은 명령을 입력하십시오

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Keytool은 키 저장소의 비밀번호를 제공하고 식별 이름 필드를 제공 한 후 키의 비밀번호를 프롬프트합니다. 그런 다음 키 저장소를 사용자가있는 디렉토리에 my-release-key.keystore라는 파일로 생성합니다. 키 저장소와 키는 입력 한 비밀번호로 보호됩니다. 키 저장소에는 10000 일 동안 유효한 단일 키가 있습니다. 별명은 응용 프로그램에 서명 할 때이 키 저장소를 참조하기 위해 나중에 사용할 이름입니다.

Keytool에 대한 자세한 정보는 다음 문서를 참조하십시오. http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

Android 앱 서명에 대한 자세한 내용은 http://developer.android.com/tools/publishing/app-signing.html을 참조하십시오.


6
개인적으로 지금 4096 사용하고 오히려 기본 1024보다 -keysize 2048 정의에 좋은 소리
scottyab을

9
제 정보는 관리자 권한으로
Intuitisoft

E / TokenRequestor : OAuth2 관련 구성이 잘못되었습니다. 확인하십시오. 자세한 오류 : UNREGISTERED_ON_API_CONSOLE API 콘솔에 SHA1을 입력하여 이미 자격 증명을 만들었습니다.
Rohan Taneja

키 스토어 수동 생성에 대한 문서로 직접 링크 : developer.android.com/studio/publish/…
methodsignature

이 명령을 사용하여 두 개의 암호를 설정하여 일부 프롬프트를 건너 뛸 수 있습니다 keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. 그런 다음 중포 기지에 넣어해야하나요하는 SHA-1을 생성 :keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
알버트 빌라 칼보

158

Android Studio에서 앱 서명

Android Studio에서 앱을 출시 모드로 서명하려면 다음 단계를 따르십시오.

1- 메뉴 표시 줄에서 빌드> 서명 된 APK 생성을 클릭하십시오.


2-Signed APK 생성 마법사 창에서 새로 생성을 클릭하여 새 키 저장소를 생성하십시오. 키 저장소가 이미 있으면 4 단계로 이동하십시오.


3- New Key Store 창에서 그림과 같이 필요한 정보를 제공하십시오. 키는 최소 25 년 동안 유효해야하므로 앱 수명 기간 동안 동일한 키로 앱 업데이트에 서명 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

4- 서명 된 APK 생성 마법사 창에서 키 저장소, 개인 키를 선택하고 두 암호를 모두 입력하십시오. 그런 다음 다음을 클릭하십시오.여기에 이미지 설명을 입력하십시오

5- 다음 창에서 서명 된 APK의 대상을 선택하고 완료를 클릭하십시오. 여기에 이미지 설명을 입력하십시오

참조

http://developer.android.com/tools/publishing/app-signing.html


2
이 답변은 정확하지만 이미 안드로이드 스튜디오가 설치되어있는 경우에만 편리합니다.
Seph Reed

98

셸에서 단일 행 명령을 사용하여 .keystore를 생성하는 방법을 찾고 있었 으므로 다른 응용 프로그램에서 실행할 수 있습니다. 이게 방법이야:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000
  • dname 은 .keystore의 응용 프로그램에 대한 고유 식별자입니다.

    • cn .keystore를 생성하는 개인 또는 조직의 전체 이름
    • ou 프로젝트를 생성하는 조직 구성 단위, 프로젝트를 생성하는 조직의 세분. 전의. android.google.com
    • o 전체 프로젝트의 조직 소유자. ou 보다 높은 범위 입니다. 예 : google.com
    • c 국가 단축 코드. 예 : 미국의 경우 "US"
  • .keystore 내부의 단일 엔터티 인 앱의 별칭 식별자 (많이 가질 수 있음)

  • keypass 해당 별명을 보호하기위한 비밀번호입니다.
  • keystore .keystore 파일이 생성 될 경로 (표준 확장자는 실제로 .ks)
  • storepass 전체 .keystore 컨텐츠 를 보호하기위한 비밀번호입니다 .
  • 유효성.keystore를 사용 하여 앱을 사용할 수있는 날짜가 없습니다.

그것은 나를 위해 정말 잘 작동했으며 콘솔에서 다른 것을 요구하지 않고 파일을 만듭니다. 자세한 내용은 keytool-Key 및 Certificate Management Tool을 참조하십시오 .


나는 그런 종류의 오류는 없었지만 터치를 시도하고 /path/file.keystorestorepass 매개 변수로 지적하십시오.
EliuX

잘 작동합니다! 내 유일한 변화는 내가 안드로이드에 대한 확장명 .jks를 사용한다는 것입니다
Adam Mendoza

2
jks 입니다 일반적으로 Java 공식 키 저장소 확장 프로그램 이지만 대신 Android 앱에keystore 사용하는 것이 좋습니다 .
EliuX

1
위와 같이 -storepass 명령이 다른 행에서 시작 되었기 때문에 @eliasbagley입니다. 한 줄에 모든 것을 쓰면 괜찮을 것입니다.
tormuto

82

명령 행에서 키 저장소 파일을 작성하십시오.

  1. 커맨드 라인 열기 :

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
  2. 입력> 비밀번호를 묻는 메시지가 표시됩니다> 비밀번호를 입력하십시오 (보이지 않음).

    Enter keystore password:
    Re-enter new password:
  3. 입력> 세부 사항을 묻습니다.

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
  4. 입력> Y 입력

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. > 비밀번호 입력을 다시 입력하십시오.

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:

[C : /index.keystore 저장]

  1. 그리고 너는 끝났어 !!!

Eclipse에서 내보내기 :

작성된 키 저장소 파일을 사용하여 Android 패키지를 .apk로 내보내기

  1. 내보낼 패키지를 마우스 오른쪽 버튼으로 클릭하고 내보내기를 선택하십시오. 여기에 이미지 설명을 입력하십시오

  2. Android 애플리케이션 내보내기> 다음을 선택하십시오. 여기에 이미지 설명을 입력하십시오

  3. 다음
    여기에 이미지 설명을 입력하십시오

  4. 기존 키 저장소 사용> .keystore 파일 찾아보기> 비밀번호 입력> 다음을 선택하십시오. 여기에 이미지 설명을 입력하십시오

  5. 별명> 비밀번호 입력> 다음을 선택하십시오. 여기에 이미지 설명을 입력하십시오

  6. APK 대상 찾아보기> 완료 여기에 이미지 설명을 입력하십시오

Android Studio에서 :

[.keystore/.jks]스튜디오에서 키 스토어 생성 ...

  1. 빌드 (Alt + B) > 서명 된 APK 생성 ...을 클릭 하십시오 .
    여기에 이미지 설명을 입력하십시오

  2. 새로 작성을 클릭 하십시오. (ALT + C)
    여기에 이미지 설명을 입력하십시오

  3. 키 저장소 경로 찾아보기 (SHIFT + ENTER)> 경로 선택> 이름 입력> 확인 여기에 이미지 설명을 입력하십시오

  4. .jks/keystore파일 에 대한 세부 사항 작성여기에 이미지 설명을 입력하십시오

  5. 다음
    여기에 이미지 설명을 입력하십시오

  6. 파일
    여기에 이미지 설명을 입력하십시오

  7. Studio 마스터 비밀번호를 입력하십시오 (알 수없는 경우 재설정 할 수 있음) > 확인 여기에 이미지 설명을 입력하십시오

  8. * 대상 폴더 *> 빌드 유형을 선택하십시오.

    release : for publish on app store
    debug : for debugging your application

    Finish 클릭

    여기에 이미지 설명을 입력하십시오

!!!


28

이 튜토리얼 :

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

키 스토어를 처음 만들어야 할 때 매우 도움이되었습니다. 간단하지만 developer.android.com의 지침은 너무 짧습니다.

내가 확실하지 않은 부분은 저장할 위치와 키 저장소 파일 에 부여 할 이름 입니다.

나는 당신이 그것을 어디에 두 었는지 상관없이 안전하게 보관하고 많은 백업을 유지해야합니다. 방금 앱 디렉토리에 넣었습니다.

원하는 것이 무엇이든 파일 이름을 "something.keystore"로 지정하십시오. app_name.keystore를 사용했습니다 . 여기서 app_name 은 내 앱 이름입니다.

다음 부분은 별칭의 이름을 정한 것입니다. 다시 한 번 중요하지 않은 것 같습니다 . app_name을 다시 사용 했습니다. 비밀번호는 이전에 사용한 것과 동일하게 유지하십시오. 나머지 필드를 채우면 완료됩니다.


13

나는 다음 이 가이드를 디버그 키 스토어를 만들 수 있습니다.

명령은 다음과 같습니다.

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999

11

이 명령을 사용하여 debug.keystore를 작성하십시오.

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

5

가장 먼저 알아야 할 것은 디버그 또는 릴리스 모드에 있다는 것입니다. 개발자 사이트에서 "디버그 모드와 릴리스 모드의 두 가지 빌드 모드가 있습니다. 응용 프로그램을 개발하고 테스트 할 때 디버그 모드를 사용합니다. 직접 배포 할 수있는 릴리스 버전의 응용 프로그램을 빌드하려는 경우 릴리스 모드를 사용합니다 Google Play와 같은 애플리케이션 마켓 플레이스에 게시하거나 게시 할 수 있습니다. "

디버그 모드 인 경우 다음을 수행하십시오.
A. 터미널을 열고 다음 을 입력하십시오.

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

참고 : Eclipse의 경우 디버그 키 저장소는 일반적으로 ~ / .android / debug.keystore에 있습니다.

B. 비밀번호를 묻는 메시지가 표시되면 간단히 "android"를 입력하십시오 ...

C. 릴리스 모드 인 경우 다음 지침을 따르십시오.

http://developer.android.com/tools/publishing/app-signing.html <-이 링크는 알아야 할 모든 것을 설명합니다.


2

서명 된 APK를 내보내 키 저장소를 만들 수 있습니다. 서명 된 APK를 내보내거나 빌드하려고하면 키 저장소를 요청합니다.

기존 키 저장소를 선택하거나 새 키 저장소 작성을 클릭하여 새 키 저장소를 쉽게 작성할 수 있습니다.

여기에 키 저장소를 생성하고 서명 된 APK를 생성하는 방법에 대한 매우 유용하고 잘 설명 된 링크

이 링크는 Android Studio로 수행하는 방법을 설명했지만 기억하면 Eclipse와 매우 유사합니다.

조심해

키 저장소를 생성 한 후에는 서명 된 새 APK를 재생성해야하기 때문에 키 저장소를 안전한 곳에 보관하십시오.

Android 스튜디오에서 프로젝트를 내보내려면 어떻게해야합니까?


2

gradle만으로 자동 방법을 제안하고 싶습니다.

** 마지막 명령에서 키 스토어에 대한 추가 매개 변수를 하나 이상 정의하십시오 (예 : 국가 '-dname', 'c=RU'**).

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

프로젝트 동기화 및 빌드시 키 저장소가 생성됩니다.

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.