U E D R , A S I H C RSS

How To/Make Chrome App


1. ChromeApp 이란?

구글의 Web BrowserChrome에서 동작하는 Web App을 말한다.

2. 사전 지식

  • HTML, HTML5
  • JavaScript
  • 웹페이지에 대한 전반적인 이해

3. How To Make Chrome App

3.1. 준비물

google chrome하나면 끝! 구글 크롬의 Development Tool이 왠만한 IDE를 빰친다.

3.2. Chrome App의 종류[1]

3.2.1. Packaged App

사용자의 Local에 모든 데이터를 저장하는 앱. 무조건 별도의 창으로 뜨기 때문에 마치 native app을 사용하는 듯한 느낌을 받을수 있다. 또한 모든 코드가 사용자의 컴퓨터에 저장되기 때문에 오프라인 상태에서도 사용할수 있다는 장점이 있으나 native앱처럼 느껴지면서 native앱처럼 동작할수 없다는 점이 가장 큰 문제가 된다.

3.2.2. Hosted App

일반 WebApp과 다를 것이 없으며 조금 다른점은 크롬에게 필요한 권한을 요청한뒤 sandbox를 약간 깨는 앱을 만들수 있다는 것이다. 이 때 Host App을 만든다는 것은 그냥 일반 웹페이지를 만드는 것과 다를게 없으며 Hosted App자체는 링크만 가지게 된다. 즉, 반드시 서버가 필요하다. 자세한 내용은 링크참조

3.2.3. Extensions

앱과는 조금 차이가 있지만 비슷한 부류기에 여기에 적는다. Extension은 브라우져의 기능을 확장 하는 것이며 브라우져의 background에서 동작하게 된다. window로 치자면 일종의 service이며 리눅스로 치자면 demon이라 할수 있다. 별도의 창을 갖는 것도 가능하며 모든 페이지에 변화를 주는 것도 가능하다. 주로 캡쳐 프로그램이나 채팅 프로그램을 extension으로 제작하게 된다.

3.3. 개발환경 설정

  1. 적당한 폴더를 만든다.
  2. 그 폴더안에 아래를 참고하여 manifest.json파일을 만든다.
  3. 크롬을 켠다.
  4. 크롬메뉴의 도구의 확장 프로그램[2]을 켠다.
    1. 개발자 모드를 체크하여 활성화 시킨다.
    2. 압축해제된 확장 프로그램 로드를 눌러 아까 폴더를 선택하여 확장 프로그램을 로드한다.
  5. 크롬 개발자 도구(F12)를 켠다.
    1. 우측하단의 기어모양을 눌러서 개발자 도구 옵션을 켠다.
    2. workspace tab으로 간다.
    3. add버튼을 눌러 아까 폴더를 추가한다.(이떄 상단에 권한 확인 바에서 '예'를 눌러줄것
  6. 아까 로드해둔 확장프로그램을 켠후 크롬 개발자 도구를 켠다.
    1. source tab에서 우측에 파일 브라우져에서 오른쪽 클릭한후 mapping to localfile를 선택하여거 확인후 매핑한다.

3.4. 만들기

3.4.1. manifest.json

Chorme App에는 반드시 manifest.json이 존재해야만 하며 이 파일을 기준으로 어떤 종류의 App인지 판단한다. manifest.json은 당연히 json파일이므로 json형식을 따라야한다.

3.4.1.1. Packaged App

{
  "manifest_version": 2,     //menifest_version 거희 모든 경우 2로 고정
  "name": "My first app",    //App이름
  "version": "1",
  "app": {
    "background": {
      "scripts": ["main.js"] //시작 스크립트
    }
  }
}

3.4.1.2. 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"
  ]
}
일반적으로 Hosted App은 Chrome App전용으로 만들기 보다는 WebApp으로 만들어 여러 브라우져에서 모두 작동가능하도록 만든다. 따라서 Hosted App은 일반적으로 링크에 해당하는 기능 외에는 제공하지 않는 것이 보통이다. Chrome에서 Hosted App을 캐싱하여서 로컬에서도 동작할수 있게끔 하는 방법을 알고싶다면 링크를 참조하자.

3.4.2. Packaged App : main.js

Packaged App은 모든 동작이 js파일을 실행함으로써 일어난다. 즉 main.js를 Chrome에서 불러들여서 실행을 하면 그 코드대로 실행된다. 즉 크롬앱의 진입점이라 할수 있으며 파일 이름 자체는 manifest.json에서 수정이 가능하다. 아래 코드는 시작되었을때 새 창을 띄워주는 코드이다.
chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('index.html', {
    bounds: {
      width: 500,
      height: 309
    }
  });
});
당연한 이야기이지만 여러개의 창을 띄우는 것도 가능하다. window.create를 여러번 해주면 여러창이 뜬다. 일단 창을 띄우고 나면 htmlJavaScript를 이용해서 index.html을 작성하면 된다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:26
Processing time 0.0270 sec