[[TableOfContents]] = ChromeApp 이란? = 구글의 [Web Browser]인 [Chrome]에서 동작하는 Web App을 말한다. = 사전 지식 = * [HTML], [:html5 HTML5] * [JavaScript] * 웹페이지에 대한 전반적인 이해 = How To Make Chrome App = == 준비물 == google chrome하나면 끝! 구글 크롬의 Development Tool이 왠만한 [IDE]를 빰친다. == Chrome App의 종류[* https://developers.google.com/chrome/web-store/articles/apps_vs_extensions?hl=ko] == === Packaged App === 사용자의 Local에 모든 데이터를 저장하는 앱. 무조건 별도의 창으로 뜨기 때문에 마치 native app을 사용하는 듯한 느낌을 받을수 있다. 또한 모든 코드가 사용자의 컴퓨터에 저장되기 때문에 오프라인 상태에서도 사용할수 있다는 장점이 있으나 native앱처럼 느껴지면서 native앱처럼 동작할수 없다는 점이 가장 큰 문제가 된다. === Hosted App === 일반 [WebApp]과 다를 것이 없으며 조금 다른점은 크롬에게 필요한 권한을 요청한뒤 sandbox를 약간 깨는 앱을 만들수 있다는 것이다. 이 때 Host App을 만든다는 것은 그냥 일반 웹페이지를 만드는 것과 다를게 없으며 Hosted App자체는 링크만 가지게 된다. 즉, 반드시 서버가 필요하다. === Extensions === 앱과는 조금 차이가 있지만 비슷한 부류기에 여기에 적는다. Extension은 브라우져의 기능을 확장 하는 것이며 브라우져의 background에서 동작하게 된다. window로 치자면 일종의 [service]이며 리눅스로 치자면 [demon]이라 할수 있다. 별도의 창을 갖는 것도 가능하며 모든 페이지에 변화를 주는 것도 가능하다. 주로 캡쳐 프로그램이나 채팅 프로그램을 extension으로 제작하게 된다. == 개발환경 설정 == 1. 적당한 폴더를 만든다. 1. 그 폴더안에 아래를 참고하여 manifest.json파일을 만든다. 1. 크롬을 켠다. 1. 크롬메뉴의 도구의 확장 프로그램[* [[chrome://extensions/|바로가기]]]을 켠다. 1. 개발자 모드를 체크하여 활성화 시킨다. 1. 압축해제된 확장 프로그램 로드를 눌러 아까 폴더를 선택하여 확장 프로그램을 로드한다. 1. 크롬 개발자 도구(F12)를 켠다. 1. 우측하단의 기어모양을 눌러서 개발자 도구 옵션을 켠다. 1. workspace tab으로 간다. 1. add버튼을 눌러 아까 폴더를 추가한다.(이떄 상단에 권한 확인 바에서 '예'를 눌러줄것 1. 아까 로드해둔 확장프로그램을 켠후 크롬 개발자 도구를 켠다. 1. source tab에서 우측에 파일 브라우져에서 오른쪽 클릭한후 mapping to localfile를 선택하여거 확인후 매핑한다. == 만들기 == === manifest.json === Chorme App에는 반드시 manifest.json이 존재해야만 하며 이 파일을 기준으로 어떤 종류의 App인지 판단한다. manifest.json은 당연히 json파일이므로 json형식을 따라야한다. ==== Hosted Apps ==== {{{ { "name": "Google Mail", //App의 이름 "description": "Read your gmail", //App의 간략한 설명 "version": "1", //버전 "app": { "urls": [ //해당하는 앱이 동작하는 url "*://mail.google.com/mail/", "*://www.google.com/mail/" ], "launch": { //App의 Main Page "web_url": "http://mail.google.com/mail/" } }, "icons": { "128": "icon_128.png" //App이 표시되는 Icon }, "permissions": [ //App에 요구되는 permission "unlimitedStorage", "notifications" ] } }}} == Link == ---- '''contribute by : '''[안혁준]