전체 글 290

안드로이드 11 권한 자동 삭제 기능 대응(Permission Auto-reset)

Android 11 에서는 권한 자동 삭제 기능이 추가되었습니다. 이 기능은 오랫동안 사용하지 않은 앱이 권한을 계속 가지고 있는 문제점을 해결하기 위해서 나옵니다. 이 영향을 받게 되는 권한은 런타임 권한입니다. 런타임 권한은 흔히 앱에서 사용자에게 요청을 표시하면서 허락을 구하는 그런 권한들입니다. 예외 처리 먼저 내 앱이 권한 자동 삭제 대상으로 되어 있는지 확인해봅니다. https://developer.android.com/reference/android/content/pm/PackageManager#isAutoRevokeWhitelisted() PackageManager | Android Developers developer.android.com 대상자로 되어 있다면 권한 자동 삭제 예외 처리를..

Android Development 2021.10.01

자바(Java) 설치, 버전 및 전체 목록 파악, 선택 지정해서 사용하기

현재 설정된 자바 버전 경로 출력하기 // 현재 설정된 자바 버전 경로 출력 > /usr/libexec/java_home 설치된 모든 자바 버전 경로 출력하기 // 자바가 설치된 모든 자바 버전 경로 출력 > /usr/libexec/java_home -V zshrc 에 각종 자바 버전별로 전환 설정하는 명령어 설정하기 # java home export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.2) # Java Aliases alias oj17="export JAVA_HOME=$(/usr/libexec/java_home -v 17); java -version" alias aj11="export JAVA_HOME=$(/usr/libexec/java_home -v 11.0...

[Network][Web] REST API 버전 관리

Abstract 클라우드 네이티브 애플리케이션 개발에 대해 마이크로 서비스가 핫 트렌드입니다. 마이크로 서비스의 이점 ? 향상된 확장성 회복 탄력적인 애플리케이션 기술에 구애받지 않는 애플리케이션 출시 시간 단축 CI/CD 지원을 통한 비즈니스 민첩성 향상 등등 다양한 이점이 있어서라고 합니다. API 버전 관리는 언제? 마이크로 서비스 기반 아키텍처 MSA 의 핵심 구성 요소 중 하나는 'API design & contract' 임. API 버저닝은 매우 중요하다. 클라이언트가 준비 될 때 언제든지, 기존 클라이언트가 기존 REST API 를 지속적으로 사용하게 해주고, 클라이언트 애플리케이션이 새로운 API 로 마이그레이션을 할 수 있게 한다. 버전 관리의 이점 버저닝은 API 변경 사항을 탐색하는데..

[Git] cannot lock ref 오류

git 에서 브랜치 생성하는데 아래 오류가 발생했습니다. cannot lock ref 'refs/heads/hotfix/migration-api30': 'refs/heads/hotfix' exists; cannot create 'refs/heads/hotfix/migration-api30' 오류 발생은 이미 hotfix 브랜치가 있어서 hotfix 브랜치 폴더를 생성 못하는 게 원인입니다. 브랜치가 생성되고 구성될 때, 같은 이름의 브랜치나 폴더가 있으면 생성 못합니다. 참고하세요.

Gradle Kotlin DSL issue - Cannot access class 'java.io.OutputStream'. Check your module classpath for missing or conflicting dependencies

Cannot access class 'java.io.OutputStream'. Check your module classpath for missing or conflicting dependencies Cannot access class 'java.net.uri'. Check your module classpath for missing or conflicting dependencies Kotlin DSL 로 전환 처리하는 경우 이런 에러들이 나타나곤 합니다. 하지만 빌드는 잘 되죠. 단지 편집에서 접근이 안된다고 오류가 나옵니다. 아무리 invalidate restart 해봐도 해결이 안되는 경우가 생기는데, 이럴 때는 이렇게 해보세요. 1. 안드로이드 프로젝트를 닫습니다. 2. 해당 프로젝트 루트 폴더에..

Android Development 2021.09.06

Unboxing of 'map.get(key.toString())' may produce 'NullPointerException'

현상 해당 Map 은 로 선언되어 있습니다. key 값으로 value 를 가져오는 부분에서, Unboxing of 'map.get(key.toString())' may produce 'NullPointerException' 경고 문구가 생깁니다. 원인 가져온 값을 primitive type 즉, int 변수로 받아서 생기는 문제입니다. 객체 Integer를 받아서 null 체크해야 하는데, int 타입으로 넣어버리면 null check를 못하니, 경고할 수밖에 없죠. 이 부분에 대해서 염두하시고 항상 wrapper 클래스나 객체 사용 처리를 하면서 Null 체크도 잊지 마세요. 끝.

Android Development 2021.09.04

보이는 정렬 알고리즘

정렬과정을 비쥬얼하게 보여줌으로써, 각종 정렬 알고리즘을 보다 쉽게 이해할 수 있습니다. 자바 스크립트로 만들어진 새로운 버전이 생겨서 다시 공유 드립니다. https://math.hws.edu/eck/js/sorting/xSortLab.html -------------------------------------------------------------------------------------- 이 자바애플릿 프로그램은 http://math.hws.edu/TMCM/java/xSortLab 에서 배포되고 있습니다. 이 문서를 제대로 확인하기 위해서는 JRE가 설치되어 있어야 합니다. JRE는 http://www.java.com/en/download/help/5000010400.xml 에서 다운로드 받을..

build.gradle.kts 에서 getByName error 발생

kotlin dsl 로 전환하기 위해서는 먼저, build.gradle 파일을 build.gradle.kts 파일로 변경해야 합니다. 그리고 kotlin 스크립트 언에 맞게 내용을 변경해주게 됩니다. 이때 가끔씩 getByName 이라든지 isMinifyEnabled 같은 프로퍼티가 인식이 안되는 경우가 생깁니다. 빌드를 하면 빌드가 잘 되지만, 안드로이드 스튜디오 편집기에서 오류가 표시되는 경우가 있습니다. kotlin 의 collection 같은 걸 접근 못하고 있다는 걸로 나타나는데, 정확한 원인은 모르겠지만 추측해 보자면 파일 접근 권한이 문제가 생기는 것 같습니다. 제가 해결한 방식은 이렇습니다. 1. 안드로이드 스튜디오를 비롯한 프로젝트 창들을 모두 닫고 종료합니다. 2. 터미널을 열고 3. ..

Android Development 2021.09.04

Kotlin Object - Object Expressions 코틀린 객체 표현식

Object는 일부 클래스에 대해 새로운 하위 클래스를 명시적으로 선언하지 않고, 그 클래스를 조금 일부를 변경한 객체를 만들어야 할 때 사용합니다. Object Expressions 또는 Object Declarations를 사용하여 이를 처리할 수 있습니다. 그 중에서 Object Expressions 에 대해 적어봅니다. 코틀린 공식 문서를 참고했습니다. 객체 표현식 객체 표현식은 클래스 선언으로 명시적으로 선언되지 않은 클래스, 즉 익명 클래스의 객체를 만듭니다. 이러한 클래스는 일회용으로 유용합니다. 처음부터 정의하거나, 기존 클래스에서 상속하거나, 인터페이스를 구현할 수 있습니다. 익명 클래스의 인스턴스는 이름이 아닌 표현식으로 정의되므로 익명 객체 라고도 합니다. 처음부터 익명 객체를 생성하..