안녕하세요 아이티 박사 호입니다. 오늘은 flutter 앱 서명  방법에 대해서 알아보겠습니다.


안드로이드 스튜디오_Kotlin DSL 

 구글 플레이 콘솔에 업로드를 하기 위해서는 앱 서명이 필수 입니다. 

아래 방법을 참고하여 업로드 하시길바랍니다.


1. key 생성 코드 아래 명령어를 터미널 해달 프로젝트 디렉토리에서 실행

keytool -genkey -v -key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias


key 파일이 생성이 되면 

해당 파일을 안드로이드 스튜디오에서 


생성된 key.jks 파일은 android > app 경로에 붙여넣기를 하고

android > app경로에 key.properties 파일을 추가해서 파일내에 아래의 코드를 추가하면 됩니다. 

storePassword=처음에 넣은 비번
keyPassword=마지막에 넣은 비번
keyAlias=key
storeFile=key.jks 키파일 이름

이렇게 추가하고 나선

2. 아래  android > app 경로에 build.gradle.kts 파일을 열어서 초록색 글씨 부분을 추가해주면 됩니다. (참고로 저는 Kotlin DSL  버전입니다.)


import java.util.Properties

import java.io.FileInputStream


plugins {

    id("com.android.application")

    id("kotlin-android")

    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.

    id("dev.flutter.flutter-gradle-plugin")

}


val keystorePropertiesFile = rootProject.file("app/key.properties")

val keystoreProperties = Properties()

if (keystorePropertiesFile.exists()) {

    keystoreProperties.load(FileInputStream(keystorePropertiesFile))

}


android {

    namespace = ""

    compileSdk = flutter.compileSdkVersion

    ndkVersion = flutter.ndkVersion


    compileOptions {

        sourceCompatibility = JavaVersion.VERSION_11

        targetCompatibility = JavaVersion.VERSION_11

    }


    kotlinOptions {

        jvmTarget = JavaVersion.VERSION_11.toString()

    }


    defaultConfig {

        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).

        applicationId = ""

        // You can update the following values to match your application needs.

        // For more information, see: https://flutter.dev/to/review-gradle-config.

        minSdk = flutter.minSdkVersion

        targetSdk = flutter.targetSdkVersion

        versionCode = flutter.versionCode

        versionName = flutter.versionName

    }


    signingConfigs {

        create("release") {

            keyAlias = keystoreProperties["keyAlias"] as String?

            keyPassword = keystoreProperties["keyPassword"] as String?

            storeFile = keystoreProperties["storeFile"]?.let { file(it.toString()) }

            storePassword = keystoreProperties["storePassword"] as String?

        }

    }


    buildTypes {

        release {

            // signingConfig = signingConfigs.getByName("release")  // 이 줄이 있어야 함

            // TODO: Add your own signing config for the release build.

            // Signing with the debug keys for now, so `flutter run --release` works.

            signingConfig = signingConfigs.getByName("debug")

        }

    }

}


flutter {

    source = "../.."

}