일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- inheritance
- aduino
- mfc
- preprocessing
- Android
- Overloading
- flutter
- java
- compare
- wpf
- digitalRead
- memory
- file access
- Pointer
- sensor
- stream
- Encapusulation
- length
- Class
- public
- Read
- atmega328
- Contour
- Barcode
- parameter
- SERIAL
- UNO
- APP
- Binary
- Unity
- Today
- Total
목록Flutter, Android (45)
폴크(FOLC)
# 알림 추가 > "디자이너-알림"을 Drag & Drop 하면 화면에 1개의 알림이 추가 된다. # 알림 연동 > 블록 화면으로 전환하고 "알림1" 클릭하여 EVENT 를 연결한다. > 특정 메시지를 표시하고 "확인/취소"를 진행하기 위해서는 "알림1"을 선택하고 이하 Function 을 이용한다. > 알림이나 확인창으로 이용 가능하다.
# Screen1 에서 생성된 데이터를 ScreenX~ 로 연동하는 방법 > 전달하기 원하는 데이터를 생성하고 "변수-가져오기" 를 연결 한다. # 데이터의 값이 여러개인 경우에는 > 리스트를 이용하여 생성하고 "변수-가져오기" 를 연결 한다. # 데이터를 받기 위해서는 해당 Screen 에서 초기화 되는 과정에서 데이터 연동 > 전달 받기 위한 데이터의 갯수에 맞는 변수를 할당 해 놓기 > 그리고 "제어-시작 값 가져오기" 로 변수에 할당한다. > 앞에서 전달하는 변수의 크기와 공간이 동일한 상태로 "시작 값 가져오기"하면 동일한 데이터를 그래도 받아 들인다.
# 디자이너에서 설계한 화면에 배치되어 있는 컨트롤들을 이용해서 구체적인 기능을 구현 > 화면 우측에 "블록" 버튼을 누르면 선택되어 있는 화면(Screen1)에 대해서 기능을 작성한다. # 변수 > 지역 변수 : 함수 안에서 생성/삭제 되고 가변적으로 값을 관리 하는 공간 > 전역 변수 : 화면 안에서 생성/삭제 되고 가변적으로 값을 관리 하는 공간 > 변수의 사용범위를 고려해서 생성한다. ( 대형 프로젝트가 아닌 경우에는 전역 변수로 관리 해도 무방한 듯 ) # 전역 변수 생성 > "변수 - 전역변수 만들기" 화면에 Drag & Drop ( 초기값은 0으로 자동 설정되지만 되도록이면 값을 할당 하도록 한다. ) > "수학 - 0" 화면에 Drag & Drop 하는데 "전역변수 만들기 초기값" 옆에 붙..
# 사용자 인터페이스 > 각 컨트롤 마다 이벤트를 속성에서 설정이 가능하며 Drag & Drop 으로 "디자이너"에서 화면에 위치시킬 수 있다. - 버튼 : 누르는 Event 를 발생, 체크박스/스위치 : 선택 Event 를 발생, 이미지 : 그림 표시, 레이블 : 글자 표시 - 알림 : 확인/취소 설정 Event 발생, 슬라이더 : 상태 조절, 텍스트 박스 : 글자 입/출력 # 레이아웃 > 화면에 특별한 위치에 또는 규칙을 적용해서 배치할 수 있도록 도와준다. - 수평 배치 : 가로로 컨트롤 배치, 수직 배치 : 세로로 컨트롤 배치 - 스크롤가능 : 좌/우/상/하 스크롤링 가능 - 표형식배치 : 격자 모양으로 컨트롤 배치 # 미디어 > "디자이너"에서 Drag & Drop 하면 화면 하단에 추가 되고 ..
# https://appinventor.mit.edu/ 접속 > Create Apps! 클릭 # 튜토리얼은 SKIP > CLOSE 클릭 # 새 프로젝트 시작하기 > 프로젝트 이름을 입력하고 확인 > 자동으로 화면전환 # Screen1 : 최상위 화면 # 스크린 추가 : Screen2 ~ 이상으로 화면을 추가 가능 # 디자이너 : 뷰어에 보이는 화면에 그림 그리듯이 Controls 을 끌어놓는 형태를 제공하는 공간 # 블록 : 현재 화면에서 뷰어에 끌어 놓은 Controls 에게 기능을 부여하는 공간 # 사용자 인터페이스 : App 에서 이용가능한 Controls # 뷰어 : 휴대폰에 보여지는 형태를 가상으로 표현 시켜줌 ( 휴대폰과 다를 수 있음 ) # 컴포넌트 : App 에 표시되는 화면에서 이용하는 ..
# 구글이 제작하고 MIT 에서 관리 > 2010년 12월 15일에 공식 출시 이후, 2011년 후반기에 구글은 소스 코드를 공개하고 서버를 종료 > 2012년 3월에 MIT 다시 서비스를 OPEN 하고 2013년 12월 6일에 앱 인벤터 2로 변경하여 운영 - https://appinventor.mit.edu/ # 프로그래밍에 관심이 있는 사람들이 쉽게 응용 소프트웨어(안드로이드 운영 체제용)를 만들 수 있게 도와준다. > 사용자들이 코드 블럭을 끌어당기거나 붙여서 실행할 응용 프로그램 제작 > 프로젝트를 추출하면 *.aia 형식의 파일로 제공 # 서비스 이용 방법 ( 권장 사항 ) > Chorme 브라우저에서 appinventor 사이트 접속 > Google 계정으로 LogIN 하고 이용 약관 동의 ..
# 스크롤 위젯 > 데이터를 순차적으로 표현 # 동작 방식 ( 총 4가지 ) > default 생성자 - child 로 List 을 호출하여 동작 - 목록 보기에 표시될 수 있는 자식에 대해 작업을 수행 - 데이터량이 작은 경우에 이용 > 소스 코드 ListView(children: [ Container(height: 50, color: Colors.amber[600], child: const Center(child: Text('Entry A')), ), Container(height: 50, color: Colors.amber[500], child: const Center(child: Text('Entry B')), ), ],) > builder 생성자 - child 를 빌드하는 IndexedWidge..
# 외부 명령 및 데이터를 수신한 경우 / 데이터 전달하는 경우 # InAppWebView 와 연동 처리 > 생성자에 OnCreateWindow 함수와 연결 > 옵션으로 새창을 OPEN 할 수 있도록 설정 # 소스 코드 Future onCreateNewWindow(InAppWebViewController controller, CreateWindowAction createWindowAction) async { var uri = createWindowAction.request.url; final String text = uri.toString(); final List contents = [ "http", "https", "file", "chrome", "data", "javascript", "about" ]..
# 설치 하지 않고 바로 사용 가능한 Local 버전 # Android Studio 검색한다. > Download Android Studio and SDK tools 선택 # 페이지 밑으로 이동한다. > android-studio-2020.3.1.25-windows.zip ( No .exe Installer ) 를 선택 > OS 환경에 맞는 zip 파일을 선택한다. # 다운로드 완료한 zip 파일을 선택하고 unzip 한다. # android-studio 폴더 안에 bin 폴더로 이동한다. > OS 환경에 맞는 실행 파일을 선택하여 studio.exe / studio64.exe 를 실행 # 프로젝트를 선택하거나 새롭게 생성한다. # PlugIn 에서 Flutter 패키지를 선택해서 설치 한다. > Dar..
# 이미지 또는 파일을 Upload 하기 위해서 권한이 부여 되지 않아 App 이 비정상적으로 종료되는 현상 > Storage 접근 권한 필요 > CAMERA 관련 권한 필요 # android - app - src - main - AndroidManifest.xml 에 내용 추가 > > # 스토리지 권한만 있으면 안되고 CAMERA 권한도 같이 부여 해줘야 한다. > 카메라 권한만 부여해도 정상 동작하는 경우가 있음. # 추가적으로, 사진이나 파일을 저장하기 위해서는 아래와 같은 구문 추가 > > android:requestLegacyExternalStorage="true" 또는 android:preserveLegacyExternalStorage="true" - 삭제 예정 * P.S. Android ta..
# 소스코드를 동일한 포멧으로 전환해주는 기능 > 안드로이드 스튜디오 / IntelliJ IDEA : 코드에서 마우스 오른쪽 버튼을 클릭 - Reformat Code with dartfmt 선택 > 비쥬얼 스튜디오 코드 : 코드에서 마우스 오른쪽 버튼을 클릭 - Format Document 선택 # 만약, Flutter/Dart 패키지가 설치 되어 있지 않다면 아래와 같이 표시 된다. > 마우스 오른쪽 버튼을 클릭한 후 Command Palette ( 또는 CTRL + SHIFT + P ) - Format Document 선택 - 설치가 되어있지 않아서 아래과 같이 표시 된다. ( Install Formatter... 선택 ) - Flutter 패키지를 설치 한다. ( Dart 패키지는 통합으로 설치 된..
# Flutter 로 App 을 개발하는 과정에서 자주 이용되는 툴 ( 툴 버전은 최신으로 이용 권장 ) > 상태 관리 툴 - GetX : https://pub.dev/packages/get > 카메라 제어 툴 - image_picker : https://pub.dev/packages/image_picker > 통신 제어 툴 - http : https://pub.dev/packages/http > 이미지 조회 툴 - photo_view : https://pub.dev/packages/photo_view > 처리중 툴 - modal_progress_hud : https://pub.dev/packages/modal_progress_hud > 메시지 제어 툴 - toast : https://pub.dev/pa..
# 고성능 상태 관리, 지능형 종속성 주입 및 빠르고 실용적인 라우트 관리 # 3 가지 기본 원칙 > 성 능 : 성능과 최소한의 리소스 사용 ( Streams나 ChangeNotifier를 사용 X ) > 생산성 : 친숙하고 간결한 구문을 사용 ( 종속성은 기본적으로 lazy로 로드 ) > 조직화 : 화면, 프레젠테이션 로직, 비즈니스 로직, 종속성 주입 및 네비게이션을 완전히 분리 * 라우트간 전환을 하는데에 컨텍스트가 필요하지 않아 위젯 트리에 독립적이다. # 자주 이용하는 명령어 > 라우트 관리 : GetMaterialApp 으로 변경 > 네비게이션 : Get.to( 해당 페이지 ) - 새로운 화면으로 이동 : Get.toNamed( 해당 페이지 이름 ) - 미리 설정되어 있는 이름의 화면으로 이동..
# 설치 하지 않고 바로 사용 가능한 Local 버전이 있다. # Visual Studio Code 검색한다. > Download 를 선택한다. # Windows - .zip ( 64bit ) 를 선택한다. # 압축 파일을 unzip 하고 Code.exe 를 실행한다. # 설치 파일과 동일한 형태로 사용 가능한다.
# Visual Studio Code 웹 사이트를 검색한다. # Visual Studio Code 웹 사이트에 접속한다. > Windows x64 User Installer ( Stable ) 로 선택한다. > Insiders 는 최신 버전이긴 하지만 update 가 자주 발생한다. # 파일은 다운로드 받고 설치한다. # "다음" 계속 누른다. # 설치 완료! # Extensions 툴바에서 flutter 를 검색하여 설치 한다. > Dart 는 자동적으로 설치 된다. # 프로젝트 생성 > Open Foldet : 프로젝트 파일을 생성하고 관리하는 Folder 를 설정해준다. > 설정확인! # 신규 프로젝트를 생성한다. > CTRL + SHIFT + P ( project ) > flutter 라고 입력하..
# 내장된 웹 브라우저 컴포넌트로 앱을 임베딩하는 것을 말한다. 즉, 앱 내에 웹 브라우저(HTML iframe)를 넣는 것이다. > 웹 페이지를 보기 위해서 또는 앱 안에서 HTML을 호출하여 앱을 구현하는 하이브리드 형태로 이용된다. > Javasript SDK 를 사용하고 있는 웹 페이지의 경우에는 다음과 같은 형태로 임베딩이 가능하다. 1. pubspec.yaml 설정 추가 # dependencies - flutter_inappwebview: ^5.3.2 2. /android/app/src/main/AndroidManifest.xml 옵션 설정하기 # 메니페시트 영역 # 안드로이드 영역 android:usesCleartextTraffic="true"> 3. /android/app/src/build..
# 웹 페이지에서 JS-SDK를 사용할 경우 InAppWebView 에서 kakao 등 외부 url 을 연동하여 올바르게 동작하도록 하기 위해서는 다음과 같은 처리가 필요하다. # Android 11 이상에서 JS-SDK 을 이용하여 기능을 구현하는 경우 > AndroidManifest.xml 에 패키지 명을 추가한다. 그렇지 않으면, Android Framework 에서 호출을 차단한다. ... # 안드로이드 앱에서 웹뷰를 통해 앱을 실행하려면 Intent URI를 이용한다. import 'package:url_launcher/url_launcher.dart'; InAppWebViewGroupOptions option = InAppWebViewGroupOptions( crossPlatform: InAp..
# Flutter Widget 에 Unity 를 삽입하여 AR, XR 등의 ARFoundation 관련 기능을 사용하는 경우 발생하는 문제점 > flutter_unity_widget 4.2.1 에서 화면 전환으로 인한 충돌 부분 > Permission 문제로 Android 와 Unity 에서 Camera 사용 권한 적용 필요 → 최초 설치한 상태 (1회) 에는 카메라 사용 권한이 없는 관계로 Permission 관련 메시지가 표기 된다. 하지만, App 이 2번째 실행되는 경우에는 자동적으로 권한 관련 메시지를 묻지 않는다. → flutter unity widget DLL 에서 CAMERA 관련 사용 권한 적용이 진행되지 않는 관계로 화면이 멈추는 현상 발생 # 상기 문제 해결 방법1 ( 임시 조치 방법..
# 인증서 (jks) 파일은 분실하지 않도록 주의한다. > 추후 app 의 대한 정보를 udpate 하거나 변경이 필요한 경우에는 문제가 될 수 있다. > 만약, 분실했을 경우에는 google play 지원팀에 문의를 해서 도움을 받는다. # Android Project 를 OPEN 한다. # Build - Generate Signed Bundle / APK... 선택 # Android App Bundle 선택 ( aab 파일 생성 ) # 필요한 정보를 입력하고 NEXT > 파일은 D:\ 에 저장한다. C:\ 로 저장하게 되면 가끔씩 권한문제로 access 차단이 발생하여 aab 파일 생성이 안되는 경우가 있다. # release 상태가 포함되어 있는지 확인하고 NEXT 해서 마무리한다.
# Android 는 배포 버전이 https://search.google.com/search-console/about을 통해서 관리 되는데, 외부로 공개되는 버전과 내부로 관리하는 버전을 분리 할 수 있도록 되어 있다. > 외부로 공개 되는 버전은 versionName > 내부로 관리 하는 버전은 versionCode > Google console 에서 aab 파일의 버전을 downgrade 비허용 하고 versionCode 의 숫자로 관리 한다. > update 나 release 를 계속해서 진행하기 위해서는 versionCode 값을 계속 증가(최대 2100000000) 시킨다. # 배포를 위해서 versionCode 와 versionName 은 다음의 위치 파일을 수정한다. > ProjectFold..