업로드된 모든 번들에 서명해야 합니다. 해결

Hwang·2024년 9월 25일
0

Google Play 서명을 사용하지 않고, 직접 서명한 AAB 파일을 업로드해야 하는 상황이라면, 앱 번들에 서명을 추가해야 합니다.

키스토어 파일 확인: Google Play 앱 서명 서비스를 활성화할 때 사용한 업로드 키의 키스토어 파일을 찾습니다. 만약 키스토어 파일을 생성한 적이 없다면, 아래 명령어를 사용하여 업로드 키를 생성해야 합니다.​

keytool -genkey -v -keystore ~/my-upload-key.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias upload

key.properties 파일 설정: 앱을 서명하기 위해 key.properties 파일을 설정해야 합니다. 다음과 같이 android 폴더 아래에 key.properties 파일을 만듭니다.

storePassword=

keyPassword=

keyAlias=upload

storeFile=<path-to-your-keystore.jks>

build.gradle 파일에 서명 설정 추가: android/app/build.gradle 파일에 signingConfigs를 추가해 서명 설정을 적용합니다.

signingConfigs {

release {

    keyAlias keystoreProperties['keyAlias']

    keyPassword keystoreProperties['keyPassword']

    storeFile file(keystoreProperties['storeFile'])

    storePassword keystoreProperties['storePassword']

}

}

buildTypes {

release {

    signingConfig signingConfigs.release

    minifyEnabled true

    shrinkResources true

    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

}

}

앱 번들 서명 및 빌드: 이제 서명된 앱 번들을 빌드합니다. 서명 키 설정이 완료되면 아래 명령어로 앱 번들을 빌드합니다.

flutter build appbundle

오류 해결 : keytool : 'keytool' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포 함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.

위 같은 keytool 명령어를 실행할 때 오류가 발생한 이유는 keytool이 시스템 경로에 설정되어 있지 않아서입니다. keytool은 Java Development Kit (JDK)의 일부이므로, JDK가 설치되어 있고 keytool이 시스템 경로에 설정되어 있어야 합니다.

JDK 를 다운 받아 줍니다.

https://www.oracle.com/kr/java/technologies/downloads/

Download the Latest Java LTS Free
Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

여기서 exe 파일로 다운 받습니다.

(https://download.oracle.com/java/23/latest/jdk-23_windows-x64_bin.exe (sha256) )

다운로드가 완료되면 환경 변수를 설정 합니다.

단계별로 환경 변수 설정 방법:

  1. JDK 설치 경로 확인

JDK 설치 경로를 확인합니다. 기본적으로 JDK는 C:\Program Files\Java\jdk-XX.X.X_X\bin 경로에 설치됩니다.

예시 경로: C:\Program Files\Java\jdk-23\bin

  1. 시스템 환경 변수 설정

내 컴퓨터 또는 이 PC 아이콘을 오른쪽 클릭합니다.

속성을 클릭합니다.

고급 시스템 설정을 클릭합니다. (왼쪽 메뉴에서 선택)

시스템 속성 창에서 환경 변수 버튼을 클릭합니다.

  1. Path 변수 수정

환경 변수 창에서 아래쪽 시스템 변수 섹션으로 이동합니다.

시스템 변수 목록에서 Path를 찾아 클릭한 후, 편집 버튼을 클릭합니다.

  1. JDK의 bin 폴더 경로 추가

환경 변수 편집 창에서 새로 만들기 버튼을 클릭합니다.

JDK의 bin 경로를 추가합니다

.C:\Program Files\Java\jdk-23\bin

입력한 후 확인을 눌러 창을 닫습니다.

  1. 설정 확인

새로운 CMD 창에서 아래 명령어를 실행하여 설정이 올바르게 되었는지 확인합니다.

java -version

or

keytool

java -version 명령어가 JDK 버전을 출력하고, keytool 명령어가 정상적으로 실행된다면 환경 변수 설정이 성공적으로 완료된 것입니다.

  1. keytool을 사용해 업로드 키 생성

이제 CMD를 열고

keytool -genkey -v -keystore C:\Users\사용자명\upload-key.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias upload

아래 코드를 입력해줍니다

이 명령어를 실행하면 몇 가지 정보를 입력하라는 메시지가 나옵니다:

비밀번호 설정: 키스토어에 접근할 때 사용할 비밀번호를 설정합니다.

이름, 조직, 위치 정보: 간단한 정보들을 입력합니다.

업로드 키의 비밀번호 설정: 키에 대한 비밀번호도 입력합니다.

성공적으로 입력하면 upload-key.keystore 파일이 지정된 경로에 생성됩니다.

(비밀번호는 되도록 숫자 문자로만 특수문자는 인코딩 오류 날수도)

  1. key.properties 파일 생성

Flutter 프로젝트의 android/ 폴더 아래에 key.properties 파일을 생성하여 업로드 키 정보를 관리합니다.

파일 생성: android/ 폴더에 key.properties 파일을 생성합니다.

파일 내용 추가: 아래 내용을 key.properties 파일에 추가하고, 각 항목을 키스토어 생성 시 사용한 정보로 대체합니다.

storePassword=<키스토어 비밀번호>

keyPassword=<키 비밀번호>

keyAlias=upload

storeFile=C:\Users\jkimg\upload-key.keystore

3.build.gradle 파일 수정

android/app/build.gradle 파일을 열고 서명 설정을 추가해야 합니다. 아래와 같이 서명 설정을 추가합니다.

android {

...

signingConfigs {

    release {

        keyAlias keystoreProperties['keyAlias']

        keyPassword keystoreProperties['keyPassword']

        storeFile file(keystoreProperties['storeFile'])

        storePassword keystoreProperties['storePassword']

    }

}

buildTypes {

    release {

        signingConfig signingConfigs.release  // 서명 정보 추가

        minifyEnabled true

        shrinkResources true

        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

    }

}

}

  1. 앱 번들 빌드

서명 설정이 완료되면, 서명된 앱 번들(AAB) 파일을 생성합니다. 아래 명령어를 사용하세요:

flutter build appbundle

생성된 앱 번들 파일은 다음 경로에 저장됩니다:

build/app/outputs/bundle/release/app-release.aab

0개의 댓글