본문 바로가기

전체 글94

Flutter (플러터) 개발 환경 세팅 Flutter로 개발을 하기 위해 MacOS에 세팅하는 방법을 정리해본다. IDE 설치 Android Studio와 XCode(iOS 앱도 빌드할 경우)는 설치되어 있는 상태라고 가정하고 글을 작성 중이다. 아직 설치하지 않았다면 먼저 설치하고 와서 글을 이어서 읽으면 된다. iOS 앱만 빌드하는 경우에도 Dart 사용을 위해 Android Studio는 설치해주어야 한다. Flutter SDK 설치 https://docs.flutter.dev/get-started/install/macos 위의 사이트에 들어가서 Flutter SDK를 다운받고 압축을 풀어준다. 압축을 푼 폴더를 적당한 위치에 옮겨주면 되는데, 다음 경로에 옮겨주었다. 위치는 원하는 곳 어디에 지정하든 상관 없다. 이제 path 지정을 .. 2021. 12. 19.
LiveData와 Kotlin의 Flow LiveData와 Flow가 뭔지 정리해보고 어떻게 사용하는 지에 대해 알아본다. 추가로, 두 가지가 유사하면서도 다른 점들이 있기에 주요한 차이점과 적절한 사용법도 알아보자. LiveData & Flow LiveData는 안드로이드 앱 개발에서 일반적인 작업인 데이터 전송의 한 방법이다. Kotlin Flow도 데이터를 전송하는 것이며 비동기로 전송할 수 있는 기능이 있다. 두 가지 방법 모두 기존의 전통적인 문제를 극복하기 위해 설계되었으며, 장점과 더불어 한계점도 있다. LiveData 관찰 가능한 데이터 홀더 클래스, 다른 안드로이드 컴포넌트들(activity, fragment, service)에 의해 관찰될 수 있는 데이터들의 집합이라고 생각하면 된다. 관찰 가능한 다른 일반 클래스들과 다른 점.. 2021. 11. 14.
Kotlin Result 에러 핸들링 Result와 runCatching은 오류를 처리할 수 있는 방법 중에 하나다. Result는 동작이 성공하든 실패하든 동작의 결과를 캡슐화해서 나중에 처리될 수 있도록 하는 것이 목적이다. 이 Result와 함께 사용할 수 있는 다양한 기능들이 표준 라이브러리에 추가되었다. Kotlin 1.3부터는 예외 처리를 위해 runCatching이라는 inline function도 제공된다. 함수형 프로그래밍 방식의 에러 처리도 가능하며 Coroutines에서 에러 처리를 할 때 구글이 권장하는 방식이기도 하다. Result와 runCatching 먼저 Result를 보면 이런 형태로 생겼다. runCatching은 이런 식으로 생겼다. Result와 runCatching을 보면 대충 어떤 느낌으로 동작할지는 .. 2021. 11. 7.
DataStore of Android Jetpack DataStore란? Data Storage Solution이다. Kotlin으로 만들어졌으며, Coroutines와 Flow를 정식 지원하여 async한 작업이 가능 SharedPreferences의 새 버전이라고 생각해도 된다. Why DataStore? Kotlin, Coroutines, Flow 정식 지원 SharedPreferences는 sync API를 지원하며, Main-thread-safe하지 않다. DataStore는 Dispatchers.IO를 사용하기 때문에 Main-thread에서 사용하기에 안전하다. runtime exception들로부터 안전하다. SharedPreferences로부터의 migration을 제공 Type Safety 제공 Implementation DataStor.. 2021. 10. 24.
Android LiveData setValue vs postValue LiveData(MutableLiveData)에서 setValue()와 postValue()를 사용하는 경우를 종종 헷갈려하는 사람들이 있어서 간단하게 정리해두려 한다. LiveData는 일반적으로 DataBinding, ViewModel과 함께 사용한다. 값을 변경하는 두 방법의 차이점과 자신이 개발하고 있는 구조를 제대로 파악하지 못하면 필요할 때 UI 변경이 제대로 발생하지 않을 수 있다. 복잡하거나 어렵지는 않으니 간단하게 확인해두면 된다. setValue() 값을 바로 설정한다. 활성화된 observer가 있는 경우 해당 값이 observer로 dispatch된다. 사용에 있어 주의해야 할 점이 있는데 setValue는 반드시 Main Thread(UI Thread)에서 호출해야 한다. back.. 2021. 10. 21.
Android Custom Lint Checks Lint란? 먼저 Lint가 무엇인지를 정리해본다. Android Lint는 앱을 구성하는 코드(소스, 리소스, manifest를 포함)들을 정적 분석하는 도구이다. Test Code의 작성 없이 코드의 구조적 품질 문제를 식별하고 수정할 수 있다. Lint 검사 도구에서 감지된 각 문제는 설명 메시지 및 심각도 수준과 함께 보고되므로 개선이 시급한 순서대로 우선순위를 정할 수 있다. lint.xml 파일은 제외하려는 린트 검사를 지정하고 문제 심각도 수준 등을 변경하여 맞춤 설정하는 데에 사용할 수 있는 구성 파일이다. Lint의 결과는 Android Studio의 Inspection Results 창에서 린트 결과를 확인하거나 커맨드를 통한 수동 검사를 실행하여 결과를 확인할 수 있다. 물론 CI/C.. 2021. 8. 22.
Oculus Quest 2 개발자 모드 설정 & Unity VR 앱 빌드 Unity에서 VR 게임을 만들고 결과를 오큘러스 퀘스트 2 기기에서 테스트해보고 싶었는데, 유니티를 처음 사용하기도 하고 결과를 오큘러스 기기에 설치하는 것도 잘 안 되어서 되었던 방법들을 정리한다. Unity(유니티)에서 VR 게임 빌드하기 먼저, 오큘러스 퀘스트 2 기기에서 사용할 목적으로 유니티 빌드를 하려고 한다. 오큘러스 퀘스트 2는 안드로이드를 기반으로 만들어졌으므로 안드로이드 플랫폼을 선택해서 진행해야 한다. 원래는 oculus에서 Oculus Integration이라는 에셋을 사용하려고 했는데 계속 잘 안 돼서 보니까 MacOS에서는 지원되지 않아 불가하다고 한다... 그래서 Unity에서 제공하는 Unity XR Interaction Toolkit을 사용하니 잘 된다. 꼭 Oculus .. 2021. 8. 1.
Google I/O '21 Google I/O '21을 진행한지 기간이 조금 지났지만, 늦게나마 일부 내용을 정리해두려고 한다. 이 글의 밑 쪽에 관련 영상과 문서의 링크가 추가되어 있다. 이 글은 어떤 내용들이 있는지를 간략하게 정리해두고, 필요하거나 관심이 있는 내용들을 파악해서 어떤 것을 더 찾아봐야할 지 결정할 수 있도록 하는 데 목적을 둔다. What's new in Android Android 역사상 가장 큰 규모로 디자인이 변경되었다. 색상, 모양, 빛, 모션에 이르기까지 모든 환경이 새롭게 디자인되었다. 유저 인터페이스 먼저, 색상에 많은 신경을 썼는데 사용하는 시스템 색상 팔레트를 더 풍부하고 폭넓게 제공하여 유저가 배경화면이나 색상을 선택함에 따라 앱에서 사용하는 색상도 자동으로 맞춰져서 동작할 수 있다. 물론 .. 2021. 6. 20.
M1 맥 안드로이드 에뮬레이터에서 구글 플레이 사용하기 현재 arm 기반의 M1 맥은 녹스나 블루스택 같은 안드로이드 에뮬레이터를 사용할 수 없다. 안드로이드 앱 개발을 할 때 사용하는 구글에서 제공하는 안드로이드 에뮬레이터도 정식 버전은 없고 프리뷰만 업데이트 되고 있는 상황이다. 아직 프리뷰 버전의 에뮬레이터인데도 사양이 엄청 좋다.. 하지만 이 프리뷰 버전은 구글 플레이가 지원되지 않아서 apk를 넣어서 설치해야 하는데, 프리뷰 버전에서 구글 플레이를 사용하는 방법에 대해 정리해보려 한다. google/android-emulator-m1-preview Contribute to google/android-emulator-m1-preview development by creating an account on GitHub. github.com 먼저, 구글에서.. 2021. 5. 20.
iTerm2 + Oh My ZSH ZSH란? ZSH는 Z Shell이라는 쉘을 말한다. 기본 쉘보다 더 많은 기능이 있어서 더 강력하게 사용할 수 있다. Oh My ZSH는 이 Z Shell에 추가 플러그인이나 기능을 추가하여 사용할 수 있는 플러그인이다. MacOS의 경우는 카탈리나 OS 이후부터는 ZSH가 기본으로 사용되고 있다. iTerm2 설치 iTerm2는 맥의 기본 터미널보다 예쁘고, 추가 기능(커스텀 단축키, 스크립트, 화면 분할 등)을 사용할 수 있는 터미널이다. 이것 없이도 기본 터미널에서 ZSH와 Oh My ZSH는 사용할 수 있다. 우분투에서는 설치할 수 없고 MacOS용이므로 우분투의 경우라면 바로 ZSH 관련 내용으로 넘어가도 된다. 아래 사이트에서 다운받을 수 있다. iTerm2 - macOS Terminal R.. 2021. 5. 19.
맥 미니, 맥북, 우분투를 ssh 서버로 사용하기 우분투도 거의 동일한데 MacOS 기준으로 진행한다. 아이패드를 들고 다니면서 외부에서도 사용할 수 있도록 아이패드의 blink (터미널) 앱을 사용하여 테스트를 진행해봤다. 아래 순서대로 진행하면 된다. Mac에서 ssh 접속 설정 맥에서는 기본적으로 ssh 연결이 막혀 있다. "시스템 환경설정" - "공유"에서 위와 같이 원격 로그인 서비스를 켜줘야 한다. 위에 나와 있는 설명대로 "ssh [사용자이름]@ip주소"를 사용하여 ssh에 접속할 수 있다. 하지만 공유기에 연결되어 있어서 내부 ip 주소가 나온다. 지금 상태로는 같은 네트워크 환경에서는 접속이 가능하지만 외부에서는 접속이 불가능하다. 공유기 포트 포워딩 공유기에 연결되어 있는 기기에서 웹 브라우저를 통해 192.168.0.1로 접속하여 포.. 2021. 5. 18.
맥북, 맥에서 스크린샷 폴더 지정하기 맥을 사용하다가 스크린샷을 찍게 되면 바탕화면에 지저분하게 계속 저장이 된다. 커맨드로 스크린샷이 저장될 위치를 지정할 수 있다. MacOS 모하비 버전부터의 적용 방법 "cmd + shift + 5"를 통해 스크린샷 앱이 실행되면 오른쪽에 있는 옵션에서 다른 위치를 선택한다. 저장하고 싶은 폴더를 선택하고 "선택"을 누르면 된다. MacOS 모하비 이전 버전에서의 적용 방법 터미널이나 iterm 같은 아이들을 실행한다. defaults write com.apple.screencapture location 경로 위의 명령어와 같이 입력해주면 지정해준 경로에 스크린샷들이 저장된다. 경로를 하나하나 쓰기 귀찮다면 폴더를 먼저 만들고, 터미널에서는 경로 앞까지만 입력한 다음에 폴더를 끌어다가 터미널에 넣으면 .. 2021. 5. 15.