본문 바로가기

Android

[Kotlin] let 사용방법 및 주의 1. filter 의 결과물을 let 으로 1개 또는 여러개의 작업수행 val numbers = mutableListOf("one", "two", "three", "four", "five") numbers.map { it.length }.filter { it > 3 }.let { println(it) // and more function calls if needed } 위의 예시에서 만약 let{ } 블럭 안에 하나의 function 만을 포함하며 매개변수가 1개의 it일 경우 .let(::println) 으로 대체가능하다. 2. Not Null 체크 val str: String? = "Hello" //processNonNullString(str) // compilation error: str can b.. 더보기
[Kotlin] 시간 얻어오기 TimeZone 자주 쓰는 기능 중에 TimeStamp 또는 현재시간 Long 타입에 대해 유연하게 String 값으로 변경을 해야하는 경우가 많다. fun getTimeYYYYMMDD() : String { //현재시간 val curTime = Date().time val format = SimpleDateFormat("원하는형식yyyy-mm-dd") //TimeZone 설정 (GMT +9) format.timeZone = TimeZone.getTimeZone("Asia/Seoul") //결과물 return format.format(time) } "2020-01-11" 리턴한다. (참고) Java 8 부터는 LocalDate 클래스로 시간&날짜를 유연하게 사용이 가능하다. 끝 더보기
Android Studio & BigSur 깜빡거림 렉 버그 이번에 MacOS 를 BigSur 로 업데이트 후 Android Studio 4.1.1 이 비정상적인 동작으로 이용이 어려웠던 현상이다. 각종 팝업이 뜨느 경우 전체창으로 열리면서 계속해서 버튼이 깜박거리고 클릭이 안되는 현상이다. Solution 1. - 애플자체 [환경설정] - [일반] - 문서를열때 탭에서 열기 '안함' 으로 변경 Solution 2. - Terminal 앱을 연다. - defaults write com.google.android.studio AppleWindowTabbingMode manual 입력 Solution 3. - AndroidStudio 4.2 Canary Preview 버전으로 사용한다. 내가 택한 방법은 끝. 더보기
SDCard 통째로 Cloning 하는 법 (Ubuntu 20.04.1 LTS) Ubuntu 기준으로 SDCard 를 통째로 부팅 Image 로 Clone 하는 글 입니다. 최근 현재까지도 Odroid 라는 보드를 이용한 AOSP 프로젝트를 진행중이다. 매번 boot.ini, *.mk, 부팅 로고 등 변경 후 재빌드를 하여 OS 설치이미지를 빌드하는 과정을 반복한다. 설치이미지는 최초 실행시 OS 초기화 단계 (약 1분30초 ~ 2분 정도 걸림) 를 진행해야 핬다. 그리고 OS 부팅이 완료되면 꼭 해줘야 하는 기본 OS 설정들이 몇가지 있었다. 예를 들면 화면 회전, 글씨 기본 사이즈 변경, IP 주소 변경, 키보드 변경 등 OS 환경설정을 꼭 해줘야만 하는 것이다. 개인적인 프로젝트가 아닌 실제 프로젝트로 하게되는 경우 장비의 메인보드 (Odroid) 당 1개의 SDCard (Em.. 더보기
(에러) cleartext http traffic to not permitted 문제 해결 Android 9 (Pie) 부터 http 접근이 기본적으로 제한되도록 변경되었습니다. https 가 이제는 거의 기본인듯 하네요. 해당 내용은 해당 링크에서도 확인하실 수 있습니다. (하단 스크린샷 참고) https://developer.android.com/about/versions/pie/android-9.0-changes-28?hl=ko 동작 변경사항: API 레벨 28+를 타겟팅하는 앱 | Android 개발자 | Android Developers Android 9(API 레벨 28)에서는 Android 시스템에 많은 변경사항이 도입됩니다. 다음과 같은 동작 변경사항은 API 레벨 28 이상을 타겟팅하는 앱에만 적용됩니다. targetSdkVersion이 API 레벨 28 이상으로 설정된 앱은 .. 더보기
(필수&추천) 자주쓰는 안드로이드 adb 명령 정리 ( Mac 또는 리눅스 계열 OS용 ) 유선연결(USB) 뿐 아니라 무선연결(Wifi)에서도 테스트 개발 폰이나 예뮬레이터를 제어할 수 있습니다. adb 제어를 처음 접하는 분들을 위한 내용입니다. 주로 사용을 많이 하는 부분을 정리하였습니다. 1. terminal 에서 adb 연결하기 $adb connect (:) 예) $adb connect 192.168.0.1(:5555) 같은 망에 있다면 USB, Wifi 모두 연결 가능함. 단, Wifi 의 경우 방화벽이나 기타 네트워크 환경에 따라서 연결불가할 수 있음. ( 21. 1. 27 추가 - wifi 연결 ) 무선연결시 최초 디바이스 연결시 USB 로 1번은 연결 해줘야한다. 그리고 '개발자모드 - PC USB 디버깅 모드 허용' 도 해주고 나서, $adb tcpip 5555 USB 선 연.. 더보기
No toolchains found in the NDK toolchains, TaskExecutionException, RuntimeException 이번에 NDK 가 Revision r18 로 업데이트 되면서 생각지도 못한 에러가 생겼다. 기존에 잘 해오던 프로젝트들이 다 "No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android" 에러를 내고 있었다. 해당 에러는 내가 전에는 ndk버전이 낮았었는지 잘됬는데 최신 ndk로 업데이트 하게되면서 이런 메세지가 나서 빌드실패가 되었다.해결법을 찾아보니 일정 NDK버전 이후부터는 MIPS형의 CPU를 지원 하지 않게 변경되었고 gradle 버전이 너무 낮으면 mips에 대한 정보를 찾으려고 하다가 에러를 발생시키는 것이다. 결국 gradle 버전을 3.1.4 이상으로 올려라 라는 것이었다. 하지만 .. 더보기
커스텀 콜백 ( 리스너) 만들기 개발하면서 콜백 스타일의 코드들을 많이 보셨을 텐데요. 예를들면 서버의 API 호출 후 Response 데이터를 가져올 경우나, 스마트폰 자체 내에서는 사용자가 어떤 위젯을 터치 하고나서의 이벤트가 발생할 때 클릭 리스너가 동작하게 되어있습니다. 서버사이드에서 많이쓰는 NodeJS 의 경우에도 싱글 스레드의 비동기 방식의 콜백 기반으로 개발을 하게 됩니다. 개발을 하다보면 보통 특정한 함수 또는 이벤트를 발생시키고 어떤 그 뒤에 따르는 리스너? 콜러? 가 필요한 경우가 있습니다. 근데 심지어 다른 클래스에서 어떤 프로세스를 진행하고 끝나는 결과로 콜백을 부르는 경우도 많이 생깁니다. 이럴 때 보통 저는 3가지의 케이스로 개발을 하고있습니다. 1. 다른 액티비티를 실행 후 결과로써 진행해야할 경우. => .. 더보기