서명 된 APK Android Studio 생성


85

저는 Android 개발이 처음이고 방금 첫 번째 앱을 마쳤습니다. Android 스튜디오에서 서명 된 APK를 생성하고 싶습니다. 개발자 문서를 읽었지만 단계를 이해할 수 없습니다. 를 클릭 Build>Generate Signed APK...하면 다음을 묻는 대화 상자가 표시됩니다.

Keystore path  //with two options create new and choose existing
Keystore password
Key alias
key password

인터넷 검색 후에도 키 저장소가 무엇인지 알 수 없습니다. 내가 create new선택하면 경로를 선택하고 .jks내가 가지고 있지 않은 파일을 찾도록 요청 합니다! 누구든지 서명 된 APK를 생성하기 위해 단계를 설명하고 나열 할 수 있습니까?


2
이 답변은 꽤 좋습니다 : stackoverflow.com/a/6849903/2927883
Pull

답변:


45

Keytool 바이너리 또는 exe를 사용하여 개인 키 저장소를 생성하십시오. 여기 지침 . 그런 다음이 키 저장소를 사용하여 앱에 서명 할 수 있습니다. Java를 설치할 때 Keytool이 설치됩니다.

참고 :이 키 저장소로 서명하여 재생중인 앱을 게시하면 이후 업데이트에 동일한 키 저장소를 사용해야하므로이 키 저장소를 저장 / 백업하십시오. 따라서 백업하는 것이 중요합니다.

HTH.


나는 여기서 질문이 다르다고 생각한다. 사용자는 이름을 딴 .jks 파일을 선택하는 방법을 혼동한다. 정답은 아래 @jackspier입니다
Raj

98

나는 아무도 질문에 올바르게 대답했다고 생각하지 않으므로 같은 질문을 가진 다른 사람에게 도움이 될 것입니다.

1 단계 Build> Generate Signed APK> Next로 이동합니다 (선택된 모듈은 대부분 "앱"이라고하는 모듈입니다).

2 단계 새로 만들기를 클릭합니다.

3 단계 기본적으로 양식에 필요한 세부 정보를 입력합니다. 혼란스러운 부분은 키 저장소 경로를 요청하는 곳 입니다. 3 개의 점 ( "...")이있는 오른쪽 아이콘을 클릭하면 .jks 파일을 탐색하고 선택하도록 요청하는 탐색기 창이 열립니다. 키 저장소 파일을 저장할 폴더로 이동 한 다음 상기 파일 이름 이 창 하단의 상자, 단순히 취향의 이름을 입력하고 OK 버튼을 지금 클릭 할 수 있습니다. 무슨 일이 일어나고 있는지 창은 실제로 .jks 파일을 선택하라는 메시지가 아니라 원하는 위치와 이름을 제공하기를 원한다는 것입니다.

4 단계 에서 클릭 다음 선택합니다 및 릴리스 와 짜잔를! 당신은 끝났습니다.


파일은 어디에 저장됩니까? 감사합니다
Imogen Johnson

'Build'아래에 'Generate Signed APK'가 없다고 여기 에 작성했습니다 .
Mark Ebden

24

여기 내 대답을 읽으십시오.

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

이것은 서명 된 APK를 생성하고 Android Studio에서 키 저장소 파일을 생성하는 방법을 단계별로 안내합니다.

링크에서 단계적으로 스크린 샷을 추가 했으므로 쉽게 할 수 있습니다.

짧은 대답

키 저장소 파일이 있으면 간단하게 똑같이 할 수 있습니다.

빌드로 이동 한 다음 서명 된 APK 생성을 클릭합니다.


16

Google에서 권장하는 build.gradle 파일을 구성하는 "공식적인"방법이 여기 에 설명되어 있습니다 .

기본적으로 signingConfig 를 추가합니다 . 여기서 키 저장소의 비밀번호 위치를 지정합니다. 그런 다음 릴리스 빌드 유형에서 해당 서명 구성을 참조하십시오.

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("myreleasekey.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...

15
  1. 빌드 -> 서명 된 APK 생성으로 이동합니다. 안드로이드 스튜디오에서.
  2. 새 창이 나타나면 새로 만들기 ... 버튼을 클릭합니다.
  3. 그런 다음 아래와 같이 세부 정보를 입력하고 확인 -> 다음을 클릭 합니다. 여기에 이미지 설명 입력
  4. 릴리스빌드 유형 을 선택하고 완료 버튼을 클릭 합니다 .
  5. 아래와 같이 APK 생성 성공 메시지가 표시 될 때까지 기다리 십시오.여기에 이미지 설명 입력
  6. 서명 된 APK 파일을 보려면 탐색기표시를 클릭하십시오 .

자세한 내용은 링크 로 이동 하십시오.


4

간단한 5 가지 시각적 단계 :

1 단계 : 빌드-> 서명 된 빌드 / APK 생성을 클릭합니다 .

짓다

2 단계 : APK 선택-> 다음 APK

3 단계 : 클릭Create new ... 새로 만들기 ...

4 단계 : 필요한 세부 정보 입력 가득 따르다

5 단계 : 빌드 변형 debug/release및 서명 버전 선택 (V2) 여기에 이미지 설명 입력

이제 서명 된 APK 빌드가 시작되고 사용 가능하면 오른쪽 하단에 팝업이 표시됩니다. locate서명 된 APK 파일을 받으려면 클릭 하세요.

쉬운?


3

나는 같은 문제가 있었다. 파일이 생성 될 것이라고 생각하는 튜토리얼의 /home/tim/android.jks 파일로 필드를 채웠습니다. Enter를 클릭하면 파일을 찾을 수 없다는 메시지가 표시됩니다. 하지만 파일을 만들려고 할 때 jks 파일을 만들 수 없습니다. 나는 안드로이드 스튜디오를 닫고 다시 실행했고 잘 작동했습니다. 내 파일을 올바르게 추가하려면 ...를 눌러야했습니다. 서명 된 apk 마법사 생성-> 새 키 저장소-> 누르십시오 ... 키 저장소 파일을 선택하십시오. 파일 이름을 입력하십시오. 나는 openjdk를 사용하고 내 자신의 키 파일을 만들어야한다고 생각했지만 안드로이드 스튜디오에 내장되어 있습니다.


2

빌드 그레이드에 이것을 추가 할 수 있습니다.

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}

그런 다음 keyHash가 필요한 경우 프로젝트 루트 폴더의 android stdio 터미널을 통해 이와 같이하십시오.

keytool -exportcert -alias my.keystore -keystore app/my.keystore.jks | openssl sha1 -binary | openssl base64


0

참고 : React Native 프로젝트 인 경우

Android Studio에서 루트 프로젝트 폴더를 열면이 페이지의 다른 답변에 제안 된 옵션이 표시되지 않습니다.

여기에 이미지 설명 입력

해결책

루트 폴더 대신 폴더를 열었습니다 packages/native/android. 그런 다음 서명 된 APK를 빌드하는 옵션 만 볼 수 있습니다.

https://i.stack.imgur.com/k8Elg.png

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