---

license: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

           http://www.apache.org/licenses/LICENSE-2.0
    
         Unless required by applicable law or agreed to in writing,
         software distributed under the License is distributed on an
         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
         KIND, either express or implied.  See the License for the
         specific language governing permissions and limitations
    

   under the License.
---

<div id="home">
  <h1>
    가이드
  </h1>
  
  <ul>
    <li>
      <h2>
        개요
      </h2>
      
      <span>Cordova가 처음이라면?</span>
    </li>
    <li>
      <h2>
        플랫폼 지원
      </h2>
      
      <span>모든 주요 기능에 대 한 호환성 테이블입니다.</span>
    </li>
    <li>
      <h2>
        명령줄 인터페이스
      </h2>
      
      <span>만들기, 빌드 및 명령줄에서 배포.</span>
    </li>
    <li>
      <h2>
        플랫폼 가이드
      </h2>
      
      <span>각 SDK 업데이트 프로젝트 설정</span>
    </li>
    <li>
      <h2>
        Plugman를 사용 하 여 플러그인을 관리 하
      </h2>
      
      <span>CLI 없이 플러그인을 관리 하기 위해 Plugman를 사용 하 여</span>
    </li>
    <li>
      <h2>
        Config.xml 파일
      </h2>
      
      <span>응용 프로그램의 기능을 사용자 지정 합니다.</span>
    </li>
    <li>
      <h2>
        아이콘 및 시작 화면
      </h2>
      
      <span>애플 리 케이 션의 표시 이미지를 사용자 지정 합니다.</span>
    </li>
    <li>
      <h2>
        WebViews 포함
      </h2>
      
      <span>프로젝트에서 코르도바 WebView를 구현 합니다.</span>
    </li>
    <li>
      <h2>
        플러그인 개발 가이드
      </h2>
      
      <span>첫 번째 플러그인을 개발 합니다.</span>
    </li>
    <li>
      <h2>
        개인 정보 보호 가이드
      </h2>
      
      <span>중요 한 모바일 개인 정보 보호 문제에 대해 자세히 알아보기</span>
    </li>
    <li>
      <h2>
        화이트 리스트 가이드
      </h2>
      
      <span>외부 리소스에 대 한 응용 프로그램 액세스를 부여 합니다.</span>
    </li>
    <li>
      <h2>
        스토리지
      </h2>
      
      <span>기본 저장 옵션의 개요입니다.</span>
    </li>
    <li>
      <h2>
        <a href="_index.html">키워드 인덱스</a>
      </h2>
      
      <span>설명서의 전체 인덱스입니다.</span>
    </li>
  </ul>
  
  <h1>
    API 참조
  </h1>
  
  <ul>
    <li>
      <h2>
        이벤트
      </h2>
      
      <span>자바 스크립트를 통해 네이티브 이벤트에 후크 합니다.</span>
    </li>
    <li>
      <h2>
        플러그인 Api
      </h2>
      
      <span>발견 어떤 플러그인 코르도바 프로젝트에서 사용 하 여 사용할 수 있습니다.</span>
    </li>
  </ul>
</div>