특정 플랫폼을 위한 앱. 각 OS 전용 툴을 이용하여 서로 다은 언어로 따로 개발 후 각 플랫폼에 배포한다.
IOS(Swift), 안드로이드(JAVA, Kotlin) 코드를 직접 작성한다
가장 빠르고 안정적인 환경을 제공한다
디바이스 전체에 접근 권한을 가지고 있기 때문에 휴대폰의 성능, 가능한 API를 모두 사용할 수 있다(스와이프 제스처, 각종 센서, 내부 파일 시스템)
높은 사양의 그래픽을 이용할 수 있다
특정 언어, XCode, 안드로이드 스튜디오를 따로 배워야 한다
그러므로 시간과 비용, 인력이 많이 필요하다
앱 업데이트시 앱 마켓의 심사를 거쳐야 한다
네이티브 코드가 아닌 언어로 작성한 후 네이티브 언어로 변환
(리액트 네이티브의 경우 리액트로 작성하면 JS로 변환되고, 안드로이드 또는 아이폰의 자바스크립트 엔진이 실행, Flutter는 Dart로 작성하고 C, C++로 컴파일됨, Xamarin은 C#으로 작성하고 Intermediate Language로 컴파일됨)
두 개의 플랫폼을 한꺼번에 개발한다
다양한 개발자가 모인다
크로스플랫폼앱이 느리진 않지만 특정 작업에 한해 느리고(컴파일 과정이 있기 때문) 휴대폰의 성능을 모두 이용하지 못할 수 있다.
앱의 화면이나 기능은 웹 기반으로 제작하고 앱 마켓 등록과 설치를 위해 네이티브 앱으로 패키징한다.
(안드로이드와 IOS에서 제공하는 WebView라는 UI 컴포넌트를 앱으로 패키징하여 배포한다)
HTML, CSS, JavaScript를 웹 뷰가 감싸고 스토어로 보낸다
웹 뷰: 브라우저의 윈도우지만 네비게이션이 없다
네이티브 앱에 대한 지식이 필요 없다
한 번 작성된 동일한 웹 페이지가 두 OS에서 모두 작동한다
웹 기반으로 제작되지만 웹 API, 모바일 API를 모두 사용할 수 있다
패키징과 배포 과정에서 네이티브 지식이 필요하다
WebView가 웹이므로 사용자의 네트워크 환경이 오프라인인 경우 앱 사용이 제한적이다
UI, 버튼, 네비게이션을 모두 직접 구현해주어야 한다
휴대폰의 강력한 기능을 사용하지 못한다.(단지 웹 사이트이기 때문)
APACH CORDOVA, PhoneGap
https://www.youtube.com/watch?v=ksz_mSninEY
https://www.hanl.tech/blog/native-vs-hybrid-vs-pwa/
https://blog.hectodata.co.kr/app_kinds/