App Center의 Android 코드 서명 설정
Important
Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. 완전히 사용 중지될 때까지 Visual Studio App Center를 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.
팁
Xamarin.Android 사용자의 경우 프로세스가 약간 다릅니다. 자세한 내용은 Xamarin.Android 코드 서명 가이드를 참조하세요.
앱 서명은 개발 프로세스 중에 실제 디바이스에서 앱을 실행하거나 베타 프로그램 또는 Play 스토어를 통해 배포해야 하는 요구 사항입니다. 코드 서명이 없으면 앱은 에뮬레이터에서만 실행할 수 있습니다.
App Center가 디버그 빌드 유형을 사용하여 Android 애플리케이션을 빌드하는 경우 개발자를 위한 키 저장소는 필요하지 않지만 업로드할 수 있습니다. 이러한 빌드는 자동으로 디버그 키로 서명된 코드가 됩니다. 배포될 릴리스 빌드의 경우 App Center에 키 저장소를 업로드합니다.
키 저장소 생성
현재 키 저장소가 없는 경우 Android Studio에서 키 저장소를 생성할 수 있습니다. Android Studio의 공식 사용자 가이드에서 APK에 서명하는 키 저장소를 생성하는 방법에 대한 지침을 찾을 수 있습니다.
코드 서명 설정
App Center는 Android 앱에 대한 코드 서명을 설정하는 세 가지 방법을 지원합니다. 세 가지 방법 모두에 대해 먼저 빌드 구성으로 이동하여 코드 서명을 사용하도록 설정해야 합니다.
- App Center에서 앱으로 이동합니다.
- 빌드로 이동합니다.
- 목록에서 선택하여 구성하려는 분기로 이동합니다.
- 오른쪽 위 모서리에 있는 '설정' 메뉴를 사용하거나 분기가 아직 빌드하도록 구성되지 않은 경우 구성을 선택합니다.
- 서명 빌드를 사용하도록 설정합니다.
- 저장을 선택합니다.
그런 다음 시나리오에 따라 아래 섹션의 세 가지 옵션 중 가장 적합한 옵션을 사용합니다. 첫 번째 옵션에는 리포지토리에 대한 자격 증명을 체크 인하는 작업이 포함되며, 다른 두 옵션은 App Center를 사용하여 자격 증명을 대신 처리합니다.
Android 11을 기준으로 APK 서명자(API 수준 30을 사용하는 경우)를 사용해야 합니다. "APK 서명 체계 v2가 필요합니다."라는 몇 가지 추가 체계가 설정되기 때문에 필수입니다. App Center(2020년 12월 17일 이후)는 이전에 사용된 JAR 서명자 대신 APK 서명자를 사용하여 Android 애플리케이션에 내부적으로 서명합니다. App Center에서 APK 서명자를 사용하도록 설정하는 기능의 일환으로 Android 서명 작업 V3가 구현되었으며, 새 서명 태스크에 대한 요구 사항은 키 저장소 파일을 저장하는 방법을 변경하는 것이었습니다. 키 저장소 파일을 AzDO 보안 파일에 저장(Android 서명 빌드 및 릴리스 작업 - Azure Pipelines | Microsoft Docs).
Warning
2020년 12월 17일 이전에 키 저장소 파일을 업로드한 빌드 구성은 APK 서명 체계 v2 서명 방법(jarsigner)을 계속 사용합니다. APK 서명 체계 v3 서명 흐름을 사용하려면 사용자가 키 저장소 파일을 다시 업로드하고 분기 구성을 저장하기만 하면 됩니다.
참고 항목
Android Gradle 플러그 인 버전 4.1.x의 사용은 완전히 지원되지 않습니다. 이 버전을 사용하려면 파일에 다음 옵션 설정을 gradle.properties
추가해야 합니다.
android.useNewApkCreator = false
A. Gradle 구성에 모든 항목 저장
(앱 수준) 파일에서 build.gradle
서명 세부 정보를 지정할 수 있습니다. 모든 자격 증명 및 키 저장소 정보와 함께 서명 세부 정보가 리포지토리에 표시됩니다. 먼저 코드에 필요한 모든 항목을 추가하고 리포지토리에 체크 인합니다. 그런 다음 App Center 의 빌드 구성에서 내 Gradle 설정을 사용하도록 설정하면 서명이 자동으로 처리되도록 완전히 설정됩니다.
B. App Center에 모든 항목 업로드
App Center를 통해 키 저장소를 업로드하고 서명 자격 증명을 구성할 수 있습니다. 이 경우 App Center는 먼저 Android 앱을 빌드한 다음 성공적인 빌드 후 서명 단계를 실행합니다.
참고 항목
빌드는 한 번만 서명할 수 있습니다. 선택한 빌드 변형에 대한 Gradle 구성의 서명 구성과 충돌하지 않는지 확인합니다. App Center와 Gradle 파일 모두에서 서명 설정이 있는 경우 빌드가 두 번 서명되어 충돌이 발생할 수 있습니다.
다음과 같이 App Center에서 빌드 구성을 설정합니다.
- 내 Gradle 설정을 사용하지 않도록 설정하면 서명이 자동으로 처리되도록 완전히 설정됩니다.
- 키 저장소 파일을 Keystore 파일 업로드 파일 드롭에 업로드합니다. 파일을 상자로 끌어다 놓거나 클릭하고 파일을 찾아볼 수 있습니다. 키 저장소 파일에 확장
.keystore
명이 있거나.jks
. - 해당 필드에 키 저장소 암호, 키 별칭 및 키 암호를 입력합니다. 이러한 값은 빌드에 서명할 때 Android Studio에 입력한 값과 동일합니다.
C. 환경 변수를 사용하여 리포지토리에 서명 세부 정보 저장
리포지토리에 이미 키 저장소가 포함되어 있지만 자격 증명을 저장하지 않으려는 경우 이 메서드를 사용합니다. 빌드 시 자격 증명은 Gradle 빌드에 시스템 속성으로 제공됩니다. 이를 사용하는 방법에 대한 다음 코드 샘플을 참조하세요.
android {
signingConfigs {
releaseSigningConfig {
storeFile rootProject.file("app/testapp.jks")
storePassword System.getProperty("APPCENTER_KEYSTORE_PASSWORD")
keyAlias System.getProperty("APPCENTER_KEY_ALIAS")
keyPassword System.getProperty("APPCENTER_KEY_PASSWORD")
}
}
buildTypes {
release {
signingConfig signingConfigs.releaseSigningConfig
}
}
}
위의 코드에서 빌드에 삽입된 시스템 속성 뒤에 있는 값을 보호하면 서명 자격 증명이 안전하게 유지됩니다. 값은 암호화되며 빌드 시 빌드 에이전트에서만 사용할 수 있습니다. App Center를 통해 값을 제공할 수 있습니다. 값을 하드 코딩하고 리포지토리에 체크 인할 수도 있습니다. App Center를 사용하여 값을 보호하려면 다음을 수행합니다.
- 빌드 구성으로 이동합니다.
- 내 Gradle 설정이라는 확인란이 선택되지 않은 서명을 자동으로 처리하도록 완전히 설정되어 있는지 확인합니다.
- 해당 필드에 키 저장소 암호, 키 별칭 및 키 암호를 입력합니다. 이러한 값은 빌드에 서명할 때 Android Studio에 입력한 값과 동일합니다.
제품 버전을 사용하는 경우 모든 릴리스 구성에서 올바른 서명 구성을 사용하도록 위의 코드를 조정해야 할 수 있습니다.
참고 항목
(앱 수준) 파일의 buildTypes
섹션 build.gradle
내에서 옵션을 사용하는 signingConfig
경우 App Center 빌드 중에 코드 서명 오류가 발생할 수 있습니다. 이는 Android 버전 0.60.x 이상에서 React Native를 사용하는 앱에 특히 관련이 있습니다.
Execution failed for task ':app:validateSigningRelease'.
Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'
이 문제를 해결하려면 리포지토리에 서명하는 데 사용되는 적절한 키 저장소를 푸시하고 내 Gradle 설정을 사용하도록 설정 하여 App Center 포털의 빌드 구성에서 자동으로 서명을 처리하도록 설정해야 합니다.
App Center 포털에서 빌드 구성에 키 저장소를 업로드한 경우 React Native 프로젝트 템플릿의 기본 상태에서 업데이트하지 않은 경우 이 방법을 사용하려면 (앱 수준) 파일의 build.gradle
섹션에서 옵션을 buildTypes
삭제 signingConfig
해야 합니다.