일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 카프카
- 코테준비
- 스프링부트공부
- nestjs공부
- 스프링 공부
- Flutter
- 자료구조공부
- JPA예제
- K8S
- 기술면접공부
- 스프링
- 플러터 개발
- DDD
- 기술공부
- 코테공부
- Axon framework
- Kafka
- 스프링부트
- 스프링공부
- JPA공부
- 자바공부
- 프로그래머스
- nestjs스터디
- JPA
- nestjs
- JPA스터디
- JPA 공부
- 알고리즘공부
- querydsl
- 플러터 공부
- Today
- Total
DevBoi
[Flutter] Aos 앱 빌드 릴리즈 하기 본문
일단 플러터 기반으로 빌드함.
옛날에는 스무스하게 진행했는데, 다시 해보니까 바뀐것도 좀 있고 그래서 이슈가 많음
그래서, 정리함 나중에 또 고생하기 싫은 나를 위해...
콘솔 플레이스토어 접속 및 앱을 만듬, 패키지 정보를 넣는거나 기타 앱 정보를 넣는 그런건 인터넷에도 많고 그냥 찾아서 할 수 있음
중요한건 appbundle을 빌드하는데 오류가 많음
Appbundle 빌드
1. 키 생성
이렇게 생성하지 않으면, 나중에 빌드할때 알고리즘 관련 이슈가 발생함
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key -storetype JKS
빌드 파일 관련된 내용은 크게 아래와 같음
app/build.gradle
build.gradle
gradle/wrapper/gradle-wrapper.properties
(없으면 생성) gradle/key.properties
(없으면 생성) gradle/local.properties
1. app/build.gradle
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
///** Sets the compileSdkVersion used by default in Flutter app projects. */
//static int compileSdkVersion = 31
//
///** Sets the minSdkVersion used by default in Flutter app projects. */
//static int minSdkVersion = 16
//
///** Sets the targetSdkVersion used by default in Flutter app projects. */
//static int targetSdkVersion = 31
android {
compileSdkVersion 33
buildToolsVersion "33"
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.inna.innaapp.inna"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
minSdkVersion 21
targetSdkVersion 33
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
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.release
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
}
2. build.gradle
buildscript {
ext.kotlin_version = '1.6.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
3. local.properties
sdk.dir=/Users/ysj/Library/Android/sdk
flutter.sdk=/Users/ysj/Downloads/flutter
flutter.buildMode=release
flutter.versionName=1.0.1
flutter.versionCode=2
flutter.compileSdkVersion=31
flutter.flutterMinSdkVersion=16
flutter.flutterTargetSdkVersion=31
flutter.ndkVersion=21.1.6352462
4. key.properties
storePassword=<비밀>
keyPassword=<비밀>
keyAlias=smithand
#storeFile="/Users/ysj/smith.jks"
storeFile=smithand.jks
flutterRoot = localProperties.getProperty('flutter.sdk')
5.gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
추가로 IDE관련 설정을 좀 맞춰야 한다 (빌드는 로컬에서 하기때문에)
1. Preference > Android Sdk 버전
2. File > project Structure > project settings 아래와 같이 맞추기
3. 없으면 깔아서 변수 추가해주기
잘 보면 33버전 체크되어있다.(없으면 install도 해야한다)
아 마지막으로 플러터에서 안드로이드 빌드는 아래명령어로 하면 알아서 aab 파일이 생성되고 경로도 알려준다 (물론오류도 알려준다)
flutter build appbundle
만약에 추가로 업데이트 된 버전을 출시 하기 위해서는
몇가지 수정을 하고, 빌드를 다시 해줘야 한다.
해당 defaultConfig 에서 버전 코드를 변경해주고 다시 빌드한다.
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.smith.memoapp"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
minSdkVersion 21
targetSdkVersion 33
versionCode 2
versionName flutterVersionName
}
'[Mobile] > [Flutter]' 카테고리의 다른 글
[Flutter] Boot pay로 정기 결제 구현하기 (0) | 2023.06.10 |
---|---|
[Flutter] IOS 앱 빌드 및 배포 (TestFilght) (0) | 2023.06.04 |
[Flutter] 클릭 이벤트 처리와 화면 전환 (0) | 2023.01.09 |
[Flutter] 간단한 로그인 화면 구현 (0) | 2023.01.08 |
[Flutter] 플러터의 위젯 (0) | 2023.01.08 |