“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”- Jef Raskin
맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도
Flutter Android Build:APK
플러터로 안드로이드 배포하는 방법!
플러터로 만들어진 프로그램을 안드로이드로 배포를 하기 위해 APK를 배포를 해야 합니다. 그렇게 배포를 하기 위해선 어떻게 해야 하는지 한번 알아보도록 합시다, 애플의 경우 앱스토어를 통해 무조건 배포를 해야 하는 것으로 알고 있어 아직 알아보고 있습니다 이경우 제가 더 알아보고 어떻게 하면 될지 알려드리도록 하겠습니다 이번엔 안드로이드 APK를 만들어 배포하는 방법에 대해서 알아보겠습니다.
목차
플러터 안드로이드 배포방법
Android Build
안드로이드로 배포하기 위해 APK 빌드하는 방법은 너무 간단합니다. 저의 경우 vscode를 사용하여 개발을 하고 있기 때문에 vscode 기준으로 설명을 드리겠습니다. 다른 툴을 사용하는 분들도 비슷한 방식으로 하실 수 있습니다.
Commander cd
[Project Folder Name]
cd 명령어를 통해 자신의 프로젝트 폴더로 이동을 합니다. vscode를 사용하는 분들은 vscode에서 프로젝트를 열게 되면 아래 탭 중 터미널을 선택을 하면 기본적으로 자신의 프로젝트 폴더에서 명령어를 입력을 할 수 있습니다.
// release의 경우 기본값이기 때문에 입력을 따로 안해도 됩니다.
flutter build apk --release
flutter build apk --split-per-abi // 프로젝트 루트경로에 빌드한다.
// 기기를 연결하고 해당 기기에 설치하는 방법은 직접 apk 파일을 옮겨 설치를 할 수 있고, 명령어를 입력하여 설치를 할 수 있습니다.
flutter install
위와 같이 flutter build 명령어를 입력을 하면 기본적으로 Project Folder에 들어가 build/app/outputs/apk/release에 apk가 생성이 됩니다. 생성되는 이름은 app-release.apk로 생성이 됩니다. 그리고 난 뒤 기기를 직접 연결하여 flutter install을 하게 되면 바로 설치가 되는 것을 확인을 할 수 있으며 apk 파일을 스마트폰에 옮겨 눌러 실행을 하면 설치가 진행이 됩니다.
출처를 알 수 없는 앱 설치방법
스마트폰에서 설정을 들어갑니다, 보안 및 개인정보 보호를 선택을 합니다. 기타 보안 설정을 선택하고 출처를 알 수 없는 앱 설치를 선택하고 허용을 하면 설치를 할 수 있습니다.
앱 서명방법 및 암호화
// Windows
keytool -genkey -v -keystore c:/Users/[User Name]/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
// Mac
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
// 생성된 파일을 /android/app/ 폴더로 옮깁니다. 그리고 난 뒤 key.properties 생성합니다.
storePassword=[Password]
keyPassword=[Password]
keyAlias=key
storeFile=./key.jks
// 암호화를 하기 위하여 아래와 같이 추가합니다. [Proguard Settings]
/android/app/proguard_rules.pro
// 아래와 같이 내용을 넣고 저장을 합니다.
## Flutter wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-dontwarn io.flutter.embedding.**
// Gradel Settings - Reference to key.properties
// 경로 : /app/build.gradle
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
// Android 위에 추가를 한다. 그리고 buildType을 release 변경 후 상단에 아래와 같이 추가합니다.
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
--
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
앱을 서명을 하고, 암호화를 진행합니다. 위 내용을 참고하여 순서대로 진행하시면 됩니다.
마무리
플러터 프로젝트를 안드로이드 빌드하는 방법에 대해서 알아봤습니다. 공식문서들과 함께 여러 에러들을 겪으며 다양한 문서들을 참고를 했지만 보면서 느낀 점은 이미 내가 겪은 문제들을 많은 경력자 분들이 이미 다양한 문서로 정리를 하고 있고 참고할 문서도 생각보다 많이 있어 놀랬습니다. 이 글을 보는 분들 중 혹시나 하면서 궁금한 사항이 있다면 댓글을 통해 남겨주세요! 또한 이 글이 많은 분들에게 참고하여 도움이 될 수 있는 글이 되었으면 좋겠습니다!