Bash Shell에서 파일 존재 여부 검사 시 -e와 -f 옵션을 사용할 수 있는데, -e는 단순히 파일이 존재하는지만 검사하고 -f는 해당 경로에 있는 것이 디렉토리나 마운트 된 기기 등이 아니라 정말로 파일인지까지 검사해줍니다. 보통 if문 안에서 다음과 같이 사용하게 되지요.
# 해당 운영체제가 우분투인지를 검사하는 코드입니다. if [[ -f /etc/lsb-release ]];
[안드로이드] SDK Validation ANDROID_SDK_HOME is set to the root of your SDK
안드로이드 스튜디오에서 다음과 같은 에러가 날 때가 있습니다.
SDK Validation ANDROID_SDK_HOME is set to the root of your SDK: C:\Users\username\AppData\Local\Android\Sdk This is the path of the preference folder expected by the Android tools. It should NOT be set to the same as the root of your SDK. Please set it to a different folder or do not set it at all. If this is not set we default to: C:\Users\username
이것은 ANDROID_SDK_HOME 이라는 시스템 변수가 C:\Users\사용자명\AppData\Local\Android\Sdk 로 되어 있어서 나타나는 문제입니다. 이럴 때에는 제어판의 시스템 항목에 있는 환경 변수 목록에서 ANDROID_SDK_HOME 을 찾아서 지워주시면 문제가 해결됩니다. ANDROID_SDK_HOME 항목을 지워주시면 안드로이드 스튜디오가 알아서 자동으로 적당한 경로를 찾게 됩니다.
안드로이드 개발을 하다 보면 몇 초 동안 기다린 후에 작업을 해야 할 경우가 있습니다. 일반 자바 프로그래밍에서라면 Thread.sleep(3000); 등을 사용하면 되겠지만 안드로이드에서는 앱이 그 시간동안 먹통이 되기 때문에 위와 같은 코드를 사용할 수 없습니다. 안드로이드에서는 다음과 같은 코드를 사용하면 됩니다.
코틀린에서 변수형에 물음표가 붙어 있으면 그 변수의 값이 null이 될 수 있다는 뜻입니다. 반대로 물음표가 없다면 그 변수는 null이 될 수 없습니다. null이 될 있는 변수형을 nullable이라고 하고 null이 될 수 없는 변수형은 non-null 이라고 합니다. 다음은 간단한 예제입니다.
fun goodMorning(data: Intent?) // data가 null이어도 괜찮습니다.
fun goodAfternoon(data: Intent) // data가 null이면 안 됩니다.