2021 06 Flutter
Flutter Utilze Flutter 플레이스토어 배포

#1. Android Summary, Timeline[ Summary ][ Launcher Icon ]애플리케이션을 배포하기 위해 런처 아이콘을 변경한다.플러터 기본 아이콘으로 진행하려는 사람은 수행하지 않아도 된다.아래의 경로에 512 x 512 사이즈의 아이콘을 생성한다./{Project Name}/assets/icon/icon.png 아이콘을 쉽게 변경하기 위해서는 flutter_auncher_icons 패키지를 이용하면 수월하다.pubspec.yaml 파일에 패키지 설치와 아이콘 설정을 진행한다.# /{Project Name}/pubspec.yaml dev_dependencies: flutter_launcher_icons: "^0.8.0" flutter_icons: android: "launcher_icon" ios: true image_path: "assets/icon/icon.png"설정이 끝난 후 패키지 설치와 아이콘을 변경하기 위한 명령어를 실행한다.$ flutter pub get $ flutter pub run flutter_launcher_icons:main[ Application Sign ]구글 플레이스토어에 출시를 위해서는 앱에 디지털 서명이 필요하다.keystore를 만들어 애플리케이션에 디지털 서명이 가능하다.*참고. 항상 개인적으로 보관해야 하는 파일로, 공개된 저장소에 올려서는 안됩니다.$ keytool -genkey -v -keystore c:/Users/{User Name}/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key 서명한 디지털 파일을 앱이 참조할 수 있도록 새롭게 파일을 생성한다.# {Project Name}/android/key.properties storePassword=<password from previous step> keyPassword=<password from previous step> keyAlias=key storeFile=C:/Users/{User Name}/upload-keystore.jks[ Gradle Sign ]build.gradle 파일에 android 태그 위에 작성한다.# /{Project Name}/android/app/build.gradle def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android {buildTypes 태그 위에 작성한다.signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release } }Progarud를 구성해야 한다.플러터 엔진 라이브러리를 보호하는 역할을 수행한다.코드 난독화를 통해 크기를 줄이고 리버스 엔지니어링으로부터 코드를 보호할 수 있다.# /{Project Name}/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.**설정한 proguard와 사이즈 축소를 위해 다음의 내용을 작성한다.# /{Project Name}/android/app/build.gradle android { buildTypes { release { signingConfig signingConfigs.release minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }#1. Android Summary, Timeline[ Summary ]{Project Name}/android/app/src/main/AndroidManifest.xmlapplication : 애플리케이션의 최종 이름uses-permission : 애플리케이션 사용 권한[ Build Configuration Check ][ AppBundle Build ]$ flutter build appbundle/{Project Name}/build/app/outputs/bundle/release/app.aab

작성일 :2021-06-17 14:11 / 조회수: 117회
2021 05 Flutter Series
Flutter Code Flutter Utilze Flutter Firebase Series 1 파이어베이스 연동

#1. FirebaseSummary, System advantages, System drawbacks[ Summary ]어플리케이션의 서버는 상당히 많은 기능을 가지고 있어야 한다.인증, 데이터베이스, 푸시 알람, 스토리지 등 다양한 분야의 기능을 구현해야 한다.어플리케이션 서버 구성 범위는 프로젝트마다 크게 차이나지 않는다. 새로운 어플리케이션 프로젝트를 진행할 때마다 비슷한 기능을 재구현해 줘야한다.파이어베이스는 이러한 기능들을 프로젝트 구성 시 자동으로 생성해준다.서버 구축과 사용을 위해 리눅스, 도메인 등에 구애받지 않고 사용이 가능하다.[ System advantages ]인증 시스템 지원- 세션, 권한, 보안, 계정, 인증 등의 기능을 모두 지원NoSQL 기반의 3세대 데이터베이스- Document 형식의 NoSQL 기반 데이터베이스- RTSP(Real Time Stream Protocol) 방식의 데이터베이스원격 지원 구성- 앱의 테마, 폰트 변경 가능- 업데이트 알림창 기능- 앱의 환경 원격 구성 가능콘솔 기능 제공- 관리 페이지와 유사한 페이지 제공- 서버 개발자에게 큰 구애를 받지 않음진단 기능 제공- 어플리케이션의 통계를 제공하는 Analytics 지원- 접속자, 오류, 유지율, 상태, 유지시간, 이벤트 등을 추적 가능- 맞춤형 마케팅 기능으로도 이어나갈 수 있음* RTSP : 실시간으로 데이터를 전송하는 방식으로 소켓 기반 서버보다 비약적으로 코드 양이 줄어듬[ System drawbacks ]종종 느려지는 서버 응답속도- 서버가 해외에 존재하여 종종 처리 속도에 지연이 발생빈약한 쿼리 문장- 파이어 베이스는 2가지 형태(NoSQL, RTSP)의 데이터베이스가 존재- 신버전(FireStore)·구버전(RealTimeDatabase) 모두 쿼리가 굉장히 빈약- SQL 데이터베이스의 OR 혹은 LIKE 문이 존재하지 않아 비슷한 글자나 데이터 검색이 불가- 이를 위해 모든 데이터를 불러와 서버 단에서 필터링하는 방법을 권장#2. FirebaseSummary, Development environment, Development appearance[ Summary ]어플리케이션의 서버는 상당히 많은 기능을 가지고 있어야 한다.인증, 데이터베이스, 푸시 알람, 스토리지 등 프로젝트 규모에 따라 구성할 기능이 달라진다.[ Development environment ]Develop : Android Studio파이어베이스와 연동하기 위한 안드로이드 스튜디오 프로젝트를 구성한다.프로젝트 설정 데이터는 다음과 같다.Project Name : firebase_tutorialAndroid Language : KotliniOS Language : SwiftPlatforms : Android, IOS안드로이드 스튜디오와 연결할 파이어베이스 프로젝트를 생성한다.프로젝트 이름은 언더바(_)를 사용할 수 없어 Flutter-Firebase-Tutorial로 진행한다.> Firebase Console Link애널리틱스는 국가별 구성이 가능한 기능으로 기준 시간, 지역 데이터 등이 변경된다.어플리케이션의 주 고객층이 어느 국가인지 정해두면 좋다.애널리틱스를 통한 데이터를 설정 & 확인할 계정을 선택한다.이전에 파이어베이스를 사용하지 않아 계정이 존재하지 않는다면 간단하게 생성 가능하다.프로젝트 생성이 완료되면 다음과 같이 해당 프로젝트와 어플리케이션을 연동할 수 있다.안드로이드 연동을 위해 가운데의 안드로이드 아이콘을 선택한다.프로젝트와 등록할 어플리케이션의 정보를 작성해야 한다.우리가 필요한 데이터는 총 두 가지로 패키지 이름과 디버그 서명 인증서를 작성한다.*선택 사항을 작성하지 않으면 기능 이용에 제한되므로 반드시 입력한다.1. 안드로이드 패키지 이름다음 경로의 파일을 실행하여 안드로이드 패키지 이름을 확인한다./{Project Name}/android/app/src/main/AndroidManifest.xml2. 디버그 서명 인증서디버그 서명 인증서는 어플리케이션에 대한 OAuth2 클라이언트 및 API키를 위해 필요하다.구글의 일부 서비스를 이용하기 위해 제공해야하는 데이터이다.안드로이드 스튜디오 프로젝트를 생성하면 기본적으로 생성되어 있다.기본 패스워드는 android로 아래의 명령어 입력 후 비밀번호를 작성한다.$ keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore 키 저장소 비밀번호 입력 : android획득한 데이터들을 가지고 순서대로 파이어베이스에 작성한다.안드로이드 패키지 이름 : com.reasley.firebase_tutorial앱 닉네임 : firebase_tutorial디버그 서명 인증서 : 78:85:D8:78:4D:C6:7A:E2:A6:42:19:79:B9:64:70:54:25:CC:99:E1구글 서비스는 클라이언트가 인증된 사용자인지 검증하는 과정을 수행한다.파일을 다운로드 받아 아래의 경로에 넣어준다./{Project Name}/app/google-services.json이제 토큰 값을 받아와 구글 서비스 이용 시 전송하는 코드를 프로젝트 수준으로 작성한다./{Project Name}/build.gradle나머지 데이터는 모두 적혀있으므로 dependencies 구역에 아래의 코드만 추가한다.classpath 'com.google.gms:google-services:4.3.8'프로젝트 수준으로는 정리되었고 어플리케이션 수준으로 토큰 전송 코드를 작성한다.우리는 안드로이드 언어를 코틀린으로 진행했기에 Kotlin을 선택하여 바뀐 코드를 작성한다./{Project Name}/app/build.gradle이번에도 나머지 데이터는 모두 적혀있기에 두 가지 코드만 추가적으로 작성한다.apply plugin: 'com.google.gms.google-services' implementation 'com.google.firebase:firebase-analytics-ktx'이렇게 안드로이드 스튜디오 프로젝트와 파이어베이스 연동을 모두 수행했다.

작성일 :2021-05-22 16:29 / 조회수: 205회
2021 05 Flutter
Flutter Error Flutter 프로젝트 생성 오류 - is not a valid Dart package name

https://dart.dev/tools/pub/pubspec#name

작성일 :2021-05-19 15:21 / 조회수: 105회
2021 05 Flutter
Flutter Utilze Flutter Android Studio 깃허브 연동 에러 - invalid authentication data

#1. Android Studio New Project CreateSummary[ Summary ]최근 안드로이드 스튜디오와 플러터 플러그인이 업데이트되면서 인터페이스가 많이 달라졌다.이번 포스팅에서 추가된 기능을 이용해 기본 프로젝트와 확장형 프로젝트를 생성해본다.이전과 동일하게 공유할 프로젝트를 작성하는 창이 뜬다면 성공적으로 오류가 해결되었다.

작성일 :2021-05-17 15:01 / 조회수: 95회
2021 05 Flutter
Flutter Code Flutter Android Studio 깃허브 연동

#1. Android Studio New Project CreateSummary[ Summary ]최근 안드로이드 스튜디오와 플러터 플러그인이 업데이트되면서 인터페이스가 많이 달라졌다.이번 포스팅에서 추가된 기능을 이용해 기본 프로젝트와 확장형 프로젝트를 생성해본다.https://github.com/reasley-com/Flask_Default-App

작성일 :2021-05-17 15:01 / 조회수: 124회
2021 05 Flutter
Flutter Code Flutter Android Studio 프로젝트 생성

#1. Android Studio New Project CreateSummary[ Summary ]최근 안드로이드 스튜디오와 플러터 플러그인이 업데이트되면서 인터페이스가 많이 달라졌다.이번 포스팅에서 추가된 기능을 이용해 기본 프로젝트와 확장형 프로젝트를 생성해본다.첫 플러터 프로젝트를 생성을 진행한다면 Flutter SDK 경로를 지정해야 한다.공식 문서에서 제공하는 내용과 동일하게 다음의 경로의 폴더를 선택한다.C:\src\flutter변경된 플러터 프로젝트 생성 페이지에서는 OS에 따라 언어 지정이 가능하고, 사용할 플랫폼을 선택할 수 있다.이전 버전에서 플러터로 웹을 진행하기 위해서는 추가적인 데이터를 다운받고 설정해야하는 번거로움이 있었다.이번 업데이트로 인해 버튼 클릭 한번만으로 수행이 가능해졌다.프로젝트를 생성하고나면 이전 버전과 동일하게 사용이 가능하다.

작성일 :2021-05-17 15:00 / 조회수: 192회
2021 05 Flutter
Flutter Utilze Flutter Android Studio 시작 화면 설정

#1. Android Studio Start PageSummary[ Summary ]안드로이드 스튜디오 설치 이후 재실행 할 경우 기존에 사용하던 프로젝트가 나타난다.기존에 사용하던 프로젝트말고 시작 페이지를 사용하고 싶을때가 있다.다음의 경로로 이동하여 Reopen projects on startup 체크박스로 해결할 수 있다.File > Settings > Appearance&Behavior > System Settings체크박스를 해제하면 안드로이드 스튜디오 실행 시 기존에 사용하던 프로젝트 대신 시작 화면이 나온다.

작성일 :2021-05-17 14:55 / 조회수: 115회

소개글

원포올 선임 연구원

Kshield Jr. 2기 인증생

Cyber Guardians 수료생

플러터 앱 개발 강사

플라스크 웹 개발 강사

LG 쿠버네티스 보조강사

멀티캠퍼스 악성코드 보조강사

멀티캠퍼스 쿠버네티스 보조강사

금융감독원 쿠버네티스 보조강사

<시스템 해킹 프로토스타> 저자

<안드로이드 앱 개발에 딱 맞는 플러터와 다트 입문> 저자

문의: reasley.com@gmail.com

Category

Project List

Percent

JustCat

TextCount

Weather

Percent

Percent