2014-12-19 2 views
12

저는에 gradle (assembleRelease)을 사용하여 출시 apk를 생성하고 있습니다.서명 문제 Android 출시 빌드 "키 저장소에서 키를 읽지 못했습니다."

나는 (응용 프로그램 내에서)

RELEASE_STORE_FILE=filename.keystore 
RELEASE_STORE_PASSWORD=**** 
RELEASE_KEY_ALIAS=alias 
RELEASE_KEY_PASSWORD=**** 

내 build.gradle 파일 gradle.properties 로그인 관련

내가 지정한 세부 사항을 프로젝트/응용 프로그램/filename.keystore에서 키 저장소 파일을 저장 한 파일은 내가

다음과 같은 Gradle을 파일에 서명 구성을 지정한

signingConfigs { 
     release { 

      storeFile file(RELEASE_STORE_FILE) 
      storePassword RELEASE_STORE_PASSWORD 
      keyAlias RELEASE_KEY_ALIAS 
      keyPassword RELEASE_KEY_PASSWORD 
     } 
    } 

서명을 다음과 관련이있다 내가 오류 다음

Error:Execution failed for task ':app:package<flavor>Release'. 
> Failed to read key from keystore 

을 내가 점점 계속 릴리스 빌드를 만들려고 할 때 16,

buildTypes { release { signingConfig signingConfigs.release } } 

그러나, 나는

  • 가 있는지 확인하기 위해 잘못된 암호를주는 다음과 같은 시도 파일을 찾을 수 있습니다. 올바른 경로와 함께 다음 오류가 발생합니다. 파일을 찾을 수 있다고 가정합니다. 키 스토어가 훼손되었거나 암호가

입력을 감사합니다

정확 :

"는"저장소에서 키를 읽지 못했습니다!

+1

동일한 문제가 발생했으나 아직 파악하지 못했습니다. ( – Markymark

+1

android Studio에서 빌드> 서명 된 APK 생성으로 APK에 서명을 시도했습니다. 우스운 일은 서명이 성공하는 것입니다. 그러나 내가 gradl 작업 "assmbleRelease"를 사용하면 오류가 발생합니다. 지금은 qa 동안 자동 배치를 가능하게하는 새로운 키를 만들었습니다. – HasaniK

+2

@ Marky17과 같은 문제가있는 다른 사람들이 해결책을 찾아 낼 때까지 작업 해 봅니다. 입력 한 "키 별칭"이 키 저장소에 없기 때문에이 문제에 직면했습니다. [이 답변] (http://stackoverflow.com/a/28119723/1276636) 나를 도왔습니다. – Sufian

답변

26

내 문제는 무작위로 keyAlias을 입력했기 때문입니다. IDE (IntelliJ Idea 및 Android Studio : 빌드 메뉴 - 서명 된 APK 생성)를 사용하여 APK에 서명하려고 할 때 키 별칭을 입력하기위한 텍스트 상자 옆에있는 타원형 버튼 (...)을 클릭하여 올바른 키 별칭을 찾았습니다. 이전에 내 키 저장소로 설정했습니다. 키 스토어를 생성 할 때 키 스토어에 대해 설정 한 암호와 키 별칭과 동일해야하므로 임시 키와 임시 키를 입력하지 않는지 다시 한 번 확인하십시오.

암호 또는 키 별칭을 잊어 버린 경우이 키없이 키 저장소를 읽을 수 없으므로 새 키 저장소를 만들어야합니다. Lastpass와 같은 암호 관리자에서이 두 속성을 저장하고 키 저장소 파일을 첨부하는 것이 좋습니다.

+1

정말 고마워요! – Ilario

+1

당신은 제 시간을 많이 절약했습니다! 내 오래된 APK들 중 한 명과 일하고 있었다. 고맙습니다! – devgrg

1

나는 완전히이 문제를 해결하지 않은,하지만 나는 그것이 '전보 \ TMessagesProj \의 build.gradle'에서 다음 항목에 관한 생각 : 디버그 설정은 우리로 설정되어 있는지

signingConfigs { 
    debug { 
     storeFile file("config/release.keystore") 
     storePassword RELEASE_STORE_PASSWORD 
     keyAlias RELEASE_KEY_ALIAS 
     keyPassword RELEASE_KEY_PASSWORD 
    } 

    release { 
     storeFile file("config/release.keystore") 
     storePassword RELEASE_STORE_PASSWORD 
     keyAlias RELEASE_KEY_ALIAS 
     keyPassword RELEASE_KEY_PASSWORD 
    } 
} 

주 'release.keystore'.

암호 및 별칭은 'Telegram \ gradle.properties'에 저장되며 APK에 서명하고 자신의 서명 키를 가리 키도록 디버그 라인을 변경할 때 사용하는 것으로 변경했습니다. Android Studio).

예.

디버그 { storeFile 파일 ("경로 /로/당신의/서명/키/ApkSigning.jks") ... }

에 라인을 변경하고 Gradle을에서 적절한 암호 및 별칭을 설정 특성 파일.

희망이 있습니다.

4

내 문제는 내가 gradle.properties 파일에 여분의 공백이 있다는 것이 었습니다. 이 같은 항목이있는 경우 그래서 : 나는 별명과 암호에 큰 따옴표를 사용했다

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\r\n) 
4

아래와 같이 :

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\s)(\r\n) 

확인 모든 항목에 대한 선도적 인 공백은 없다

storePassword="spass" 
keyAlias="kalias" 
keyPassword="kpass" 

제거 따옴표 내 문제를 해결

storePassword=spass 
keyAlias=kalias 
keyPassword=kpass 
,
관련 문제