APK 서명자

APK 서명자 온라인 — APK 파일에 무료로 서명하는 방법

완전한 APK 서명자 가이드 - apksigner, jarsigner 또는 디버그 키 저장소를 사용하여 APK 파일에 서명를 수행하는 방법을 알아보세요. 개발자와 테스터를 위한 무료 단계별 APK 서명 튜토리얼입니다. Android Studio 없이 APK에 서명.

APK 파일에 서명이 필요한 이유는 무엇입니까?

모든 Android 앱은 설치하기 전에 디지털 서명을 해야 합니다. 서명은 여러 가지 용도로 사용됩니다.

  • 앱 개발자의 신원을 확인합니다.
  • APK가 변조되지 않았는지 확인합니다.
  • Android가 앱 업데이트를 원본과 일치시킬 수 있도록 허용합니다.
  • 모든 Android 기기에 설치하는 데 필요합니다.

데스크탑 도구 필요

APK 서명에는 명령줄 도구(JDK/Android SDK)가 필요합니다. 웹 브라우저에서는 이 작업을 수행할 수 없습니다. 아래 가이드에 따라 컴퓨터에서 APK에 서명하세요.

방법 1: apksigner로 서명(권장)

apksigner는 Android SDK 빌드 도구에 포함된 Google의 공식 APK 서명 도구입니다.

1단계: 키 저장소 생성

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

2단계: APK에 서명

apksigner sign --ks my-release-key.jks \
  --ks-key-alias my-key-alias \
  --out signed-app.apk unsigned-app.apk

3단계: 서명 확인

apksigner verify --verbose signed-app.apk

방법 2: jarsigner로 서명(레거시)

# Sign
jarsigner -verbose -sigalg SHA256withRSA \
  -digestalg SHA-256 \
  -keystore my-release-key.jks \
  app-unsigned.apk my-key-alias

# Verify
jarsigner -verify -verbose app-signed.apk

4단계: Zipalign(중요!)

서명 후 zipalign을 사용하여 APK를 최적화합니다.

zipalign -v 4 signed-app.apk aligned-app.apk

디버그 서명(테스트용)

테스트 목적으로 기본 Android 디버그 키 저장소를 사용할 수 있습니다.

# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore

# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
  --ks-key-alias androiddebugkey \
  --ks-pass pass:android \
  app.apk

서명 도구 비교

항목앱 서명자jarsigner
V1 시그니처
V2 서명
V3 시그니처
추천레거시

APK 서명자 - 자주 묻는 질문(FAQ)

APK 서명, 키 저장소, Android 코드 서명에 대한 일반적인 질문

APK 파일에 서명를 사용하려면 apksigner(권장) 또는 jarsigner가 필요합니다. (1) keytool -genkey를 사용하여 키 저장소를 생성하고, (2) apksigner sign --ks my-key.jks --out signed.apk unsigned.apk로 APK에 서명하고, (3) apksigner verify signed.apk로 서명을 확인합니다. 테스트 목적으로 Android 디버그 키 저장소를 사용할 수도 있습니다. 이것이 Android Studio 없이 APK에 서명의 표준 방법입니다.

APK 온라인에 서명를 안전하게 사용할 수는 없지만(APK 서명에는 서버에 업로드하면 안 되는 개인 키 저장소가 필요하기 때문에) 무료 APK 서명자 가이드를 사용하여 로컬 컴퓨터에서 APK 파일에 서명할 수 있습니다. 단계별 튜토리얼은 Google의 공식 apksigner 및 jarsigner 도구를 사용하여 전체 프로세스를 안내합니다. 서명 후 APK 서명 검증자를 사용하여 온라인으로 무료로 서명을 확인하세요.

V1(JAR 서명): 원래 Android 서명 체계입니다. 각 ZIP 항목을 개별적으로 확인합니다. 느리지만 모든 Android 버전과 광범위하게 호환됩니다. V2(APK 서명 체계): Android 7.0에서 도입되었습니다. 전체 APK를 전체적으로 검증하여 보다 빠른 설치를 제공합니다. V3(APK 서명 체계 v3): Android 9.0+는 키 순환을 지원합니다. V4: Android 11.0+, 스트리밍 설치가 가능합니다. 모든 체계를 지원하려면 apksigner를 사용하세요. jarsigner는 V1만 지원합니다.

Android Studio 없이 APK에 서명의 경우: (1) Java JDK 8 이상 설치, (2) apksigner가 포함된 Android SDK 빌드 도구 다운로드 또는 독립 실행형 번들 도구 다운로드, (3) 키 저장소 생성: keytool -genkey -v -keystore my-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias, (4) 서명: apksigner sign --ks my-key.jks --out signed.apk app.apk. 이 방법은 전체 Android Studio를 설치하지 않고도 Windows, Mac 및 Linux에서 작동합니다.

집정렬는 APK 내의 압축되지 않은 데이터를 4바이트 경계로 정렬하는 Android SDK 도구입니다. 이 최적화는 앱이 장치에서 실행될 때 RAM 소비를 줄입니다. 중요: apksigner를 사용하는 경우 서명하기 전에 zipalign을 실행하세요. jarsigner(레거시)를 사용하는 경우 서명 후 zipalign을 실행하세요. 명령: zipalign -v 4 input.apk output.apk. Google Play에서는 제출을 위해 APK를 압축 정렬해야 합니다.

Android 11~15에서 정렬 순서(apksigner 전 zipalign)가 중요한 이유

수정되거나 병합된 APK에 서명할 때 개발자와 모더가 저지르는 가장 빈번한 실수 중 하나는 zipalign ~ 후에를 실행하여 패키지에 서명하거나 Google의 Android SDK apksigner 대신 Java의 레거시 jarsigner 유틸리티를 사용하는 것입니다. APK 서명 체계 v2 및 v3은 ZIP 아카이브의 전체 바이너리 레이아웃에 대해 암호화 해시를 계산하므로 서명 후 zipalign로 바이트 오프셋을 수정하면 v2/v3 서명 블록이 즉시 무효화됩니다.

Android 11(API 수준 30)부터 Android 14 및 15에 엄격하게 적용되는 PackageManager에는 최신 SDK 수준을 대상으로 하는 모든 APK에 대해 두 가지 협상 불가능한 조건이 필요합니다.

  • 압축되지 않은 4바이트 정렬 resources.arsc: 컴파일된 리소스 테이블(resources.arsc)은 Android가 RAM에 복사하지 않고 직접 메모리 매핑(mmap)할 수 있도록 압축되지 않은 상태로 저장(STORED)하고 4바이트 경계에 정렬되어야 합니다. 항상 zipalign -p -f -v 4 input.apk aligned.apk ~ 전에 서명을 실행하십시오.
  • 필수 v2+ 서명 블록: jarsigner(v1 META-INF/ 서명만 작성)를 사용하여 API 30 이상을 대상으로 하는 APK에 서명하면 Android 11~15에서 INSTALL_PARSE_FAILED_NO_CERTIFICATES를 사용한 설치를 거부하게 됩니다. 위의 대화형 명령 생성기를 사용하여 키 저장소에 대한 정확한 apksigner --v2-signing-enabled=true 명령을 빌드하거나 APK 서명 검증자에서 서명된 출력을 확인하세요.
Mst Shaefale가 설계하고 문서화함 수석 개발자 및 Android 패키지 설계자 • Android 12~15에서 검증됨

XAPK to APK 툴킷의 모든 유틸리티는 JavaScript 및 WebAssembly를 통해 브라우저에서 로컬로 100% 실행됩니다. 특정 패키지의 극단적인 사례를 찾았나요? 당사 엔지니어링팀에 신고하세요.