본문 바로가기
프로그래밍/안드로이드

[안드로이드] 비트라이즈 배포 시 Signing config 에러 해결 (not found for signing config ..)

by dev_gyu 2024. 10. 4.
728x90

비트라이즈 CI/CD 파이프라인 구축 방법에 대해서는 아래 게시글을 참고바랍니다.

 

2024.09.26 - [프로그래밍/안드로이드] - [안드로이드] 비트라이즈 (Bitrise) 를 통해 손쉬운 CI/CD 파이프라인 구축하기 - 1. Bitrise 회원가입 및 프로젝트 생성

 


안드로이드에서는 APK 파일을 배포할 때 KeyStoreFile 이라는 것이 요구된다.

이유는 안드로이드는 앱을 빌드하기 전에 반드시 서명이 요구되는데 이 서명을 통해서 앱의 출처를 확인할 수 있고, 이 서명이 존재하지 않으면 사용자 장치에 설치할 수 없기 때문이다. (보안상의 이슈로 안드로이드에서 기본적으로 요구한다.)

 

그렇기에 Application Module  Build.gradle.kts 에 다음과 같이 signingConfigs 에서 앱 서명 파일을 설정해주는데, 아래처럼 로컬 환경에서만 접근 가능한 설정을 해주면 비트라이즈에서는 이 설정값을 찾지 못해 not found for signing config ... 라는 에러를 내뱉게 된다.

빌드에 실패한 모습

 

내 게시글을 따라와준 사람이라면 이전 게시글에서 KeyStoreFile 을 ProjectSettings 에 등록한 것이 기억이 날 것이다.

파일을 등록한 곳으로 찾아가면 변수들을 찾을 수 있으니, 해당 위치로 이동해보자.

 

키스토어를 등록하고 변수들이 생성된 모습

만약 키스토어를 정상적으로 등록했다면, 위와 같이 내용들을 확인할 수 있다.

하지만 자신이 키스토어 파일을 등록했음에도 에러가 나는 경우가 존재한다.

이 경우 자신이 다음 두 가지중 하나에 해당하는지 확인이 필요하다.

  1. Android Sign Step 미설정
  2. Application Module 에서 안드로이드 스튜디오에서 직접 APK/AAB 생성을 위해 SigningConfig Keystore 변수들 초기화하였음

1번에 해당하는 경우 바로 전 게시글에서 Android Sign Step 설정하는 법을 확인

2024.08.30 - [프로그래밍/Android] - [안드로이드] 비트라이즈 (Bitrise) 를 통해 손쉬운 CI/CD 파이프라인 구축하기 - 2. 워크플로우 생성 및 슬랙 연동, 구글 플레이 배포하기

 

2번에 해당하는 경우 다음을 따르면 된다.

우선 프로젝트의 Application Module -> Build.gradle.kts 로 다시 이동하자

그리고 signingConfigs 에 다음과 같이 설정해준다

val storeFileValue = if (System.getenv("BITRISE_KEYSTORE_PATH") != null) {
    file(System.getenv("BITRISE_KEYSTORE_PATH"))
} else {
    file(이전 설정값)
}

keyAlias = System.getenv("BITRISEIO_ANDROID_KEYSTORE_ALIAS") ?: 이전 로컬 설정값
keyPassword = System.getenv("BITRISEIO_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD") ?: 이전 로컬 설정값
storeFile = storeFileValue
storePassword = System.getenv("BITRISEIO_ANDROID_KEYSTORE_PASSWORD") ?: 이전 로컬 설정값

 

Build.gradle.kts 에 설정되었던 변수들을 위의 값으로 변경해주자.

이렇게 되면 System 이 환경 변수 Key 에 해당하는 값을 찾을때, 이 값이 존재하면 해당 값으로 변수가 초기화되고 찾지 못하면 기본 설정값으로 초기화된다.

 

즉, 비트라이즈에서는 환경 변수를 사용하므로 getenv 로 값을 찾지만 우리가 로컬에서 파일을 생성할때는 환경 변수를 사용하지 않으므로 기본 설정값으로 빌드가 돌아간다는 것이다.

 

위에서 설정된 BITRISE_KEYSTORE_PATH 의 경우 워크플로우가 실행되면, 우리가 생성한 위 Script Step 에 의해 비트라이즈에 등록된 KeyStore URL 을 통해 키스토어를 다운로드하고 이 다운로드 경로를 BITRISE_KEYSTORE_PATH 가 참조하도록 설정된다.

 

추가로 안드로이드 스튜디오 코드 내에 System.getenv 설정을 해주고 Script 도 추가하는 경우 Android Sign Step 은 설정해주지 않아도 된다.

 

** 위의 작업들을 하지 않는다면 비트라이즈 배포가 불가능하니 참고하여 작업하도록 하자. **

728x90