본문 바로가기
  • 인공지능
  • 블록체인
  • 정보보안
코딩 알로하 :: two/하이브리드앱

패스트캠퍼스 챌린지 30일차

by nathan03 2021. 11. 30.
반응형

# 강의 제목 : 누적다운로드 120만+ 1인 개발자와 함께하는 앱 개발 입문 Online

# 강의 목표 : 기초부터 운영까지 앱 개발의 전체 프로세스를 이해한다. 
                  내 이름으로 된 앱을 최대 10개까지 만들어 출시할 수 있다. 
                  앱 개발자로 성장할 수 있는 초석을 다진다. 
                  반응 얻는 앱의 특징과 노하우를 알아간다. 
                  향후 강의 없이도 나만의 앱을 개발할수 있는 실력을 가진다. 

# 강의 요약 : 프로그램 설치부터 기본 문법, 광고 다는 법, 클론코딩을 진행하며 필수 지식을 학습한다. 
                 총 10개의 다른 주제로 실제 사용화 가능한 수준의 앱을 만들어본다.
                 나의 앱을 세상에 선보이기 위한 개발자 등록 및 배포를 진행한다. 
                 강사님의 리뷰/클레임 대응사례 등 앱 성공 포인트를 참고해 1인 개발자로서의 입지를 다진다. 

 # 강의 목차 : Flutter 제작된 앱 배포
                    - 앱 아이콘 준비 - 30일차
                    - Firebase 등록  - 30일차
            
        - App Bundle 만들기 - 30일차
                    - 개발자 등록  
                    - 앱 기본 정보 설정
                    - 스토어 등록 정보 작성 및 출시
                    - 앱 홍보 및 배포, 주의 사항              

# 강의 화면 : 

# 강의 내용 : 앱 아이콘 준비, Firebase 등록, App Bundle 만들기 

1. 배포전 준비하기 
 - 앱 아이콘/이름 준비 
 - Firebase 등록 (https://firebase.flutter.dev) 
 - App Bundle 만들기 
 - 개발자 등록 (google play developer)
 - 앱정보 등록
 - 스토어 등록 정보 작성 
 - 앱 무료 홍보 방법

2. Open Android module in Android Studio 

3. Image Assets 넣기 
app 에서 new > Image Assets 

4. 앱 이름 변경하기, 아이콘 설정  

<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="눈바디 기록앱"
    android:icon="@mipmap/ic_launcher">

5. Firebase 등록
https://firebase.flutter.dev/

 

FlutterFire | FlutterFire

The official Firebase plugins for Flutter

firebase.flutter.dev

https://firebase.flutter.dev/docs/installation/android

 

Android Installation | FlutterFire

Before using FlutterFire on Android, you must first connect to your Firebase project with your Android application.

firebase.flutter.dev

 

6.  Firebase 등록

7. pubspec.yaml 파일에 firebase 라이브러리 추가 

firebase_core: ^0.7.0
firebase_crashlytics: ^0.4.0+1
firebase_analytics: ^7.0.1

8. main.dart - firebase 초기화 추가하기 

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  runZonedGuarded(() async {
    runApp(MyApp());
  }, (error, stackTrace){
    FirebaseCrashlytics.instance.recordError(error, stackTrace);
  });

9. 앱 번들 만들기 
https://docs.flutter.dev/deployment/android

 

Build and release an Android app

How to prepare for and release an Android app to the Play store.

docs.flutter.dev

10. keystore properties

storePassword=Fastcampus012!
keyPassword=Fastcampus012!
keyAlias=eyebody
storeFile=/Users/wetrain/Desktop/eyebody/eyebody.jks
appId=com.yunhoo.eyebody
versionCode=1
versionName=1.0


11. 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')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('keystore.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 29

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId keystoreProperties["appId"]
        minSdkVersion 21
        targetSdkVersion 29
        versionCode keystoreProperties["versionCode"].toInteger()
        versionName keystoreProperties["versionName"]
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.google.firebase:firebase-analytics'
}

apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'



# 교육 소감

# 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

반응형

댓글