✅DI(Dependency Injdection, 의존성 주입)
외부에서 객체 간의 관계(의존성)를 결정해 주는 것. 즉, 객체를 직접 생성하는 것이 아니라 외부에서 생성 후 주입시켜 주는 방식
✅Plugin
프로그램이나 소프트웨어에 추가 기능을 제공하기 위해 확장 모듈로서 동작하는 소프트웨어 구성 요소. 쉽게말해, 내가 사용하고 있는 프로그램에 어떠한 기능을 더하는 것.
✅SDK(Software Development Kit) 👉 서버에서 미리 만들어 놓은 기능
소프트웨어 개발 키트. 쉽게말해, 개발하는 데 필요한 도구와 라이브러리의 집합이자 다른 앱의 기능이나 데이터를 가져다 쓸 수 있도록 API를 제공해주는 소프트웨어
(빌드도구,컴파일러,디버거,API,라이브러리[비슷한 특성을 가진 플러그인의 집합] 등을 포함)
✅API(Application Programming Interface) 👉 요청과 응답에 대한 약속
앱들 사이의 통신 수단이자 상호작용 방법. 즉, 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 상호작용 체계(프로토콜)
※프로토콜: 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
※ RESTful API
REST 자체는 HTTP 프로토콜의 아키텍처 스타일 중 하나이고, 이러한 REST의 원칙을 지킨 API를 RESTful API라고 한다.
※ CRUD(HTTP매서드)
※ HTTP 상태코드
200번대 코드: 잘 됐어
400번대 코드: 잘 안 됐고, 클라이언트의 요청에서 문제가 있어
500번대 코드: 잘 안 됐고, 서버의 응답에서 문제가 있어
※ JSON
※ Java Converting 라이브러리
✅ SDK & API
🤔 안드로이드 버전 / API level
플랫폼 버전 및 API 수준
안드로이드 플랫폼 버전
: Android 1.0부터 시작하여 Android 15.0까지 나온 상태
(24년 기준)
API level
: 안드로이드 플랫폼 버전에서 제공하는 프레임워크 API 수정 버전을 고유하게 식별해주는 정수 값
minSDK
⇒ "앱이 실행될 수 있는 최소 API 레벨"
(권장사항- 사용자층과 시장 점유율을 고려하여 설정할 것)
: 애플리케이션이 실행하는 데 필요한 최소 api레벨지정.
안드로이드 시스템은 시스템의 api레벨이 지정 값보다 낮은 경우 사용자가 앱을 설치하는 것을 방지한다.
※ 추천 api: 런타임 퍼미션을 사용하는 버전 23(마시멜로)
-> 대략 95%의 기기 커버
※ 모든 기기가 전부 사용할 수 있도록 minSDK를 가장 낮은 버전으로 설정하는 것이 과연 가장 좋은 방법일까?
-> 단점: 최신 api 기능 및 개발도구 사용 제한 / 버전에 따른 코드 분기처리로 인한 코드 복잡도 증가 / 오래된 버전의 경우 보안 취약 / 사용자 분포가 현저히 적기 때문에 비효율적
(EX. CalendarProvider API는 플랫폼 버전4.0(API레벨 14)이 출시될 때 나온 API이다.이 기능이 포함된 앱이 만약 플랫폼 버전4.0이하 버전일 경우, 실행했을 때 4.0이전 버전에는 캘린터API가 존재하지 않음으로 앱이 정상 실행되지 않는다.)
targetSDK
: "앱이 최적으로 실행되도록 설계되고 테스트 된 API 레벨"
(권장사항- "최신 안드로이드 버전에 맞출 것")
※API = targetSDK
-> targetSDK에서 제공하는 기능을 기기에서 모두 사용가능
※API < targetSDK
-> 해당 기기의 OS 버전을 기반으로 동작함
※API > targetSDK
-> targetSDK에 버전을 맞추어진다.
(compatibility mode enable)
그러나, 이렇게 사용하는 경우는 거의 없고, minSDK보다 targetSDK가 더 높도록 설정한다. 사용자에게 최신 수준의 개선 사항 혜택을 주기 위함.
compileSdkVersion
: 컴파일 시 사용되는 Android API 레벨
※ 보통 targetSDK와 동일하며 둘 다 최신 SDK를 가리켜야 한다.
결론: targetSDK과 compileSdkVersion을 최신 안드로이드 버전에 맞추되, minSDK(점유율)를 고려하여 버전에 따른 코드 분기처리도 함께 해줄 것!
✅ JDK: Java 프로그램을 개발하기 위해 필요한 도구 모음이다. JDK는 Java 컴파일러, 디버깅 도구, 자바 가상 머신 (JVM) 등을 포함하고있다.
📜Reference
안드로이드 버전/api 레벨/sdk 버전
의존성 주입
JDK