summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/html-intl/intl/ko/preview/backup/index.jd327
-rw-r--r--docs/html-intl/intl/ko/preview/download.jd348
-rw-r--r--docs/html-intl/intl/ko/preview/features/app-linking.jd123
-rw-r--r--docs/html-intl/intl/ko/preview/index.jd67
-rw-r--r--docs/html-intl/intl/ko/preview/license.jd143
-rw-r--r--docs/html-intl/intl/ko/preview/samples.jd70
-rw-r--r--docs/html-intl/intl/ko/preview/setup-sdk.jd207
-rw-r--r--docs/html-intl/intl/ko/preview/support.jd67
-rw-r--r--docs/html-intl/intl/ko/preview/testing/guide.jd187
-rw-r--r--docs/html-intl/intl/ko/preview/testing/performance.jd656
10 files changed, 2195 insertions, 0 deletions
diff --git a/docs/html-intl/intl/ko/preview/backup/index.jd b/docs/html-intl/intl/ko/preview/backup/index.jd
new file mode 100644
index 0000000..b3952d5
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/backup/index.jd
@@ -0,0 +1,327 @@
+page.title=앱용 자동 백업
+page.tags=backup, previewresources, androidm
+page.keywords=백업, 자동 백업, 미리 보기
+page.image=images/cards/card-auto-backup_2x.png
+@jd:body
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>이 문서의 내용</h2>
+ <ol>
+ <li><a href="#overview">개요</a></li>
+ <li><a href="#configuring">데이터 백업 구성</a></li>
+ <li><a href="#testing">백업 구성 테스트</a></li>
+ <li><a href="#issues">알려진 문제</a></li>
+ </ol>
+ </div>
+</div>
+
+<p>
+ 사용자는 앱 내에서 데이터를 생성하고 기본 설정을 설정하는 데 상당한 시간과 노력을 들이는 경우가 빈번합니다.
+ 사용자가 고장 난 기기를 교체하거나 새것으로 업그레이드하면 그러한 데이터를 보존해 두는 것이 훌륭한 사용자 환경을 보장하는 데 중요한 부분을 차지합니다.
+ Android M 미리 보기 시스템에서 실행되는 기기는 이러한 상황에서 사용자에게 좋은 환경을 보장하는 데 도움을 주기 위해 앱 데이터를 Google Drive에 자동으로 백업합니다.
+
+ 이런 앱 데이터는 사용자가 기기를 바꾸거나 업그레이드하면 자동으로 복원됩니다.
+
+</p>
+
+<p>
+ 자동 백업 기능은 Android M 미리 보기에서 실행되는 기기에 설치된 모든 앱에 활성화되어 있습니다. 달리 앱 코드를 추가하지 않아도 됩니다.
+ 시스템은 사용자에게 자동 데이터 백업에서 옵트아웃할 수도 있습니다.
+ 앱에서 어떤 데이터를 백업할지 제한하는 쪽을 선택할 수도 있습니다.
+</p>
+
+<p>
+ 이 문서에서는 새로운 시스템 동작과 앱에 대해 어느 데이터를 백업할지 지정하는 방법을 설명합니다.
+
+</p>
+
+<h2 id="overview">개요</h2>
+
+<p>
+ 자동 백업 기능은 앱이 사용자 기기에서 생성한 데이터를 보존하기 위해 해당 데이터를 사용자의 Google Drive 계정에 업로드하고 암호화합니다.
+ 데이터 저장에 대해 개발자나 사용자에게 아무런 요금도 부과하지 않고, 저장된 데이터는 사용자 개인의 Drive 할당량을 사용한 것으로 감안하지 않습니다.
+ M 미리 보기 시행 기간 중 사용자는 Android 앱 한 개당 최대 25MB까지 저장할 수 있습니다.
+
+</p>
+
+<p>
+ 자동 백업은 24시간마다 한 번씩, 기기가 유휴 상태일 때, 충전 중일 때 및 Wi-Fi 네트워크에 연결될 때마다 수행합니다.
+ 이러한 조건에 부합하면 백업 관리자 서비스가 이용 가능한 모든 백업 데이터를 클라우드에 업로드합니다.
+ 사용자가 새 기기로 전환하거나 백업된 앱을 제거했다가 다시 설치하면 복원 작업이 백업된 데이터를 새로 설치된 앱의 데이터 디렉터리 안에 복사합니다.
+
+
+</p>
+
+<p class="note">
+ <strong>참고:</strong> 레거시 <a href="{@docRoot}google/backup/index.html">Android 백업 서비스</a>를 이용하는 앱의 경우, 이 새 동작이 적용되지 않고 기존 백업 동작이 평소처럼 작동합니다.
+
+
+</p>
+
+
+<h3 id="auto-exclude">자동으로 배제된 데이터 파일</h3>
+
+<p>
+ 데이터 중에는 예를 들어 임시 파일과 캐시 등 백업하지 않아도 되는 것도 있습니다. 따라서 자동 백업 서비스는 특정 데이터 파일을 기본적으로 배제합니다.
+
+</p>
+
+<ul>
+ <li>디렉터리 내의 파일 중 {@link android.content.Context#getCacheDir
+ getCacheDir()} 및 {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
+ 메서드로 참조되는 파일.
+ </li>
+
+ <li>외부 저장소에 위치한 파일 중(디렉터리에 상주하는 것이 아닌 한)
+{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
+ 메서드로 참조되는 파일.
+ </li>
+
+ <li>디렉터리에 위치한 파일 중
+{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} 메서드로 참조되는 파일.
+ </li>
+</ul>
+
+<h2 id="configuring">데이터 백업 구성</h2>
+
+<p>
+ M 미리 보기 기기에 설치된 앱이 생성한 데이터는 모두 백업됩니다. 다만 이전 섹션에서 나열한 자동으로 배제되는 파일만은 예외입니다.
+ 앱에서 어느 데이터를 백업할지 좀 더 상세하게 제한하고 구성하려면 앱 매니페스트에 있는 설정을 사용하면 됩니다.
+
+</p>
+
+<h3 id="include-exclude">데이터 포함 또는 배제</h3>
+
+<p>
+ 앱에 필요한 데이터가 무엇이며 어떤 식으로 저장하는지에 따라 특정 파일이나 디렉터리를 포함 또는 배제하기 위해 특정한 규칙을 설정해야 할 수 있습니다.
+ 자동 백업 서비스는 이러한 백업 규칙 설정을 지원하는 데 XML 구성 파일과 앱 매니페스트를 사용하는 방식을 씁니다.
+
+ 앱 매니페스트에서는 다음 예에서 표시된 것처럼 백업 구성표 구성 파일을 지정하면 됩니다.
+
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.my.appexample"&gt;
+ &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
+ &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
+ &lt;app ...
+<strong> android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
+ &lt;/app&gt;
+ ...
+&lt;/manifest&gt;
+</pre>
+
+<p>
+ 이 예시 코드에서는 <code>android:fullBackupContent</code> 특성이 XML 파일을 나타냅니다. 이는 앱 개발 프로젝트의 <code>res/xml/</code> 디렉터리 내에 위치하며, 일명 <code>mybackupscheme.xml</code>이라고 합니다.
+
+ 이 구성 파일에는 어느 파일이 백업되는지에 대한 규칙이 포함되어 있습니다.
+ 다음 예시 코드는 특정 파일을 백업에서 배제하는 구성 파일을 나타낸 것입니다.
+
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;full-backup-content&gt;
+ &lt;exclude domain="database" path="device_info.db"/&gt;
+&lt;/full-backup-content&gt;
+</pre>
+
+<p>
+ 이 예에서의 백업 구성은 특정 데이터베이스 파일만 백업되지 않게 배제합니다.
+ 나머지 파일은 모두 백업됩니다.
+</p>
+
+<h4>백업 구성 구문</h4>
+
+<p>
+ 백업 서비스 구성을 사용하면 구체적으로 어느 파일을 백업에 포함시키고 백업에서 배제할지 지정할 수 있게 해줍니다.
+ 데이터 백업 구성 XML 파일에 사용되는 구문은 다음과 같습니다.
+</p>
+
+<pre>
+&lt;full-backup-content&gt;
+ &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
+ &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
+&lt;/full-backup-content&gt;
+</pre>
+
+<p>
+ 다음의 요소와 특성을 사용하면 어느 파일을 백업에 포함시키거나 백업에서 배제할지 지정할 수 있게 해줍니다.
+
+</p>
+
+<ul>
+ <li>
+ <code>&lt;include&gt;</code>. 이 요소는 일련의 리소스를 백업하기로 지정하는 경우 사용하십시오. 시스템이 기본적으로 앱 안의 모든 데이터를 백업하는 대신 이 방식을 쓰면 됩니다.
+ 예를 들어 <code>&lt;include&gt;</code> 태그를 지정하면 시스템은 이 요소로 <em>지정된 리소스만</em> 백업합니다.
+
+
+ </li>
+
+ <li>
+ <code>&lt;exclude&gt;</code>. 이 요소는 일련의 리소스를 백업에서 배제하기로 지정하는 데 사용하세요.
+ 시스템이 앱 안의 모든 데이터를 백업하되, 이 요소로 지정된 리소스만 제외합니다.
+
+ </li>
+
+ <li>
+ <code>domain.</code> 백업에 포함시키거나 백업에서 배제하고자 하는 리소스 유형입니다. 이 특성에 대해 지정할 수 있는 유효한 값에는 다음과 같은 것들이 있습니다.
+
+ </li>
+
+ <li style="list-style: none">
+ <ul>
+ <li>
+ <code>root</code>. 리소스가 앱의 루트 디렉터리에 있음을 나타냅니다.
+ </li>
+
+ <li>
+ <code>file</code>. 디렉터리 내에 있는 리소스 중
+ {@link android.content.Context#getFilesDir getFilesDir()} 메서드에 의해 반환된 것에 상응합니다.
+ </li>
+
+ <li>
+ <code>database</code>.
+ {@link android.content.Context#getDatabasePath getDatabasePath()} 메서드에 의해, 또는
+ {@link android.database.sqlite.SQLiteOpenHelper} 클래스를 사용하여 반환된 데이터베이스에 상응합니다.
+ </li>
+
+ <li>
+ <code>sharedpref</code>. {@link android.content.Context#getSharedPreferences getSharedPreferences()}
+ 메서드에 의해 반환된 {@link android.content.SharedPreferences} 객체에
+ 상응합니다.
+ </li>
+
+ <li>
+ <code>external</code>. 리소스가 외부 저장소에 있으며, 디렉터리 내의 파일 중 {@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 메서드에 의해 반환된 것에 상응합니다.
+
+
+ </li>
+
+ <li>
+ <code>path</code>. 백업에 포함시키거나 백업에서 배제하고자 하는 리소스로 이어지는 파일 경로입니다.
+
+ </li>
+ </ul>
+ </li>
+</ul>
+
+
+<h3 id="prohibit">데이터 백업 금지하기</h3>
+
+<p>
+ 앱 데이터 중 어떤 것이라도 자동 백업을 방지하기로 선택할 수도 있습니다. 매니페스트의 앱 요소에서 <code>android:allowBackup</code> 특성을 <code>false</code>로 설정하면 됩니다.
+
+ 이 설정은 다음 예시 코드로 설명해 놓았습니다.
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.my.appexample"&gt;
+ &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
+ &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
+ &lt;app ...
+<strong> android:allowBackup="false"&gt;</strong>
+ &lt;/app&gt;
+ ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="testing">백업 구성 테스트</h2>
+
+<p>
+ 백업 구성을 만들었으면 앱이 데이터를 저장하고 제대로 복구되는지 확인하기 위해 테스트해보는 것이 좋습니다.
+
+</p>
+
+
+<h4>백업 로깅 활성화</h4>
+
+<p>
+ 백업 기능이 XML 파일을 구문 분석하는 방법을 결정하는 데 도움이 되는 방법으로 테스트 백업을 수행하기 전에 로깅을 활성화하는 방안이 있습니다.
+
+</p>
+
+<pre class="noprettyprint">
+$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
+</pre>
+
+<h4>백업 테스트</h4>
+
+<p>수동으로 백업을 실행하려면, 우선 다음과 같은 명령을 호출하여 백업 관리자를 초기화해야 합니다.
+
+</p>
+
+<pre class="noprettyprint">
+$ adb shell bmgr run
+</pre>
+
+<p>
+ 다음으로, 다음과 같은 명령을 사용하여 애플리케이션을 수동으로 백업하되 앱의 패키지 이름을 <code>&lt;PACKAGE&gt;</code> 매개변수로 지정합니다.
+
+</p>
+
+<pre class="noprettyprint">
+$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
+
+
+<h4>복구 테스트</h4>
+
+<p>
+ 앱 데이터를 백업한 다음 수동으로 복구를 시작하려면, 다음 명령을 호출하되, 앱에 대한 패키지 이름을 <code>&lt;PACKAGE&gt;</code> 매개변수로 지정하십시오.
+
+</p>
+
+<pre class="noprettyprint">
+$ adb shell bmgr restore &lt;PACKAGE&gt;
+</pre>
+
+<p class="warning">
+ <b>경고:</b> 이 작업을 수행하면 앱이 중지되고 복구 작업을 수행하기 전에 데이터를 지워버립니다.
+
+</p>
+
+<p>
+ 앱의 복구 프로세스를 시작하려면 앱을 제거했다가 다시 설치하면 됩니다. 앱 데이터는 앱 설치가 완료되면 클라우드에서 자동으로 복원됩니다.
+
+</p>
+
+
+<h4>백업 문제 해결</h4>
+
+<p>
+ 문제에 직면하면 백업 데이터와 관련 메타데이터를 지우면 됩니다. 그러려면 <strong>설정 &gt; 백업</strong>에서 백업을 껐다가 켜거나, 기기를 공장 재설정하거나 아니면 다음의 명령을 호출하십시오.
+
+
+</p>
+
+<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
+
+<p>
+ <code>&lt;TRANSPORT&gt;</code> 값이 <code>com.google.android.gms</code>로 접두사가 붙어있어야 합니다.
+ 전송 목록을 가져오려면 다음과 같은 명령을 호출하면 됩니다.
+</p>
+
+<pre>$ adb shell bmgr list transports</pre>
+
+<h2 id="issues">알려진 문제</h2>
+
+<p>다음은 자동 백업 서비스에 대해 알려진 문제입니다.</p>
+
+<ul>
+ <li><strong>Google Cloud 메시지</strong> - 푸시 알림에 Google Cloud 메시지를 사용하는 앱의 경우, Google Cloud 메시지 등록에 의해 반환된 등록 ID를 백업하면 복원된 앱에 대한 푸시 알림을 끊게 되는 문제가 알려져 있습니다. 새 기기에 설치된 다음에는 새 등록 ID에 대하여 API를 쿼리하는 것이 중요합니다. 이것은 기존 등록 ID가 백업된 경우는 해당되지 않습니다.
+
+
+
+
+ 이 문제를 피하려면 백업된 파일 집합에서 등록 ID를 배제하십시오.
+
+ </li>
+</ul>
diff --git a/docs/html-intl/intl/ko/preview/download.jd b/docs/html-intl/intl/ko/preview/download.jd
new file mode 100644
index 0000000..545ef80
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/download.jd
@@ -0,0 +1,348 @@
+page.title=다운로드
+page.image=images/cards/card-download_16-9_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+ <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+ <p class="sdk-terms-intro">Android 미리 보기 SDK의 구성 요소를 다운로드하고 설치하기 전에 우선 다음과 같은 사용 약관에 동의해야 합니다.
+</p>
+
+ <h2 class="norule">사용 약관</h2>
+
+ <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+이것은 Android SDK 미리 보기 라이선스 계약서입니다(이하 "라이선스 계약").
+
+1. 개요
+
+1.1 Android SDK 미리 보기(본 라이선스 계약에서는 "미리 보기"라고 칭하며, 구체적으로 Android 시스템 파일, 패키지 API 및 미리 보기 라이브러리 파일이 이용 가능한 경우 및 이용 가능하게 전환된 경우 이를 포함한 것을 가리킴)는 본 라이선스 계약 조건에 따라 계약자에게 사용을 허여합니다. 본 라이선스 계약은 미리 보기 사용과 관련하여 계약자와 Google 간에 법적 구속력이 있는 계약을 체결합니다.
+
+1.2 "Android"는 기기를 위한 Android 소프트웨어 스택을 의미합니다. 이는 http://source.android.com/ URL에 위치하며 수시로 업데이트되는 Android 오픈 소스 프로젝트에서 제공됩니다.
+
+1.3 "Google"은 미국 1600 Amphitheatre Parkway, Mountain View, CA 94043에 본사를 두고 있는 델라웨어주 법인인 Google Inc.를 의미합니다.
+
+2. 라이선스 계약에 동의
+
+2.1 이 미리 보기를 사용하려면, 먼저 라이선스 계약에 동의해야 합니다. 이 라이선스 계약에 동의하지 않고 미리 보기를 사용해서는 안 됩니다.
+
+2.2 수락을 클릭하고/거나 미리 보기를 사용하면 본 라이선스 계약 조건에 동의하는 것으로 간주됩니다.
+
+2.3 미국법 또는 현재 거주 중이거나 미리 보기를 사용하는 국가를 포함하여 다른 국가의 법에 따라 미리 보기를 받는 것이 금지된 경우, 미리 보기를 사용할 수 없으며 본 라이선스 계약을 수락할 수 없습니다.
+
+2.4 회사 또는 단체 내에서 내부적으로 미리 보기를 사용하며 고용주 또는 기타 단체를 대신하여 본 라이선스 계약 준수에 동의하는 경우, 계약자의 고용주나 그 단체에 본 라이선스 계약에 대한 구속력을 부여할 수 있는 모든 법적 권한을 계약자가 갖고 있음을 진술하고 보증합니다. 구속력을 부여할 수 있는 법적 권한이 없을 경우, 고용주 또는 기타 단체를 대신하여 본 라이선스 계약에 동의하거나 미리 보기를 사용할 수 없습니다.
+
+3. Google이 허하는 미리 보기 라이선스
+
+3.1 본 라이선스 계약의 조건에 따라 Google은 계약자에게 로열티 없고 양도 불가능하며 비독점적이고 2차 인가를 불허하며, 한정되고 무효화할 수 있는 미리 보기 사용 권한을 허용하여 회사 또는 조직 내에서 개인적 또는 내부적으로 사용할 수 있도록 합니다. 이는 Android 플랫폼에서 실행되는 애플리케이션을 개발할 목적으로만 사용해야 합니다.
+
+3.2 계약자는 SDK에 존재하는 지적 재산권을 포함한 SDK에 대한 모든 법적인 권리, 소유권 및 이익이 Google 또는 제3자에게 있음에 동의합니다 "지적 재산권"은 모든 특허법, 저작권법, 영업비밀법, 상표법상 존재하는 모든 권리 및 기타 모든 재산권을 의미합니다. Google은 계약자에게 명시적으로 부여하지 않은 모든 권리를 보유합니다.
+
+3.3 본 라이선스 계약에 명시적으로 허용된 용도 외에는 미리 보기를 사용할 수 없습니다. 해당 제3자 라이선스 요건이 허용하는 범위를 제외하고 계약자는 미리 보기의 일부분을 (a) 복사(백업 목적 제외), 수정, 개작, 재배포, 역컴파일, 리버스 엔지니어링, 분해하거나 이를 통해 파생물을 생성하거나 (b) 개인 컴퓨터를 제외한 모바일 단말기 또는 기타 모든 하드웨어 기기에 미리 보기의 일부를 로드하거나, 미리 보기의 일부를 다른 소프트웨어와 결합하거나 미리 보기의 일부가 통합된 일체의 소프트웨어나 기기를 배포해서는 안 됩니다.
+
+3.4 계약자는 미리 보기에서 파생된 소프트웨어 개발 키트의 배포, 이러한 키트 생성에 참여 또는 홍보를 포함하되 이에 국한되지 않고, Android의 단편화를 야기하는 어떠한 행동도 취하지 않을 것임에 동의합니다.
+
+3.5 오픈 소스 소프트웨어 라이선스에 의거한 미리 보기 구성요소의 사용, 재생산, 배포에는 본 라이선스 계약이 아닌, 해당 오픈 소스 소프트웨어 라이선스의 조건이 적용됩니다. 계약자는 허용된 모든 권한 하에서 그러한 오픈 소스 소프트웨어 라이선스에 관해 충실한 피허가자로서의 자세를 견지할 것이며 그러한 권한을 종료, 일시 중단 또는 침해하는 행위를 삼갈 것을 동의합니다.
+
+3.6 계약자는 Google이 제공하는 SDK의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 미리 보기에서 개발된 애플리케이션이 이후 버전의 SDK와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 SDK(또는 SDK에 포함된 기능) 제공을(영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
+
+3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
+
+3.8 계약자는 SDK에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
+
+4. 계약자의 미리 보기 사용
+
+4.1 Google은 본 라이선스 계약의 어떤 조항도 계약자(또는 계약자의 사용 허가자)가 미리 보기를 사용하여 개발한 소프트웨어 애플리케이션에 대한 권리, 소유권 또는 이익, 그리고 해당 애플리케이션에 존재하는 모든 지적 재산권을 부여하지 않는다는 점에 동의합니다.
+
+4.2 계약자는 (a) 본 라이선스 계약 그리고 (b) 모든 준거법, 규정 또는 관련 관할권 내에서 일반적으로 수용되는 관행 또는 지침(미국 또는 기타 관련 국가로/에서의 데이터 또는 소프트웨어 수출과 관련된 모든 법률 포함)에서 허용하는 용도에 한하여 미리 보기를 사용하고 애플리케이션을 작성하는 것에 동의합니다.
+
+4.3 계약자는 일반 대중 사용자를 대상으로 미리 보기를 사용하여 애플리케이션을 개발하는 경우, 해당 사용자의 프라이버시 및 법적 권리를 보호하는 것에 동의합니다. 사용자가 계약자에게 사용자 이름, 비밀번호 또는 기타 로그인 정보나 개인 정보를 제공하는 경우, 계약자는 제공된 정보가 자신의 애플리케이션에 제공된다는 사실을 사용자에게 알려야 하며, 반드시 법적으로 적절한 개인정보 보호정책 고지 및 보호를 해당 사용자에게 제공해야 합니다. 애플리케이션에서 사용자가 제공한 개인정보나 민감한 정보를 저장하는 경우, 이를 안전하게 처리해야 합니다. 사용자들이 애플리케이션에 Google 계정 정보를 제공하는 경우, 애플리케이션은 해당 사용자의 Google 계정에 액세스하는 목적으로만, 그리고 각 사용자가 허용한 범위 내의 한정된 목적으로만 이러한 정보를 사용해야 합니다.
+
+4.4 계약자는 Google 또는 기타 모든 타사의 서버, 네트워크 또는 기타 모든 재산 또는 서비스를 허가 없이 방해, 교란, 손상 또는 액세스하는 애플리케이션의 개발 또는 배포를 포함한 하등의 행위에 미리 보기를 이용하지 않을 것임을 동의합니다.
+
+4.5 계약자는 자신이 Android 및/또는 Android용 애플리케이션을 통해 생성, 전송 또는 표시하는 모든 데이터, 콘텐츠 또는 리소스 그리고 그로 인한 결과(Google이 입을 수 있는 모든 피해나 손실 포함)에 대해 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
+
+4.6 계약자는 본 라이선스 계약, 모든 해당 제3자 계약 또는 서비스 약관, 또는 모든 준거법 또는 규정에 의거한 계약자 의무 위반, 그리고 그로 인한 결과(Google 또는 제3자가 입을 수 있는 모든 피해나 손실 포함)에 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
+
+4.7 이 미리 보기는 현재 개발 단계에 있으며, 계약자의 테스트와 피드백은 그러한 개발 과정에 중요한 부분을 차지합니다. 미리 보기를 사용함으로써 계약자는 일부 기능의 구현은 아직 개발 중인 상태이며 미리 보기가 안정된 릴리스처럼 완벽하게 기능할 것이라 믿고 사용해서는 안 된다는 점을 인지하는 것으로 간주합니다. 계약자는 이 미리 보기를 사용한 애플리케이션을 공개적으로 배포 또는 배송하지 않기로 동의합니다. 이 미리 보기는 공식 Android SDK가 출시된 이후에는 더 이상 지원되지 않기 때문입니다.
+
+5. 계약자의 개발자 자격 증명
+
+5.1 계약자는 Google이 발급했거나 자신이 선택한 모든 개발자 자격 증명에 대한 기밀성을 유지할 책임이 있으며 계약자의 개발자 자격 증명 하에 개발된 모든 애플리케이션에 대한 전적인 책임이 있음에 동의합니다.
+
+6. 개인정보 보호정책 및 정보
+
+6.1 미리 보기를 지속적으로 혁신하고 개선하기 위해, Google은 고유 식별자, 관련 IP 주소, 소프트웨어 버전 번호, 미리 보기에서 사용 중인 도구 및/또는 서비스와 도구의 사용법에 대한 정보를 포함하되 이에 국한되지 않고 소프트웨어에서 특정 사용량 통계 정보를 수집할 수 있습니다. 그러한 정보를 수집하기 전에 미리 보기는 계약자에게 이를 통지하고 동의를 구할 것입니다. 계약자가 동의하지 않을 경우 정보를 수집하지 않습니다.
+
+6.2 수집된 데이터는 모두 취합된 형태로 미리 보기 개선을 위해 검토되며, Google의 개인정보 보호정책에 따라 유지 관리됩니다. 이 정보는 http://www.google.com/policies/privacy/를 참조하십시오.
+
+7. 제3자 애플리케이션
+
+7.1 제3자가 개발한 애플리케이션을 실행하거나 제3자가 제공한 데이터, 콘텐츠 또는 리소스에 액세스하기 위해 미리 보기를 사용하는 경우, 계약자는 Google이 그러한 애플리케이션, 데이터, 콘텐츠 또는 리소스에 대한 책임이 없음에 동의합니다. 계약자는 그러한 제3자 애플리케이션을 통해 자신이 액세스한 모든 데이터, 콘텐츠 또는 리소스에 대한 책임은 그것을 만든 사람에게 있음에 동의합니다. 또한 계약자가 그러한 모든 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스를 사용하거나 액세스함으로써 비롯된 모든 피해나 손실에 대한 책임이 Google에게 없음에 동의합니다.
+
+7.2 그러한 제3자 애플리케이션을 통해 계약자에게 제공된 데이터, 콘텐츠 그리고 리소스는 그것을 제공한 제공자(또는 제공자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 유의해야 합니다. 그러한 데이터, 콘텐츠 또는 리소스(전부 또는 일부)를 수정, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다. 단, 관련 소유자로부터 그러한 작업을 수행해도 좋다는 허락을 받은 경우에는 예외입니다.
+
+7.3 계약자는 그러한 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스의 사용은 계약자와 관련 제3자 간에 체결하는 별도의 계약 조건의 적용을 받는다는 것을 인정합니다.
+
+8. Google API 사용
+
+8.1 Google Data API
+
+8.1.1 Google에서 데이터를 검색하기 위해 API를 사용하는 경우, 그러한 데이터가 Google 또는 데이터를 제공하는 당사자(또는 당사자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 인정합니다. 그러한 API를 사용하는 경우, 추가적인 서비스 약관의 적용을 받을 수 있습니다. 관련 서비스 약관에 허용되지 않은 한, 그러한 데이터(전부 또는 일부)를 변경, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다.
+
+8.1.2 Google에서 사용자 데이터를 검색하기 위해 API를 사용하는 경우, 계약자는 사용자로부터 명시적인 동의를 얻은 경우에 한하여, 그리고 해당 사용자가 허용한 범위 내의 한정된 목적으로만 데이터를 검색해야 합니다.
+
+9. 라이선스 계약 종료
+
+9.1 본 라이선스 계약은 계약자 또는 Google에 의해 아래와 같은 조건 하에 종료될 때까지 계속 적용됩니다.
+
+9.2 계약자가 라이선스 계약을 종료하고자 하는 경우, 미리 보기 및 관련 개발자 자격 증명 일체의 사용을 중단하는 것으로 그러한 의사를 피력할 수 있습니다.
+
+9.3 Google은 언제든 이유 여하를 불문하고 계약자에게 통고하여 라이선스 계약을 종료할 수 있습니다.
+
+9.4 본 라이선스 계약은 통보 또는 여타의 행위 없이도 자동으로 종료됩니다. 이에 해당되려면 다음과 같은 조건이 수반되어야 합니다.
+(A) Google이 계약자가 거주하는 국가 또는 계약자가 서비스를 사용하는 지역에서 미리 보기 또는 미리 보기의 특정 부분 제공을 중지하는 경우 및
+(B) Google이 Android SDK의 최종 릴리스 버전을 발행하는 경우.
+
+9.5 본 라이선스 계약이 종료되면 라이선스 계약으로 계약자에게 허용한 라이선스가 취소되며, 이에 따라 계약자는 미리 보기 사용을 즉시 모두 중단해야 하고 제 10, 11, 12 및 14절의 조항이 기한 없이 유지됩니다.
+
+10. 면책 조항
+
+10.1 계약자는 미리 보기 이용에 대한 위험 부담이 전적으로 본인에게 있으며, Google이 일체의 보증 없이 미리 보기를 "있는 그대로" 그리고 "이용 가능한" 상태로 제공한다는 것을 분명히 이해하고 동의합니다.
+
+10.2 미리 보기 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
+
+10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
+
+11. 책임 한계
+
+11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
+
+12. 면책
+
+12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
+
+13. 라이선스 계약 변경
+
+13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
+
+14. 일반 법적 조건
+
+14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 Google이 맺은 모든 계약을 완전히 대체합니다.
+
+14.2 계약자는 Google이 라이선스 계약에 포함된(또는 관련 법률에 의해 Google이 향유하는) 법적 권리 또는 구제수단을 행사하거나 집행하지 않더라도, Google이 권리를 공식적으로 포기한 것으로 간주하지 않으며, Google이 계속해서 그러한 권리 또는 구제수단을 이용할 수 있음에 동의합니다.
+
+14.3 본 라이선스 계약의 조항이 무효라고 이 사안에 관한 판결을 할 수 있는 관할권을 가진 법원이 판결할 경우, 그 조항은 라이선스 계약의 나머지 조항에 영향을 미치지 않는 형태로 라이선스 계약에서 제거됩니다. 본 라이선스 계약의 나머지 조항은 여전히 유효하며 집행 가능합니다.
+
+14.4 계약자는 Google이 모회사가 되는 회사 그룹에 속한 각 회사가 본 라이선스 계약의 제3수익자이며, 그러한 다른 회사들이 그들에게 이익(또는 유리한 권리)을 부여하는 본 라이선스 계약의 모든 조항을 직접 행사하고 적용할 수 있는 권리를 가진다는 데 동의합니다. 그 외에는 다른 어떤 개인이나 회사도 본 라이선스 계약의 제3수익자가 될 수 없습니다.
+
+14.5 수출 규제. 미리 보기는 미국의 수출법과 규정의 적용을 받습니다. 계약자는 미리 보기에 적용되는 모든 국내 및 국제 수출법과 규정을 준수해야 합니다. 그러한 법에는 수출 대상국, 최종 사용자 및 최종 용도에 대한 제한이 포함됩니다.
+
+14.6 계약자 또는 Google은 상대 당사자의 사전 서면 승인 없이 본 라이선스 계약에서 부여된 권리를 제3자에게 양도하거나 이전할 수 없으며, 그러한 승인 없이 이루어진 양도 시도는 모두 무효입니다. 계약자는 Google의 사전 승인 없이 본 라이선스 계약 상의 책임 또는 의무를 위임할 수 없습니다.
+
+14.7 본 라이선스 계약, 그리고 본 라이선스 계약 상의 계약자와 Google의 관계는 법률 조항 간의 충돌과는 무관하게 캘리포니아주법에 의한 규제를 받습니다. 계약자와 Google은 본 라이선스 계약으로부터 발생하는 모든 법적 문제 해결을 캘리포니아주 산타 클라라(Santa Clara) 카운티 내에 소재한 전속 관할 법원에 의뢰하는 것에 동의합니다. 위 규정에도 불구하고, 계약자는 Google이 여전히 모든 관할권에서 강제 구제책(또는 동등한 유형의 긴급 법적 구제)을 신청할 수 있음에 동의합니다.
+ </div><!-- sdk terms -->
+
+
+
+ <div id="sdk-terms-form">
+ <p>
+ <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+ <label id="agreeLabel" for="agree">본인은 상기 사용 약관을 읽었으며 이에 동의합니다.</label>
+ </p>
+ <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+ </div>
+
+
+ </div><!-- end TOS -->
+
+
+ <div id="landing">
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>이 문서의 내용</h2>
+ <ol>
+ <li><a href="#sdk">미리 보기 SDK</a></li>
+ <li><a href="#docs">개발자 관련 문서</a></li>
+ <li><a href="#images">하드웨어 시스템 이미지</a></li>
+ </ol>
+ </div>
+</div>
+
+
+<p>
+ Android M 미리 보기 SDK에는 개발 도구, Android 시스템 파일 및 라이브러리 파일이 포함되어 있어 앱을 테스트하고 플랫폼의 다음 릴리스에 도입되는 새 API를 테스트하는 데 유용합니다.
+ 이 문서에서는 미리 보기의 다운로드할 수 있는 구성 요소를 가져와 앱을 테스트하는 방법에 대해 설명합니다.
+
+</p>
+
+
+<h2 id="sdk">미리 보기 SDK</h2>
+
+<p>
+ 미리 보기 SDK는 <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>를 통해 다운로드할 수 있습니다. 미리 보기 SDK를 다운로드하고 구성하는 데 관한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">미리 보기 SDK 설정하기</a>를 참조하십시오.
+
+</p>
+
+
+<h2 id="docs">개발자 관련 문서</h2>
+
+<p>
+ 개발자 관련 문서 다운로드 패키지에서는 자세한 API 참조 정보와 미리 보기에 대한 API 차이점 보고서를 제공합니다.
+</p>
+
+<table>
+ <tr>
+ <th scope="col">설명</th>
+ <th scope="col">다운로드/체크섬</th>
+ </tr>
+ <tr id="docs-dl">
+ <td>Android M 미리 보기<br>개발자 문서</td>
+ <td><a href="#top" onclick="onDownload(this)">m-preview-1-developer-docs.zip</a><br>
+ MD5: b65201b0d35416f5a1b7a071b52854a7<br>
+ SHA-1: d47e856aa65e06897e6edd902ad8d2b1f05ac3ec
+ </td>
+ </tr>
+<table>
+
+
+<h2 id="images">하드웨어 시스템 이미지</h2>
+
+<p>
+ 이러한 시스템 이미지를 사용하면 물리적인 기기에서 플랫폼의 미리 보기 버전을 설치하여 테스트할 수 있게 해줍니다.
+ 이러한 이미지 중 한 가지로 기기를 구성하면, 앱을 설치하고 테스트하여 앱이 플랫폼의 다음 버전에서 어떤 성능을 보일지 확인할 수 있습니다.
+ 기기에 시스템 이미지를 설치하는 과정은<em>기기에서 모든 데이터를 제거하므로</em>, 시스템 이미지를 설치하기에 앞서 데이터를 백업하는 것이 좋습니다.
+
+
+</p>
+
+<p class="warning">
+ <b>경고:</b> 다음 Android 시스템 이미지는 미리 보기이며 사정에 따라 변동될 수 있습니다. 이러한 시스템 이미지를 사용할 때에는 Android SDK 미리 보기 라이선스 계약을 따라야 합니다.
+ Android 미리 보기 시스템 이미지는 안정된 릴리스가 아니며, 오류나 결함이 들어있을 수 있고 이 때문에 컴퓨터 시스템, 기기 및 데이터에 손상을 초래할 수 있습니다.
+
+ 미리 보기 Android 시스템 이미지는 공장 OS와 같은 테스트를 거치며 전화기 및 설치된 서비스와 애플리케이션의 작동이 중단되는 결과를 낳을 수 있습니다.
+
+
+</p>
+
+<table>
+ <tr>
+ <th scope="col">기기</th>
+ <th scope="col">다운로드/체크섬</th>
+ </tr>
+ <tr id="hammerhead">
+ <td>Nexus 5(GSM/LTE) <br>"hammerhead"</td>
+ <td><a href="#top" onclick="onDownload(this)">hammerhead-MPZ44Q-preview-55d76d3a.tgz</a><br>
+ MD5: 9e2631b06c6525e401ceaae3677ff320<br>
+ SHA-1: 55d76d3a379b18f3363f28d8a462c236ab96fc36
+ </td>
+ </tr>
+ <tr id="shamu">
+ <td>Nexus 6 <br>"shamu"</td>
+ <td><a href="#top" onclick="onDownload(this)">shamu-MPZ44Q-preview-c1d6506a.tgz</a><br>
+ MD5: 307cbf9dab0a38df4ab2639d02be12aa<br>
+ SHA-1: c1d6506a74094bdb2f4b8677c7fe4967334f9ea8
+ </td>
+ </tr>
+ <tr id="volantis">
+ <td>Nexus 9 <br>"volantis"</td>
+ <td><a href="#top" onclick="onDownload(this)">volantis-MPZ44Q-preview-d15ad483.tgz</a><br>
+ MD5: fae40377fd999d2b09128665c915264d<br>
+ SHA-1: 7ab05f96093b2cb370b226f65931202714cbc2ca
+ </td>
+ </tr>
+ <tr id="fugu">
+ <td>Nexus Player <br>"fugu"</td>
+ <td><a href="#top" onclick="onDownload(this)">fugu-MPZ44Q-preview-2406ba05.tgz</a><br>
+ MD5: 815902141a85cc65e7725f005cad31d5<br>
+ SHA-1: 2406ba0598dea1e69110497ac0bc8e16789bc8fb
+ </td>
+ </tr>
+</table>
+
+<h3 id="install-image">기기에 이미지 설치</h3>
+
+<p>
+ 기기 이미지를 테스트용으로 사용하려면, 이를 호환되는 기기에 설치해야만 합니다. 시스템 이미지를 설치하려면 아래의 지침을 따르십시오.
+
+</p>
+
+<ol>
+ <li>여기 목록에 나열된 시스템 이미지 중 하나를 다운로드하여 압축을 해제합니다.</li>
+ <li>기기에서 보존하고자 하는 데이터를 모두 백업합니다.</li>
+ <li>이미지를 기기에 플래시하려면 <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>에 있는 지침을 따릅니다.
+
+</li>
+</ol>
+
+<p class="note">
+ <strong>참고:</strong> 일단 개발 기기에 미리 보기 시스템 이미지를 플래시하고 나면 이것은 OTA(over-the-air) 업데이트를 통해 다음 미리 보기 릴리스에 맞춰 자동으로 업그레이드됩니다.
+
+</p>
+
+<h3 id="revertDevice">기기를 공장 사양으로 되돌리기</h3>
+
+<p>
+ 미리 보기의 설치를 제거하고 기기를 공장 사양으로 되돌리고자 하는 경우, <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a>를 방문하여 기기에 플래시하고자 하는 이미지를 다운로드하십시오.
+
+ 해당 페이지에 있는 지침을 따라 기기에 이미지를 플래시하면 됩니다.
+
+</p>
+
+ </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+ var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+ function onDownload(link) {
+
+ $("#downloadForRealz").html("Download " + $(link).text());
+ $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+ $("#tos").fadeIn('fast');
+ $("#landing").fadeOut('fast');
+
+ return true;
+ }
+
+
+ function onAgreeChecked() {
+ /* verify that the TOS is agreed */
+ if ($("input#agree").is(":checked")) {
+ /* reveal the download button */
+ $("a#downloadForRealz").removeClass('disabled');
+ } else {
+ $("a#downloadForRealz").addClass('disabled');
+ }
+ }
+
+ function onDownloadForRealz(link) {
+ if ($("input#agree").is(':checked')) {
+ /*
+ $("#tos").fadeOut('fast');
+ $("#landing").fadeIn('fast');
+ */
+
+ ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+ /*
+ location.hash = "";
+ */
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ $(window).hashchange( function(){
+ if (location.hash == "") {
+ location.reload();
+ }
+ });
+
+</script>
diff --git a/docs/html-intl/intl/ko/preview/features/app-linking.jd b/docs/html-intl/intl/ko/preview/features/app-linking.jd
new file mode 100644
index 0000000..0e23801
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/app-linking.jd
@@ -0,0 +1,123 @@
+page.title=앱 링크
+page.image=images/cards/card-app-linking_2x.png
+page.keywords=applinking, 딥 링크, 인텐트
+@jd:body
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>이 문서의 내용</h2>
+ <ol>
+ <li><a href="#web-assoc">웹사이트 연관 선언</a></li>
+ <li><a href="#verfy-links">앱 링크 확인 요청</a></li>
+ <li><a href="#user-manage">앱 링크 설정 관리</a></li>
+ </ol>
+ </div>
+</div>
+
+<p>
+ Android 인텐트 시스템은 유연한 메커니즘이라 앱이 콘텐츠와 요청을 처리할 수 있습니다.
+ 여러 개의 앱이 자신의 인텐트 필터에서 모두 일치하는 URI 패턴을 선언할 수 있습니다. 사용자가 기본 시작 처리자가 없는 웹 링크를 클릭하는 경우 플랫폼이 대화창을 표시하여 해당 사용자가 일치하는 인텐트 필터를 선언한 앱 목록에서 선택 할 수 있습니다.
+
+
+</p>
+
+<p>
+ Android M 개발자 미리 보기에서는 앱 링크에 대한 지원을 도입합니다. 이를 통해 앱 개발자들이 앱을 본인이 소유한 웹 도메인과 연관시켜 기존의 링크 처리를 한 단계 개선합니다.
+ 개발자가 이 연관 관계를 생성하면 플랫폼이 특정 웹 링크를 처리하는 데 사용된 기본 앱을 알아서 판단하여 사용자에게 물어보는 과정을 건너뛸 수 있습니다.
+
+
+</p>
+
+
+<h2 id="web-assoc">웹사이트 연관 선언</h2>
+
+<p>
+ 웹사이트 소유자가 앱 링크를 설정하려면 앱과의 연관 관계를 선언해야 합니다. 사이트 소유자는 앱에 대한 이러한 관계를 선언하는 데 JSON 파일을 호스팅하는 방식을 씁니다. 일명 {@code statements.json}이라는 파일을 도메인에서 잘 알려진 위치에 선언합니다.
+
+
+</p>
+
+<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
+
+<p class="note">
+ <strong>참고:</strong>
+ M 개발자 미리 보기 기간 중에는 JSON 파일을 http 프로토콜을 통해 확인합니다. 플랫폼이 공식적으로 출시되면 이 파일을 암호화된 https 프로토콜에서 확인하게 됩니다.
+
+</p>
+
+<p>
+ 이 JSON 파일은 이 도메인 아래에서 URL에 대한 기본 처리자로 사용되어야 하는 Android 앱을 나타냅니다.
+ 이것이 앱을 식별하는 기반은 다음과 같은 필드입니다.
+</p>
+
+<ul>
+ <li>{@code package_name}: 앱의 매니페스트에 선언된 패키지 이름입니다.</li>
+
+ <li>{@code sha256_cert_fingerprints}: 앱의 서명 인증서의 SHA256 지문입니다.
+ Java keytool을 사용하여 이 지문을 생성하려면 다음과 같은 명령을 사용십시오.
+ <pre>keytool -list -v -keystore my-release-key.keystore</pre>
+ </li>
+</ul>
+
+<p>
+ 다음 파일 목록은
+{@code statements.json} 파일의 콘텐츠와 형식을 예를 들어 나타낸 것입니다.
+</p>
+
+<pre>
+[{
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "<strong>&lt;package name&gt;</strong>",
+ "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
+ }
+}]
+</pre>
+
+
+<h2 id="verfy-links">앱 링크 확인 요청</h2>
+
+<p>
+ 앱은 플랫폼에 자신의 인텐트 필터의 데이터 요소 내에서 호스트 이름으로 정의된 모든 앱 링크를 자동으로 확인해달라고 요청할 수 있습니다. 이때 비교 대상은 각각의 웹 도메인에서 호스팅된 {@code statements.json} 파일입니다.
+
+ 앱 링크 확인을 요청하려면 매니페스트에서 원하는 인텐트 필터 각각에 {@code android:autoVerify}
+특성을 하나씩 추가하면 됩니다. 다음 매니페스트 코드 조각에 나타낸 내용을 참고하십시오.
+
+</p>
+
+<pre>
+&lt;activity ...&gt;
+ &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
+ &lt;action android:name="android.intent.action.VIEW" /&gt;
+ &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+ &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+ &lt;data android:scheme="http" android:host="www.android.com" /&gt;
+ &lt;data android:scheme="https" android:host="www.android.com" /&gt;
+ &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>
+ 앱 매니페스트에 {@code android:autoVerify} 특성이 있으면, 플랫폼은 앱이 설치된 시점에 앱 링크를 확인하려 시도합니다.
+ 플랫폼이 앱 링크를 성공적으로 확인하지 못하면 해당 앱은 웹 링크를 처리하기 위한 기본 설정 앱으로 설정되지 않습니다.
+ 다음번에 사용자가 그런 링크 중 하나를 열면, 플랫폼은 사용자에게 메시지를 표시하는 방식으로 변경합니다.
+
+
+</p>
+
+<p class="note">
+ <strong>참고:</strong> 테스트 중에는 확인에 실패하고 나서 거짓 긍정 결과가 나올 가능성이 있지만, 사용자가 앱에 물어보지 않고 지원되는 링크를 열도록 명시적으로 활성화해 놓았고 이때 시스템 설정 앱을 사용한 경우, 대화창이 표시되지 않고 링크는 개발자 본인의 앱으로 이동하지만 이는 순전히 사용자 설정 때문이고 확인이 성공해서가 아닙니다.
+
+
+
+</p>
+
+
+<h2 id="user-manage">앱 링크 설정 관리</h2>
+
+<p>
+ 사용자가 앱 링크 설정을 변경하여 URL을 본인이 선호하는 방식으로 처리하도록 할 수 있습니다. 앱 링크를 검토하고 관리하려면 <strong>설정 &gt; 앱 &gt; 앱 정보 &gt; 기본으로 열기</strong> 아래의 시스템 설정 앱에서 하면 됩니다.
+
+
+</p>
diff --git a/docs/html-intl/intl/ko/preview/index.jd b/docs/html-intl/intl/ko/preview/index.jd
new file mode 100644
index 0000000..15b14f9
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/index.jd
@@ -0,0 +1,67 @@
+page.title=Android M 개발자 미리 보기
+page.tags="preview",
+meta.tags="preview, M preview", androidm
+fullpage=true
+section.landing=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<section class="dac-expand dac-hero dac-light" >
+ <div class="wrap">
+ <div class="cols dac-hero-content">
+ <div class="col-9of16 col-push-7of16 dac-hero-figure">
+ <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
+ {@docRoot}images/home/devices-hero_620px_2x.png 2x">
+ </div>
+ <div class="col-7of16 col-pull-9of16">
+ <h1 class="dac-hero-title">Android M 개발자 미리 보기</h1>
+ <p class="dac-hero-description">
+ Android의 다음 버전을 만나볼 준비가 되셨습니까? 여러분의 앱을 Nexus 5, 6, 9 및 Player에서 테스트해보십시오.
+ 새로운 내용은 무엇인지 둘러보십시오. <strong>런타임 권한</strong>, <strong>Doze</strong> 및 <strong>앱 대기 모드</strong> 절전 기능, 새로 나온 <strong>지원 기술</strong>, 이외에도 많은 것이 있습니다.
+
+
+ </p>
+
+ <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+ <span class="dac-sprite dac-auto-chevron"></span>
+ 지금 시작하세요!
+</a><br>
+ </div>
+ </div>
+ <div class="dac-section dac-small">
+ <div class="resource-widget resource-flow-layout col-16"
+ data-query="collection:preview/landing/resources"
+ data-cardSizes="6x2"
+ data-maxResults="6"></div>
+ </div>
+ </div>
+</section>
+
+<section class="dac-section dac-gray"><div class="wrap">
+ <h1 class="dac-section-title">리소스</h1>
+ <div class="dac-section-subtitle">
+ 앱을 Android M에 대비시키는 데 유용한 중요 정보입니다.
+ </div>
+
+ <div class="resource-widget resource-flow-layout col-16"
+ data-query="collection:preview/landing/more"
+ data-cardSizes="6x6"
+ data-maxResults="16"></div>
+
+ <ul class="dac-section-links">
+ <li class="dac-section-link">
+ <a href="https://code.google.com/p/android-developer-preview/">
+ <span class="dac-sprite dac-auto-chevron"></span>
+ 문제 보고
+</a>
+ </li>
+ <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
+ <span class="dac-sprite dac-auto-chevron"></span>
+ G+ 커뮤니티 가입
+</a>
+ </li>
+ </ul>
+ </div>
+</section>
+
diff --git a/docs/html-intl/intl/ko/preview/license.jd b/docs/html-intl/intl/ko/preview/license.jd
new file mode 100644
index 0000000..71c9d45
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/license.jd
@@ -0,0 +1,143 @@
+page.title=라이선스 계약
+
+@jd:body
+
+<p>
+Android SDK 미리보기를 시작하려면 우선 다음과 같은 사용 약관에 동의해야 합니다. 아래에 설명한 바와 같이, 이것은 Android SDK의 미리 보기 버전이며 변경될 가능성이 있고 이를 사용하는 위험 부담은 계약자 본인에게 있음을 유의하십시오.
+ Android SDK 미리보기는 안정된 릴리스가 아니며, 오류나 결함이 들어있을 수 있고 이 때문에 컴퓨터 시스템, 기기 및 데이터에 심각한 손상을 초래할 수 있습니다.
+</p>
+
+<p>
+이것은 Android SDK 미리 보기 라이선스 계약서입니다(이하 "라이선스 계약").
+</p>
+<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
+1. 개요
+
+1.1 Android SDK 미리 보기(본 라이선스 계약에서는 "미리 보기"라고 칭하며, 구체적으로 Android 시스템 파일, 패키지 API 및 미리 보기 라이브러리 파일이 이용 가능한 경우 및 이용 가능하게 전환된 경우 이를 포함한 것을 가리킴)는 본 라이선스 계약 조건에 따라 계약자에게 사용을 허여합니다. 본 라이선스 계약은 미리 보기 사용과 관련하여 계약자와 Google 간에 법적 구속력이 있는 계약을 체결합니다.
+
+1.2 "Android"는 기기를 위한 Android 소프트웨어 스택을 의미합니다. 이는 http://source.android.com/ URL에 위치하며 수시로 업데이트되는 Android 오픈 소스 프로젝트에서 제공됩니다.
+
+1.3 "Google"은 미국 1600 Amphitheatre Parkway, Mountain View, CA 94043에 본사를 두고 있는 델라웨어주 법인인 Google Inc.를 의미합니다.
+
+2. 라이선스 계약에 동의
+
+2.1 이 미리 보기를 사용하려면, 먼저 라이선스 계약에 동의해야 합니다. 이 라이선스 계약에 동의하지 않고 미리 보기를 사용해서는 안 됩니다.
+
+2.2 수락을 클릭하고/거나 미리 보기를 사용하면 본 라이선스 계약 조건에 동의하는 것으로 간주됩니다.
+
+2.3 미국법 또는 현재 거주 중이거나 미리 보기를 사용하는 국가를 포함하여 다른 국가의 법에 따라 미리 보기를 받는 것이 금지된 경우, 미리 보기를 사용할 수 없으며 본 라이선스 계약을 수락할 수 없습니다.
+
+2.4 회사 또는 단체 내에서 내부적으로 미리 보기를 사용하며 고용주 또는 기타 단체를 대신하여 본 라이선스 계약 준수에 동의하는 경우, 계약자의 고용주나 그 단체에 본 라이선스 계약에 대한 구속력을 부여할 수 있는 모든 법적 권한을 계약자가 갖고 있음을 진술하고 보증합니다. 구속력을 부여할 수 있는 법적 권한이 없을 경우, 고용주 또는 기타 단체를 대신하여 본 라이선스 계약에 동의하거나 미리 보기를 사용할 수 없습니다.
+
+3. Google이 허하는 미리 보기 라이선스
+
+3.1 본 라이선스 계약의 조건에 따라 Google은 계약자에게 로열티 없고 양도 불가능하며 비독점적이고 2차 인가를 불허하며, 한정되고 무효화할 수 있는 미리 보기 사용 권한을 허용하여 회사 또는 조직 내에서 개인적 또는 내부적으로 사용할 수 있도록 합니다. 이는 Android 플랫폼에서 실행되는 애플리케이션을 개발할 목적으로만 사용해야 합니다.
+
+3.2 계약자는 SDK에 존재하는 지적 재산권을 포함한 SDK에 대한 모든 법적인 권리, 소유권 및 이익이 Google 또는 제3자에게 있음에 동의합니다 "지적 재산권"은 모든 특허법, 저작권법, 영업비밀법, 상표법상 존재하는 모든 권리 및 기타 모든 재산권을 의미합니다. Google은 계약자에게 명시적으로 부여하지 않은 모든 권리를 보유합니다.
+
+3.3 본 라이선스 계약에 명시적으로 허용된 용도 외에는 미리 보기를 사용할 수 없습니다. 해당 제3자 라이선스 요건이 허용하는 범위를 제외하고 계약자는 미리 보기의 일부분을 (a) 복사(백업 목적 제외), 수정, 개작, 재배포, 역컴파일, 리버스 엔지니어링, 분해하거나 이를 통해 파생물을 생성하거나 (b) 개인 컴퓨터를 제외한 모바일 단말기 또는 기타 모든 하드웨어 기기에 미리 보기의 일부를 로드하거나, 미리 보기의 일부를 다른 소프트웨어와 결합하거나 미리 보기의 일부가 통합된 일체의 소프트웨어나 기기를 배포해서는 안 됩니다.
+
+3.4 계약자는 미리 보기에서 파생된 소프트웨어 개발 키트의 배포, 이러한 키트 생성에 참여 또는 홍보를 포함하되 이에 국한되지 않고, Android의 단편화를 야기하는 어떠한 행동도 취하지 않을 것임에 동의합니다.
+
+3.5 오픈 소스 소프트웨어 라이선스에 의거한 미리 보기 구성요소의 사용, 재생산, 배포에는 본 라이선스 계약이 아닌, 해당 오픈 소스 소프트웨어 라이선스의 조건이 적용됩니다. 계약자는 허용된 모든 권한 하에서 그러한 오픈 소스 소프트웨어 라이선스에 관해 충실한 피허가자로서의 자세를 견지할 것이며 그러한 권한을 종료, 일시 중단 또는 침해하는 행위를 삼갈 것을 동의합니다.
+
+3.6 계약자는 Google이 제공하는 SDK의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 미리 보기에서 개발된 애플리케이션이 이후 버전의 SDK와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 SDK(또는 SDK에 포함된 기능) 제공을(영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
+
+3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
+
+3.8 계약자는 SDK에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
+
+4. 계약자의 미리 보기 사용
+
+4.1 Google은 본 라이선스 계약의 어떤 조항도 계약자(또는 계약자의 사용 허가자)가 미리 보기를 사용하여 개발한 소프트웨어 애플리케이션에 대한 권리, 소유권 또는 이익, 그리고 해당 애플리케이션에 존재하는 모든 지적 재산권을 부여하지 않는다는 점에 동의합니다.
+
+4.2 계약자는 (a) 본 라이선스 계약 그리고 (b) 모든 준거법, 규정 또는 관련 관할권 내에서 일반적으로 수용되는 관행 또는 지침(미국 또는 기타 관련 국가로/에서의 데이터 또는 소프트웨어 수출과 관련된 모든 법률 포함)에서 허용하는 용도에 한하여 미리 보기를 사용하고 애플리케이션을 작성하는 것에 동의합니다.
+
+4.3 계약자는 일반 대중 사용자를 대상으로 미리 보기를 사용하여 애플리케이션을 개발하는 경우, 해당 사용자의 프라이버시 및 법적 권리를 보호하는 것에 동의합니다. 사용자가 계약자에게 사용자 이름, 비밀번호 또는 기타 로그인 정보나 개인 정보를 제공하는 경우, 계약자는 제공된 정보가 자신의 애플리케이션에 제공된다는 사실을 사용자에게 알려야 하며, 반드시 법적으로 적절한 개인정보 보호정책 고지 및 보호를 해당 사용자에게 제공해야 합니다. 애플리케이션에서 사용자가 제공한 개인정보나 민감한 정보를 저장하는 경우, 이를 안전하게 처리해야 합니다. 사용자들이 애플리케이션에 Google 계정 정보를 제공하는 경우, 애플리케이션은 해당 사용자의 Google 계정에 액세스하는 목적으로만, 그리고 각 사용자가 허용한 범위 내의 한정된 목적으로만 이러한 정보를 사용해야 합니다.
+
+4.4 계약자는 Google 또는 기타 모든 타사의 서버, 네트워크 또는 기타 모든 재산 또는 서비스를 허가 없이 방해, 교란, 손상 또는 액세스하는 애플리케이션의 개발 또는 배포를 포함한 하등의 행위에 미리 보기를 이용하지 않을 것임을 동의합니다.
+
+4.5 계약자는 자신이 Android 및/또는 Android용 애플리케이션을 통해 생성, 전송 또는 표시하는 모든 데이터, 콘텐츠 또는 리소스 그리고 그로 인한 결과(Google이 입을 수 있는 모든 피해나 손실 포함)에 대해 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
+
+4.6 계약자는 본 라이선스 계약, 모든 해당 제3자 계약 또는 서비스 약관, 또는 모든 준거법 또는 규정에 의거한 계약자 의무 위반, 그리고 그로 인한 결과(Google 또는 제3자가 입을 수 있는 모든 피해나 손실 포함)에 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
+
+4.7 이 미리 보기는 현재 개발 단계에 있으며, 계약자의 테스트와 피드백은 그러한 개발 과정에 중요한 부분을 차지합니다. 미리 보기를 사용함으로써 계약자는 일부 기능의 구현은 아직 개발 중인 상태이며 미리 보기가 안정된 릴리스처럼 완벽하게 기능할 것이라 믿고 사용해서는 안 된다는 점을 인지하는 것으로 간주합니다. 계약자는 이 미리 보기를 사용한 애플리케이션을 공개적으로 배포 또는 배송하지 않기로 동의합니다. 이 미리 보기는 공식 Android SDK가 출시된 이후에는 더 이상 지원되지 않기 때문입니다.
+
+5. 계약자의 개발자 자격 증명
+
+5.1 계약자는 Google이 발급했거나 자신이 선택한 모든 개발자 자격 증명에 대한 기밀성을 유지할 책임이 있으며 계약자의 개발자 자격 증명 하에 개발된 모든 애플리케이션에 대한 전적인 책임이 있음에 동의합니다.
+
+6. 개인정보 보호정책 및 정보
+
+6.1 미리 보기를 지속적으로 혁신하고 개선하기 위해, Google은 고유 식별자, 관련 IP 주소, 소프트웨어 버전 번호, 미리 보기에서 사용 중인 도구 및/또는 서비스와 도구의 사용법에 대한 정보를 포함하되 이에 국한되지 않고 소프트웨어에서 특정 사용량 통계 정보를 수집할 수 있습니다. 그러한 정보를 수집하기 전에 미리 보기는 계약자에게 이를 통지하고 동의를 구할 것입니다. 계약자가 동의하지 않을 경우 정보를 수집하지 않습니다.
+
+6.2 수집된 데이터는 모두 취합된 형태로 미리 보기 개선을 위해 검토되며, Google의 개인정보 보호정책에 따라 유지 관리됩니다. 이 정보는 http://www.google.com/policies/privacy/를 참조하십시오.
+
+7. 제3자 애플리케이션
+
+7.1 제3자가 개발한 애플리케이션을 실행하거나 제3자가 제공한 데이터, 콘텐츠 또는 리소스에 액세스하기 위해 미리 보기를 사용하는 경우, 계약자는 Google이 그러한 애플리케이션, 데이터, 콘텐츠 또는 리소스에 대한 책임이 없음에 동의합니다. 계약자는 그러한 제3자 애플리케이션을 통해 자신이 액세스한 모든 데이터, 콘텐츠 또는 리소스에 대한 책임은 그것을 만든 사람에게 있음에 동의합니다. 또한 계약자가 그러한 모든 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스를 사용하거나 액세스함으로써 비롯된 모든 피해나 손실에 대한 책임이 Google에게 없음에 동의합니다.
+
+7.2 그러한 제3자 애플리케이션을 통해 계약자에게 제공된 데이터, 콘텐츠 그리고 리소스는 그것을 제공한 제공자(또는 제공자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 유의해야 합니다. 그러한 데이터, 콘텐츠 또는 리소스(전부 또는 일부)를 수정, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다. 단, 관련 소유자로부터 그러한 작업을 수행해도 좋다는 허락을 받은 경우에는 예외입니다.
+
+7.3 계약자는 그러한 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스의 사용은 계약자와 관련 제3자 간에 체결하는 별도의 계약 조건의 적용을 받는다는 것을 인정합니다.
+
+8. Google API 사용
+
+8.1 Google Data API
+
+8.1.1 Google에서 데이터를 검색하기 위해 API를 사용하는 경우, 그러한 데이터가 Google 또는 데이터를 제공하는 당사자(또는 당사자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 인정합니다. 그러한 API를 사용하는 경우, 추가적인 서비스 약관의 적용을 받을 수 있습니다. 관련 서비스 약관에 허용되지 않은 한, 그러한 데이터(전부 또는 일부)를 변경, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다.
+
+8.1.2 Google에서 사용자 데이터를 검색하기 위해 API를 사용하는 경우, 계약자는 사용자로부터 명시적인 동의를 얻은 경우에 한하여, 그리고 해당 사용자가 허용한 범위 내의 한정된 목적으로만 데이터를 검색해야 합니다.
+
+9. 라이선스 계약 종료
+
+9.1 본 라이선스 계약은 계약자 또는 Google에 의해 아래와 같은 조건 하에 종료될 때까지 계속 적용됩니다.
+
+9.2 계약자가 라이선스 계약을 종료하고자 하는 경우, 미리 보기 및 관련 개발자 자격 증명 일체의 사용을 중단하는 것으로 그러한 의사를 피력할 수 있습니다.
+
+9.3 Google은 언제든 이유 여하를 불문하고 계약자에게 통고하여 라이선스 계약을 종료할 수 있습니다.
+
+9.4 본 라이선스 계약은 통보 또는 여타의 행위 없이도 자동으로 종료됩니다. 이에 해당되려면 다음과 같은 조건이 수반되어야 합니다.
+(A) Google이 계약자가 거주하는 국가 또는 계약자가 서비스를 사용하는 지역에서 미리 보기 또는 미리 보기의 특정 부분 제공을 중지하는 경우 및
+(B) Google이 Android SDK의 최종 릴리스 버전을 발행하는 경우.
+
+9.5 본 라이선스 계약이 종료되면 라이선스 계약으로 계약자에게 허용한 라이선스가 취소되며, 이에 따라 계약자는 미리 보기 사용을 즉시 모두 중단해야 하고 제 10, 11, 12 및 14절의 조항이 기한 없이 유지됩니다.
+
+10. 면책 조항
+
+10.1 계약자는 미리 보기 이용에 대한 위험 부담이 전적으로 본인에게 있으며, Google이 일체의 보증 없이 미리 보기를 "있는 그대로" 그리고 "이용 가능한" 상태로 제공한다는 것을 분명히 이해하고 동의합니다.
+
+10.2 미리 보기 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
+
+10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
+
+11. 책임 한계
+
+11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
+
+12. 면책
+
+12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
+
+13. 라이선스 계약 변경
+
+13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
+
+14. 일반 법적 조건
+
+14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 Google이 맺은 모든 계약을 완전히 대체합니다.
+
+14.2 계약자는 Google이 라이선스 계약에 포함된(또는 관련 법률에 의해 Google이 향유하는) 법적 권리 또는 구제수단을 행사하거나 집행하지 않더라도, Google이 권리를 공식적으로 포기한 것으로 간주하지 않으며, Google이 계속해서 그러한 권리 또는 구제수단을 이용할 수 있음에 동의합니다.
+
+14.3 본 라이선스 계약의 조항이 무효라고 이 사안에 관한 판결을 할 수 있는 관할권을 가진 법원이 판결할 경우, 그 조항은 라이선스 계약의 나머지 조항에 영향을 미치지 않는 형태로 라이선스 계약에서 제거됩니다. 본 라이선스 계약의 나머지 조항은 여전히 유효하며 집행 가능합니다.
+
+14.4 계약자는 Google이 모회사가 되는 회사 그룹에 속한 각 회사가 본 라이선스 계약의 제3수익자이며, 그러한 다른 회사들이 그들에게 이익(또는 유리한 권리)을 부여하는 본 라이선스 계약의 모든 조항을 직접 행사하고 적용할 수 있는 권리를 가진다는 데 동의합니다. 그 외에는 다른 어떤 개인이나 회사도 본 라이선스 계약의 제3수익자가 될 수 없습니다.
+
+14.5 수출 규제. 미리 보기는 미국의 수출법과 규정의 적용을 받습니다. 계약자는 미리 보기에 적용되는 모든 국내 및 국제 수출법과 규정을 준수해야 합니다. 그러한 법에는 수출 대상국, 최종 사용자 및 최종 용도에 대한 제한이 포함됩니다.
+
+14.6 계약자 또는 Google은 상대 당사자의 사전 서면 승인 없이 본 라이선스 계약에서 부여된 권리를 제3자에게 양도하거나 이전할 수 없으며, 그러한 승인 없이 이루어진 양도 시도는 모두 무효입니다. 계약자는 Google의 사전 승인 없이 본 라이선스 계약 상의 책임 또는 의무를 위임할 수 없습니다.
+
+14.7 본 라이선스 계약, 그리고 본 라이선스 계약 상의 계약자와 Google의 관계는 법률 조항 간의 충돌과는 무관하게 캘리포니아주법에 의한 규제를 받습니다. 계약자와 Google은 본 라이선스 계약으로부터 발생하는 모든 법적 문제 해결을 캘리포니아주 산타 클라라(Santa Clara) 카운티 내에 소재한 전속 관할 법원에 의뢰하는 것에 동의합니다. 위 규정에도 불구하고, 계약자는 Google이 여전히 모든 관할권에서 강제 구제책(또는 동등한 유형의 긴급 법적 구제)을 신청할 수 있음에 동의합니다.
+
+
+</div> \ No newline at end of file
diff --git a/docs/html-intl/intl/ko/preview/samples.jd b/docs/html-intl/intl/ko/preview/samples.jd
new file mode 100644
index 0000000..aeb8fc2
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/samples.jd
@@ -0,0 +1,70 @@
+page.title=샘플
+page.image=images/cards/samples-new_2x.png
+@jd:body
+
+<p>
+ 다음 코드 샘플은 M 개발자 미리 보기를 위해 제공된 것입니다. Android Studio에서 샘플을 다운로드하려면 <b>파일 &gt; 샘플 가져오기</b> 메뉴 옵션을 선택하십시오.
+
+</p>
+
+<p class="note">
+ <strong>참고:</strong> 이러한 다운로드 가능한 프로젝트는 Gradle 및 Android Studio와 함께 쓰도록 만들어진 것입니다.
+
+</p>
+
+
+<h3 id="RuntimePermissions">런타임 권한</h3>
+
+<p>
+ Android M은 시스템 권한이 작동하는 방식을 확 바꾸어 놓습니다. 사용자는 설치 중이 아니라 런타임에 권한 요청을 승인해 달라는 요청을 받습니다.
+ 이 샘플은 이와 같은 권한을 요청하는 방법을 나타낸 것입니다.
+
+</p>
+
+<p><a href="https://github.com/googlesamples/android-RuntimePermissions">GitHub에서 가져오기</a></p>
+
+<h3 id="ConfirmCredentials">확인 자격 증명</h3>
+
+<p>
+ 이 샘플은 앱에서 기기 자격 증명을 인증 방법으로 사용하는 법을 나타낸 것입니다.
+</p>
+
+<p><a href="https://github.com/googlesamples/android-ConfirmCredential">GitHub에서 가져오기</a>
+</p>
+
+<h3 id="FingerprintDialog">지문 대화창</h3>
+
+<p>
+ 이 샘플은 앱에서 사용자를 인증하기 위해 등록된 지문을 인식하는 방법을 나타낸 것입니다.
+
+</p>
+
+<p><a href="https://github.com/googlesamples/android-FingerprintDialog">GitHub에서 가져오기</a></p>
+
+<h3 id="AutomaticBackup">앱용 자동 백업</h3>
+
+<p>
+ Android M은 앱 설정에서 사용할 수 있는 자동 백업을 도입합니다. 이 샘플은 설정 백업을 관리하기 위해 앱에 필터링 규칙을 추가하는 방법을 나타낸 것입니다.
+
+</p>
+
+<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">GitHub에서 가져오기</a></p>
+
+<h3 id="CameraRaw">카메라 2 RAW</h3>
+
+<p>
+ <code>Camera2</code> API를 사용해 RAW 카메라 버퍼를 캡처하고 이를 <code>DNG</code> 파일로 저장하는 법을 나타낸 것입니다.
+
+</p>
+
+<p><a href="https://github.com/googlesamples/android-Camera2Raw">GitHub에서 가져오기</a></p>
+
+<h3 id="ActiveNotification">활성 알림</h3>
+
+<p>
+ 이 샘플은 <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>를 사용하여 앱이 현재 표시하고 있는 알림 수가 몇 개인지 알게 되는 원리를 나타낸 것입니다.
+
+
+</p>
+
+<p><a href="https://github.com/googlesamples/android-ActiveNotifications">GitHub에서 가져오기</a></p>
diff --git a/docs/html-intl/intl/ko/preview/setup-sdk.jd b/docs/html-intl/intl/ko/preview/setup-sdk.jd
new file mode 100644
index 0000000..cf3084b
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/setup-sdk.jd
@@ -0,0 +1,207 @@
+page.title=미리 보기 SDK 설정하기
+page.image=images/cards/card-set-up_16-9_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>이 문서의 내용</h2>
+ <ol>
+ <li><a href="#get-as13">Android Studio 1.3 가져오기</a></li>
+ <li><a href="#get-sdk">미리 보기 SDK 가져오기</a></li>
+ <li><a href="#create-update">프로젝트 생성 또는 업데이트</a></li>
+ <li><a href="#setup-test">테스트를 위해 설정</a></li>
+ </ol>
+ </div>
+</div>
+
+<p>M 개발자 미리 보기 SDK는 Android SDK Manager에서 이용할 수 있습니다. 이 문서에서는 독자 여러분이 Android 앱 개발, 예를 들어 Android SDK Manager 사용이나 프로젝트 생성 등에 익숙하다고 가정합니다.
+
+ Android를 처음 사용하시는 경우, 우선 <a href="{@docRoot}training/basics/firstapp/index.html">첫 앱 구축하기</a> 학습 단원부터 참조하십시오.</a>
+
+</p>
+
+<h2 id="get-as13">Android Studio 1.3 가져오기</h2>
+
+<p>개발자 미리 보기는 역시 미리 보기 상태인 Android Studio 1.3과 함께 사용하는 것이 가장 좋습니다.
+ Android Studio 1.3의 미리 보기 버전을 설치하여 미리 보기 SDK 작업에 사용하는 것을 적극 추천합니다.
+</p>
+
+<p class="caution"><strong>주의:</strong> Android Studio 1.3의 카나리아 미리 보기는 아직도 활발히 개발 중인 상태입니다.
+ 기본 개발 머신을 사용하여 개발자 미리 보기를 테스트하는 경우, 두 번째 Android Studio 설치를 하나 더 생성해 테스트에 사용하면 됩니다.
+
+</p>
+
+<p>Android Studio 1.3 미리 보기를 설치하려면 다음과 같이 하면 됩니다.</p>
+
+<ol>
+ <li><a href="{@docRoot}tools/studio/index.html">Android Studio</a>를 다운로드하여 시작합니다.
+
+ </li>
+
+ <li><strong>설정</strong> 창을 엽니다(또는 Windows의 경우 <strong>파일 &gt; 설정</strong>을 선택해도 됩니다).
+ <strong>외관 및 동작 &gt; 시스템 &gt; 설정 &gt; 업데이트</strong> 패널을 선택하십시오.
+
+
+
+ <p class="aside">OSX의 경우, <strong>외관 및 동작</strong> 패널은 Android Studio의 <strong>기본 설정</strong> 창에 있습니다.
+
+</p>
+ </li>
+
+ <li> <strong>업데이트</strong> 패널에서 <strong>다음에 대해 업데이트 자동 확인:
+ Canary 채널</strong>이라는 선택 사항을 선택합니다.
+ </li>
+
+ <li><strong>업데이트</strong> 패널에서 <strong>지금 확인</strong>을 선택하여 최신 카나리아 빌드를 확인합니다.
+ 메시지가 표시되면 빌드를 다운로드하고 설치하십시오.
+
+ </li>
+</ol>
+
+<h2 id="get-sdk">미리 보기 SDK 가져오기</h2>
+
+<p>개발 환경에 미리 보기 SDK 구성 요소를 추가하려면 다음과 같이 하면 됩니다.</p>
+
+<ol>
+ <li>Android Studio 1.3 미리 보기를 시작합니다.
+ </li>
+
+ <li><strong>설정</strong> 창을 엽니다(또는 Windows의 경우 <strong>파일 &gt; 설정</strong>을 선택해도 됩니다).
+ <strong>외관 및 동작 &gt; 시스템 &gt; 설정 &gt; 업데이트</strong> 패널을 선택하십시오.
+
+
+
+ <p class="aside">OSX의 경우, <strong>외관 및 동작</strong> 패널은 Android Studio의 <strong>기본 설정</strong> 창에 있습니다.
+
+</p>
+ </li>
+
+ <li><strong>업데이트</strong> 패널에서 <strong>다음에 대해 업데이트 자동 확인:
+ Canary 채널</strong> 및 <strong>Android SDK에 대한 업데이트 자동 확인:
+ 미리 보기 채널</strong> 선택 사항을 선택합니다.
+ </li>
+
+ <li><strong>Android SDK Manager</strong>를 시작합니다 (Android Studio 1.3에서는 SDK Manager가 독립 실행형 애플리케이션이 아니고 Android Studio에 통합되어 있습니다).
+
+
+ </li>
+
+ <li><strong>플랫폼</strong> 섹션 아래에서 <strong>Android MNC 미리 보기</strong>를 선택하십시오.
+
+ </li>
+
+ <li><strong>도구</strong> 섹션에서 최신 Android <strong>SDK 도구</strong>, <strong>플랫폼-도구</strong>, 및 <strong>빌드-도구</strong>를 선택합니다.
+
+
+ </li>
+
+ <li><strong>패키지 설치</strong>를 클릭하고 패키지 전체에 대해 라이선스 사용 계약을 수락합니다.
+
+ </li>
+
+ <li>M 개발자 미리 보기가 설치되었는지 확인하려면 <strong>설정</strong> 창을 열고 <strong>외관 및 동작 &gt; 시스템 설정 &gt; Android SDK</strong> 패널을 선택하면 됩니다.
+
+</li>
+
+ <li><strong>Android SDK</strong> 패널에서 <strong>SDK 플랫폼</strong> 탭을 선택합니다.
+ <strong>Android MNC 미리 보기</strong>가 <em>설치됨</em> 아래 목록으로 나열되어 있는 것이 정상입니다.
+ 또한, <strong>SDK 도구</strong> 탭을 열어 최신 도구가 설치되었는지 확인하십시오.
+
+
+ </li>
+</ol>
+<p>이러한 단계를 완료하고 나면 미리 보기 구성 요소를 본인의 개발 환경에서 이용할 수 있습니다.
+ </p>
+
+
+<h2 id="create-update">프로젝트 생성 또는 업데이트</h2>
+
+<p>
+ 미리 보기 API를 사용하려면 개발 프로젝트를 하나 생성하거나 업데이트하여 미리 보기 구성 요소를 사용해야 합니다.
+
+</p>
+
+
+<h3 id="create">새 프로젝트 생성하기</h3>
+
+<p>
+ 미리 보기로 프로젝트를 생성하려면 Android Studio를 사용할 것을 권장합니다. <a href="{@docRoot}sdk/installing/create-project.html">프로젝트 생성하기</a>에 설명되어 있는 단계를 쭉 따라가다 보면 프로젝트 마법사의 <em>폼 팩터</em> 화면에 도달합니다.
+
+ 그러면 다음과 같은 단계를 따라 미리 보기에 맞게 구성된 프로젝트를 생성하면 됩니다.
+
+</p>
+
+<ul>
+ <li><strong>전화기 및 태블릿</strong>을 확인합니다.</li>
+ <li><strong>MNC: Android M(미리 보기)</strong>를 선택합니다. 이것은 <strong>최소 SDK</strong> 안에 있습니다.
+</li>
+</ul>
+
+
+<h3 id="update">기존 프로젝트 업데이트</h3>
+
+<p>
+ 기존 프로젝트의 경우, 미리 보기 API를 활성화하려면 프로젝트 구성을 수정해야 합니다. 개발 환경에서 본인의 모듈에 대한 <code>build.gradle</code> 파일을 열고 다음의 값을 다음과 같이 설정합니다.
+
+
+</p>
+
+<ul>
+ <li><code>compileSdkVersion</code>을 <code>'android-MNC'</code>로 설정</li>
+ <li><code>minSdkVersion</code>을 <code>'MNC'</code>로 설정</li>
+ <li><code>targetSdkVersion</code>을 <code>'MNC'</code>로 설정</li>
+</ul>
+
+
+<h2 id="setup-test">테스트를 위해 설정</h2>
+
+<p>
+ 앱을 미리 보기로 테스트하려면 플랫폼의 미리 보기 버전으로 구성한 기기 또는 가상 기기가 있어야 합니다.
+ 호환되는 기기를 가지고 있으면 미리 보기 플랫폼을 설치하여 테스트에 쓰면 됩니다.
+ 그렇지 않은 경우, 가상 기기를 구성하여 테스트에 사용할 수도 있습니다.
+</p>
+
+<h3 id="setup-device">물리적 기기 설정</h3>
+
+<p>
+ Nexus 5, Nexus 6, Nexus 9 또는 Android TV를 가지고 있는 경우, 이들 기기에 미리 보기 시스템 이미지를 설치하여 앱을 테스트하는 데 쓸 수 있습니다. 플랫폼의 미리 보기 버전으로 가상 기기를 설정하려면 Android Studio 내에서 해당 버전을 다운로드하면 됩니다. 이때 Android 가상 기기 관리자 도구를 사용하십시오.
+
+
+
+</p>
+
+<p class="caution">
+ <strong>중요:</strong> 기기에 미리 보기 이미지를 설치하면 <em>기기에서 모든 데이터를 제거하므로</em>, 미리 보기 이미지를 설치하기에 앞서 데이터를 모두 백업하는 것이 좋습니다.
+
+</p>
+
+<h3 id="setupAVD">가상 기기 설정</h3>
+
+<p>
+ 플랫폼의 미리 보기 버전으로 가상 기기를 설정하려면 Android Studio 내에서 해당 버전을 다운로드하면 됩니다. 이때 Android 가상 기기 관리자 도구를 사용하십시오.
+
+</p>
+
+<p>AVD Manager로 AVD를 생성하려면 다음과 같이 하면 됩니다.</p>
+
+<ol>
+ <li><a href="{@docRoot}preview/setup-sdk.html">미리 보기 SDK 설정하기</a>에 설명된 바에 따라 개발 환경에 미리 보기 SDK를 설치합니다.
+
+</li>
+ <li><a href="{@docRoot}tools/devices/managing-avds.html">AVD Manager로 AVD 관리하기</a>에 나온 단계를 따르십시오.
+
+ 다음과 같은 설정을 사용하면 됩니다.
+ <ul>
+ <li><strong>기기:</strong> Nexus 5, Nexus 6, Nexus 9 또는 Android TV</li>
+ <li><strong>대상:</strong>
+ Android M(미리 보기) - API 레벨 M</li>
+ <li><strong>ABI:</strong> x86</li>
+ </ul>
+ </li>
+</ol>
+
+<p>
+ 테스트를 위해 가상 기기를 생성하는 데 대한 자세한 정보는 <a href="{@docRoot}tools/devices/index.html">가상 기기 관리하기</a>를 참조하십시오.
+</p>
diff --git a/docs/html-intl/intl/ko/preview/support.jd b/docs/html-intl/intl/ko/preview/support.jd
new file mode 100644
index 0000000..36d083da
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/support.jd
@@ -0,0 +1,67 @@
+page.title=지원
+page.image=images/cards/card-support_16-9_2x.png
+
+@jd:body
+
+<p>
+ M 개발자 미리 보기에서 버그가 발생했거나 이에 대한 피드백을 보내려면 문제 추적기에서 <a href="https://code.google.com/p/android-developer-preview/">문제를 생성</a>해 주십시오.
+
+
+</p>
+
+<p>
+ 더 많은 지원이 필요하시면 <a href="http://g.co/dev/AndroidMDevPreview">M 개발자 미리 보기 Google+ 커뮤니티</a>에 가입하여 여러분의 개발 경험에 대해 논의해보시면 좋습니다.
+
+
+</p>
+
+<h2 id="release-notes">릴리스 노트</h2>
+
+<!--
+<div class="toggle-content opened">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+ alt=""/>M Developer Preview, Revision 2</a> <em>(Month 2015)</em>
+ </p>
+
+ <div class="toggle-content-toggleme">
+
+ <dl>
+
+ <dt>Fix Category 1</dt>
+ <dd>
+ <ul>
+ <li>Fixed issue X.</li>
+ <li>Fixed issue Y.</li>
+ <li>Fixed issue Z.</li>
+ </ul>
+ </dd>
+
+ <dt>Fix Category 2</dt>
+ <dd>
+ <ul>
+ <li>Fixed issue X.</li>
+ <li>Fixed issue Y.</li>
+ <li>Fixed issue Z.</li>
+ </ul>
+ </dd>
+
+ </dl>
+ </div>
+</div>
+-->
+
+<div class="toggle-content opened">
+ <p><a href="#" onclick="return toggleContent(this)"><img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img" alt="" />M 개발자 미리 보기, 수정 버전 1</a> <em>(2015년 5월)</em>
+
+ </p>
+
+ <div class="toggle-content-toggleme">
+
+ <dl>
+ <dt>최초 릴리스입니다.</dt>
+ </dl>
+ </div>
+</div>
+
+
diff --git a/docs/html-intl/intl/ko/preview/testing/guide.jd b/docs/html-intl/intl/ko/preview/testing/guide.jd
new file mode 100644
index 0000000..7f17071
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/testing/guide.jd
@@ -0,0 +1,187 @@
+page.title=테스트 가이드
+page.image=images/cards/card-build_16x9_2x.png
+page.keywords=previewresources,androidm,testing,permissions
+
+@jd:body
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>이 문서의 내용</h2>
+ <ol>
+ <li><a href="#runtime-permissions">권한 테스트</a></li>
+ <li><a href="#doze-standby">Doze 및 앱 대기 모드 테스트</a></li>
+ <li><a href="#ids">자동 백업 및 기기 식별자</a></li>
+ </ol>
+ </div>
+</div>
+
+<p>
+ Android M 개발자 미리 보기에서는 앱이 플랫폼의 다음 버전에서 제대로 작동할 것인지 확인해볼 기회를 부여합니다.
+ 이 미리 보기에는 앱에 영향을 미칠 수 있는 수많은 API와 동작 변경 내용이 포함되어 있습니다.이 내용은 <a href="{@docRoot}preview/api-overview.html">API 개요</a>와 <a href="{@docRoot}preview/behavior-changes.html">동작 변경</a>에 설명해 놓았습니다.
+
+ 미리 보기로 앱을 테스트할 때에는 사용자에게 좋은 환경을 제공하기 위해 개발자 여러분이 꼭 주안점을 두어야 할 몇 가지 특정한 시스템 변경 내용이 있습니다.
+
+
+</p>
+
+<p>
+ 이 가이드는 앱에서 테스트할 미리 보기 기능은 어떤 것이고, 테스트 방법은 어떤지에 대해 설명한 것입니다. 이와 같은 특정 미리 보기 기능을 먼저 테스트하는 것이 좋습니다. 이들은 앱의 동작에 미치는 영향이 클 가능성이 높기 때문입니다.
+
+
+</p>
+
+<ul>
+ <li><a href="#runtime-permissions">권한</a>
+ </li>
+ <li><a href="#doze-standby">Doze 및 앱 대기 모드</a>
+ </li>
+ <li><a href="#ids">자동 백업 및 기기 식별자</a></li>
+</ul>
+
+<p>
+ 테스트용 미리 보기 시스템 이미지로 기기 또는 가상 기기를 설정하는 방법에 대한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html">미리 보기 SDK 설정하기</a>를 참조하십시오.
+
+</p>
+
+
+<h2 id="runtime-permissions">권한 테스트</h2>
+
+<p>
+ 새로운 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 모델은 사용자가 여러분의 앱에 권한을 할당하는 방법을 바꿔 놓습니다.
+ 설치 절차 중에 모든 권한을 허용하는 것이 아니라, 앱이 런타임에 사용자에게 각각의 권한을 요청해야 합니다.
+
+ 사용자 입장에서는 이러한 동작으로 각 앱의 액티비티에 대해 더 세분화된 제어권을 행사할 수 있을 뿐만 아니라 이 앱이 어째서 특정한 권한을 요청하고 있는 것인지 맥락을 더 잘 이해할 수 있게 되기도 합니다.
+ 사용자는 언제든 앱에 개별적으로 권한을 허용할 수 있고, 이를 취소할 수도 있습니다.
+ 미리 보기의 이러한 기능은 앱의 동작에 영향을 미칠 가능성이 가장 높고, 앱의 몇 가지 기능이 작동하지 않도록 막거나 저하된 상태로 작동하게 할 수도 있습니다.
+
+
+</p>
+
+<p class="caution">
+ 이 변경 내용은 새 플랫폼에서 실행되는 모든 앱에 영향을 비치며, 새 플랫폼 버전을 대상으로 하지 않는 앱도 예외가 아닙니다.
+ 레거시 앱에 대해 플랫폼이 제한된 호환성 동작을 제공하기는 하지만, 지금 바로 새 권한 모델로 앱의 마이그레이션 계획을 시작하는 편이 좋습니다. 플랫폼이 공식적으로 출시될 때에 맞춰 앱의 업데이트된 버전을 게시하는 것을 목표로 하십시오.
+
+
+</p>
+
+
+<h3 id="permission-test-tips">테스트 팁</h3>
+
+<p>
+ 다음은 새 권한 동작에 대해 앱 테스트를 계획하고 실행하는 데 유용한 몇 가지 테스트 팁입니다.
+
+</p>
+
+<ul>
+ <li>앱의 현재 권한과 관련된 코드 경로를 확인합니다.</li>
+ <li>권한 보호된 서비스 및 데이터 전반에 걸친 사용자 흐름을 테스트합니다.</li>
+ <li>허용된/취소된 권한을 여러 가지로 조합하여 테스트합니다.</li>
+ <li>명령줄에서 권한을 관리할 때 {@code adb} 도구를 사용합니다.
+ <ul>
+ <li>권한과 상태를 그룹별로 목록으로 나열합니다.
+ <pre>adb shell pm list permissions -d -g</pre>
+ </li>
+ <li>하나 이상의 권한을 다음과 같은 구문을 사용하여 허용하거나 취소합니다.<br>
+ <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
+ </li>
+ </ul>
+ </li>
+ <li>권한을 사용하는 서비스에 대해 앱을 분석해봅니다.</li>
+</ul>
+
+<h3 id="permission-test-strategy">테스트 전략</h3>
+
+<p>
+ 권한을 변경하면 앱의 구조와 디자인은 물론 사용자 환경과, 개발자가 사용자에게 제공하는 흐름에도 영향을 미칩니다.
+ 앱의 현재 권한 사용 내용을 평가한 다음 제공하고자 하는 새로운 흐름을 계획하기 시작해야 합니다.
+ 플랫폼의 공식 릴리스에서 호환성 동작을 제공할 예정이지만, 이와 같은 동작에만 의존하지 말고 앱 업데이트를 계획하는 것이 좋습니다.
+
+
+</p>
+
+<p>
+ 앱이 실제로 필요로 하고 사용하는 권한을 확인한 다음, 권한 보호된 서비스를 사용하는 여러 가지 코드 경로를 찾습니다.
+ 이렇게 하려면 새 플랫폼에서 여러 가지로 조합한 테스트를 거치고 코드 분석을 통해야 합니다.
+ 테스트에서는 런타임 권한에 옵트인하는 것에 주안점을 두는 것이 좋습니다. 앱의 {@code targetSdkVersion}을 미리 보기 버전으로 변경하세요.
+ 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html#">미리 보기 SDK 설정하기</a>를 참조하십시오.
+
+</p>
+
+<p>
+ 불러내고 추가한 여러 가지 권한들을 다양하게 조합해서 테스트해보면 권한에 좌우되는 사용자 흐름을 강조할 수 있습니다.
+ 종속성이 분명하지 않거나 논리적인 경우, 리팩터링을 고려해 보거나 해당 흐름을 구분하여 종속성을 제거, 또는 해당 권한이 왜 필요한지 분명히 하는 방안을 고려해야 합니다.
+
+
+</p>
+
+<p>
+ 런타임 권한의 동작, 테스트 및 모범 사례에 대한 자세한 정보는 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 개발자 미리 보기 페이지를 참조하십시오.
+
+
+</p>
+
+
+<h2 id="doze-standby">Doze 및 앱 대기 모드 테스트</h2>
+
+<p>
+ Doze 및 앱 대기 모드의 절전 기능은 기기가 유휴 상태에 있을 때 또는 사용자가 앱에 초점을 맞추고 있지 않을 때 앱이 수행할 수 있는 배경 처리의 양을 제한합니다.
+ 시스템이 앱에 부과할 수 있는 제한 사항에는 네트워크 액세스를 제한하거나 없애기, 배경 작업을 일시 중지시키기, 알림 일시 중지, 절전 모드 해제 및 알람 요청 무시 등이 포함됩니다.
+
+ 이러한 절전 기능에 앱이 적절히 동작하도록 확실히 해 두려면 이와 같은 저전력 상태를 시뮬레이트하여 앱을 테스트해보아야 합니다.
+
+
+</p>
+
+<h4 id="doze">앱에서 Doze 테스트하기</h4>
+
+<p>앱으로 Doze 기능을 테스트하려면 다음과 같이 하면 됩니다.</p>
+
+<ol>
+<li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</li>
+<li>기기를 개발 머신에 연결시키고 앱을 설치합니다.</li>
+<li>앱을 실행시킨 다음 활성 상태로 그냥 둡니다.</li>
+<li>기기가 Doze 모드에 들어가는 것을 시뮬레이트하려면 다음 명령을 실행하십시오.
+
+<pre>
+$ adb shell dumpsys battery unplug
+$ adb shell dumpsys deviceidle step
+$ adb shell dumpsys deviceidle -h
+</pre>
+
+ </li>
+ <li>기기가 다시 활성화되면 앱이 어떻게 동작하는지 살펴보십시오. 기기가 Doze 모드를 종료할 때 정상적으로 복구되는지 확인해야 합니다.
+</li>
+</ol>
+
+
+<h4 id="standby">앱에서 앱 대기 모드 테스트하기</h4>
+
+<p>앱으로 앱 대기 모드를 테스트하려면 다음과 같이 하면 됩니다.</p>
+
+<ol>
+ <li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</li>
+ <li>기기를 개발 머신에 연결시키고 앱을 설치합니다.</li>
+ <li>앱을 실행시킨 다음 활성 상태로 그냥 둡니다.</li>
+ <li>앱이 대기 모드에 들어가는 것을 시뮬레이트하려면 다음 명령을 실행하십시오.
+
+<pre>
+$ adb shell am broadcast -a android.os.action.DISCHARGING
+$ adb shell am set-idle &lt;packageName&gt; true
+</pre>
+
+ </li>
+ <li>앱이 절전 모드 해제되는 상태를 시뮬레이트하려면 다음 명령을 사용하면 됩니다.
+ <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
+ </li>
+ <li>앱이 절전 모드에서 해제되면서 어떻게 동작하는지 살펴보십시오. 대기 모드에서 정상적으로 복구되는지 확인해야 합니다.
+ 특히, 앱의 알림과 배경 작업이 계속 예상했던 대로 기능하는지 확인해야 합니다.
+</li>
+</ol>
+
+<h2 id="ids">앱용 자동 백업 및 기기별 식별자</h2>
+
+<p>앱이 내부 저장소에서 각 기기에 따라 다른 식별자를 유지하는 경우(예: Google Cloud 메시지 등록 ID), 모범 사례를 따라 저장소 위치를 자동 백업에서 배제해야 합니다. 이 내용은 <a href="{@docRoot}preview/backup/index.html">앱용 자동 백업</a>에 설명되어 있습니다.
+
+
+
+ </p>
diff --git a/docs/html-intl/intl/ko/preview/testing/performance.jd b/docs/html-intl/intl/ko/preview/testing/performance.jd
new file mode 100644
index 0000000..ce2bf27
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/testing/performance.jd
@@ -0,0 +1,656 @@
+page.title=표시 성능 테스트
+page.image=images/cards/card-test-performance_2x.png
+page.keywords=성능, FPS, 도구
+
+@jd:body
+
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>이 문서의 내용</h2>
+ <ol>
+ <li><a href="#measure">UI 성능 측정</a>
+ <ul>
+ <li><a href="#aggregate">프레임 상태 집계</a></li>
+ <li><a href="#timing-info">정확한 프레임 타이밍 정보</a></li>
+ <li><a href="#timing-dump">단순한 프레임 타이밍 덤프</a></li>
+ <li><a href="#collection-window">상태 수집 창 제어</a></li>
+ <li><a href="#diagnose">성능 저하 진단</a></li>
+ <li><a href="#resources">추가 리소스</a></li>
+ </ul>
+ </li>
+ <li><a href="#automate">UI 성능 테스트 자동화</a>
+ <ul>
+ <li><a href="#ui-tests">UI 테스트 설정</a></li>
+ <li><a href="#automated-tests">자동화된 UI 테스트 설정</a></li>
+ <li><a href="#triage">관측된 문제 심사 및 수정</a></li>
+ </ul>
+ </li>
+ </ol>
+ </div>
+</div>
+
+
+<p>
+ 사용자 인터페이스(UI) 성능 테스트를 수행하면 앱이 기능적인 요건에 부합할 뿐만 아니라 사용자가 앱과 부드럽고 매끈하게 상호작용하며 초당 60 프레임의 일관된 속도로(<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">왜 60fps일까요?</a>) 생략되거나 지연된 프레임, 또는 전문 용어로 <em>jank</em>(프레임이 넘어가는 현상)가 없이 실행되게 보장할 수 있습니다.
+
+
+ 이 문서에서는 UI 성능을 측정하는 데 사용할 수 있는 몇 가지 도구를 설명하고, 테스트 방법에 UI 성능 측정법을 통합하는 데 쓰이는 접근법을 보여드립니다.
+
+
+</p>
+
+
+<h2 id="measure">UI 성능 측정</h2>
+
+<p>
+ 성능을 개선하려면 우선 시스템의 성능을 측정할 수 있는 능력부터 갖추고, 그 다음에 파이프라인의 여러 부분에서 나올 수 있는 다양한 문제를 진단하고 식별해야 합니다.
+
+
+</p>
+
+<p>
+ <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em>는 Android 도구의 일종으로 기기에서 실행되면서 시스템 서비스의 상태에 대한 흥미로운 정보를 덤프하는 역할을 합니다.
+
+ <em>gfxinfo</em> 명령을 dumpsys에 전달하면 기록 단계 중에 발생하는 애니메이션 프레임과 관련된 성능 정보가 담긴 logcat으로 출력을 제공합니다.
+
+
+</p>
+
+<pre>
+&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
+</pre>
+
+<p>
+ 이 명령은 프레임 타이밍 데이터의 서로 다른 변형을 여러 개 작성할 수 있습니다.
+</p>
+
+<h3 id="aggregate">프레임 상태 집계</h3>
+
+<p>
+ M 미리 보기에서 이 명령은 프레임 데이터의 집계된 분석을 logcat으로 출력합니다. 이는 프로세스의 전 수명을 통틀어 수집한 것입니다.
+ 예를 들면 다음과 같습니다.
+</p>
+
+<pre class="noprettyprint">
+Stats since: 752958278148ns
+Total frames rendered: 82189
+Janky frames: 35335 (42.99%)
+90th percentile: 34ms
+95th percentile: 42ms
+99th percentile: 69ms
+Number Missed Vsync: 4706
+Number High input latency: 142
+Number Slow UI thread: 17270
+Number Slow bitmap uploads: 1542
+Number Slow draw: 23342
+</pre>
+
+<p>
+ 이와 같은 높은 레벨의 통계는 레벨이 높을 때 앱의 렌더링 성능을 나타내며, 이외에도 여러 프레임에 걸친 앱의 안정성을 나타내기도 합니다.
+
+</p>
+
+
+<h3 id="timing-info">정확한 프레임 타이밍 정보</h3>
+
+<p>
+ M 미리 보기에서는 gfxinfo에 사용할 수 있는 새 명령어를 도입했습니다. 바로 <em>framestats</em>로, 이는 최근 프레임으로부터 극히 상세한 프레임 타이밍 정보를 제공하여 문제를 더욱 정확하게 추적하고 디버그할 수 있습니다.
+
+
+</p>
+
+<pre>
+&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
+</pre>
+
+<p>
+ 이 명령은 프레임 타이밍 정보를 나노초 타임스탬프로 출력하며, 그 출처는 앱이 만든 마지막 120개의 프레임입니다. 아래는 adb dumpsys gfxinfo
+ &lt;PACKAGE_NAME&gt; framestats에서 가져온 원시 출력을 예로 나타낸 것입니다.
+
+</p>
+
+<pre class="noprettyprint">
+0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
+0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
+0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
+0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
+</pre>
+
+<p>
+ 이 출력의 각 줄은 앱이 만든 프레임을 나타냅니다. 각 줄에는 정해진 숫자의 열이 있으며 이 열은 프레임 제작 파이프라인의 각 단계에서 소요한 시간을 나타냅니다.
+ 다음 섹션에서는 각 열이 무엇을 나타내는지 등, 이 형식에 대해 좀 더 자세히 다뤄보겠습니다.
+
+</p>
+
+
+<h4 id="fs-data-format">Framestats 데이터 형식</h4>
+
+<p>
+ 데이터 블록은 CSV 형식으로 출력되기 때문에 이를 개발자가 선택한 스프레드시트 도구에 붙여넣거나 수집해서 스크립트로 구문 분석하기 등의 작업이 매우 단도직입적입니다.
+ 다음 표는 출력 데이터 열의 형식을 설명한 것입니다.
+ 타임스탬프는 모두 나노초 단위입니다.
+</p>
+
+<ul>
+ <li>플래그
+ <ul>
+ <li>플래그 열에 '0'이 기재되어 있는 행의 경우, 총 프레임 시간을 계산하려면 FRAME_COMPLETED 열에서 INTENDED_VSYNC 열을 빼면 됩니다.
+
+ </li>
+
+ <li>이것이 0이 아니면 그 행은 무시해야 합니다. 해당 프레임이 정상 성능의 이상값인 것으로 판별되었기 때문이며, 여기에서는 레이아웃과 그리기에 16ms 이상이 걸릴 것으로 예상됩니다.
+
+ 다음은 이런 일이 일어나는 몇 가지 이유입니다.
+ <ul>
+ <li>창 레이아웃이 변경되었습니다(애플리케이션의 첫 프레임 또는 한 회 회전 이후).
+
+ </li>
+
+ <li>프레임을 건너뛰었을 가능성도 있습니다. 이 경우 몇몇 값에 가비지 타임스탬프가 있을 것입니다.
+ 프레임을 건너뛰는 것은 해당 프레임이 60fps를 초과하는 경우 또는 화상에 나타난 것 중 아무 것도 변한 것이 없을 때 등이며, 이는 반드시 앱에 문제가 있음을 나타내는 징후는 아닙니다.
+
+
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+
+ <li>INTENDED_VSYNC
+ <ul>
+ <li>프레임에 대한 원래 의도한 시작 지점입니다. 이 값이 VSYNC와 다른 경우, UI 스레드에서 발생한 작업이 있어 이것이 vsync 신호에 적절한 시간 내에 응답하지 못하도록 한 것입니다.
+
+
+ </li>
+ </ul>
+ </li>
+
+ <li>VSYNC
+ <ul>
+ <li>Vsync 수신기 전체와 프레임에 대한 드로잉에서 사용된 시간 값입니다.(Choreographer 프레임 콜백, 애니메이션, View.getDrawingTime() 등)
+
+ </li>
+
+ <li>VSYNC와 이것이 애플리케이션에 미치는 영향에 대해 더 자세히 알아보려면 <a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">VSYNC 이해하기</a> 비디오를 확인하십시오.
+
+
+ </li>
+ </ul>
+ </li>
+
+ <li>OLDEST_INPUT_EVENT
+ <ul>
+ <li>입력 대기열에서 가장 오래된 입력 이벤트의 타임스탬프 또는 프레임에 대한 입력 이벤트가 없는 경우 Long.MAX_VALUE입니다.
+
+ </li>
+
+ <li>이 값은 기본적으로 플랫폼 작업을 위해 의도된 것이며 앱 개발자에게는 한정된 정도로 유용한 값입니다.
+
+ </li>
+ </ul>
+ </li>
+
+ <li>NEWEST_INPUT_EVENT
+ <ul>
+ <li>입력 대기열에서 가장 최근 입력 이벤트의 타임스탬프 또는 프레임에 대한 입력 이벤트가 없는 경우 Long.MAX_VALUE입니다.
+
+ </li>
+
+ <li>이 값은 기본적으로 플랫폼 작업을 위해 의도된 것이며 앱 개발자에게는 한정된 정도로 유용한 값입니다.
+
+ </li>
+
+ <li>다만 앱이 얼마나 긴 대기 시간을 추가하고 있는지를 대략적으로 알아볼 수는 있습니다. (FRAME_COMPLETED - NEWEST_INPUT_EVENT)를 살펴보면 됩니다.
+
+ </li>
+ </ul>
+ </li>
+
+ <li>HANDLE_INPUT_START
+ <ul>
+ <li>입력 이벤트가 애플리케이션에 발송된 시점의 타임스탬프입니다.
+ </li>
+
+ <li>이것과 ANIMATION_START 사이의 시간을 보면 애플리케이션이 입력 이벤트를 처리하느라 보낸 시간을 측정할 수 있습니다.
+
+ </li>
+
+ <li>이 숫자가 크면(2ms 초과) 이는 앱이 입력 이벤트를 처리하느라 보기 드물게 긴 시간을 소요한다는 뜻입니다. 예를 들어 View.onTouchEvent()는 이 작업을 최적화해야 하거나 다른 스레드로 오프로드해야 한다는 뜻일 수 있습니다.
+
+ 다른 시나리오도 몇 가지 있을 수 있다는 점을 유의하십시오. 예를 들어 새 액티비티를 시작하는 클릭 이벤트나 그와 비슷한 것의 경우, 이 숫자가 클 것을 예상하고 받아들일 수 있습니다.
+
+
+ </li>
+ </ul>
+ </li>
+
+ <li>ANIMATION_START
+ <ul>
+ <li>Choreographer에 등록된 애니메이션이 실행된 시점의 타임스탬프입니다.
+ </li>
+
+ <li>이것과 PERFORM_TRANVERSALS_START 사이의 시간을 보면 실행 중인 애니메니터 전체((ObjectAnimator, ViewPropertyAnimator 및 Transitions가 보편적인 것들임)를 평가하는 데 시간이 얼마나 걸렸는지 판단할 수 있습니다.
+
+
+ </li>
+
+ <li>이 숫자가 크면(2ms 초과), 앱이 사용자 지정 애니메이터를 작성한 적이 있는지 확인하십시오. 아니면 ObjectAnimators가 애니메이션 효과를 실행하는 필드가 어느 것인지 알아보고 이들이 애니메이션에 대해 적절한지 확인해야 합니다.
+
+
+ </li>
+
+ <li>Choreographer에 대한 자세한 정보는 <a href="https://developers.google.com/events/io/sessions/325418001">버터거나 나쁘거나(For Butter or Worse)</a> 비디오를 참조하십시오.
+
+ </li>
+ </ul>
+ </li>
+
+ <li>PERFORM_TRAVERSALS_START
+ <ul>
+ <li>이 값에서 DRAW_START를 빼면 레이아웃과 측정 단계를 완료하는 데 얼마나 걸렸는지 추출할 수 있습니다(스크롤 또는 애니메이션 중에는 이 값이 0에 가까울 것이라는 예상이 나와야 한다는 점을 유의하십시오).
+
+
+ </li>
+
+ <li>렌더링 파이프라인의 측정 및 레이아웃 단계에 대한 자세한 정보는 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">무효화, 레이아웃 및 성능</a> 비디오를 참조하십시오.
+
+
+ </li>
+ </ul>
+ </li>
+
+ <li>DRAW_START
+ <ul>
+ <li>PerformTraversals의 그리기 단계가 시작된 시점입니다. 이것은 무효화된 모든 보기의 표시 목록을 기록하는 시작 지점입니다.
+
+ </li>
+
+ <li>이것과 SYNC_START 사이의 시간이 트리의 모든 무효화된 보기에서 View.draw()를 호출하는 데 걸린 시간입니다.
+
+ </li>
+
+ <li>드로잉 모델에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">하드웨어 가속</a> 또는 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">무효화, 레이아웃 및 성능</a> 비디오를 참조하십시오.
+
+
+ </li>
+ </ul>
+ </li>
+
+ <li>SYNC_START
+ <ul>
+ <li>드로잉의 동기화 단계가 시작된 시점입니다.
+ </li>
+
+ <li>이것과 ISSUE_DRAW_COMMANDS_START 사이의 시간이 상당히 큰 값인 경우(0.4ms 초과 또는 그와 유사), 일반적으로 새로운 비트맵이 많이 그려져서 이를 GPU에 업로드해야 한다는 뜻입니다.
+
+
+ </li>
+
+ <li>동기화 단계에 대해 더 자세히 알아보려면 <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">프로필 GPU 렌더링</a> 비디오를 참조하십시오.
+
+ </li>
+ </ul>
+ </li>
+
+ <li>ISSUE_DRAW_COMMANDS_START
+ <ul>
+ <li>하드웨어 렌더러가 GPU에 드로잉 명령을 발행하기 시작한 시점입니다.
+ </li>
+
+ <li>이것과 FRAME_COMPLETED 사이의 시간을 보면 앱이 얼마나 많은 GPU 작업을 생성하고 있는지 대략적으로 알 수 있습니다.
+ Overdraw가 너무 많거나 렌더링 효과가 비효율적인 것 등의 문제가 여기에 나타납니다.
+
+ </li>
+ </ul>
+ </li>
+
+ <li>SWAP_BUFFERS
+ <ul>
+ <li>EglSwapBuffers가 호출된 시점으로, 플랫폼 작업 외에는 비교적 흥미롭지 않습니다.
+
+ </li>
+ </ul>
+ </li>
+
+ <li>FRAME_COMPLETED
+ <ul>
+ <li>모두 끝났습니다! 이 프레임에 작업하느라 소요된 총 시간을 계산하려면 FRAME_COMPLETED - INTENDED_VSYNC를 수행하면 됩니다.
+
+ </li>
+ </ul>
+ </li>
+
+</ul>
+
+<p>
+ 이 데이터는 여러 가지 방법으로 사용할 수 있습니다. 한 가지 단순하면서도 유용한 시각화는 프레임 시간의 분배(FRAME_COMPLETED - INTENDED_VSYNC)를 여러 가지 대기 시간 버킷에서 표시한 히스토그램을 예로 들 수 있습니다. 아래 그림을 참조하십시오.
+
+ 이 그래프를 보면 한 눈에 대부분의 프레임이 아주 양호했다는 것을 알아볼 수 있습니다. 대부분 16ms 최종 기한(빨간색으로 표시)보다 한참 아래에 있지만, 최종 기한을 크게 넘어선 프레임도 몇 개 있습니다.
+
+ 이 히스토그램에서 시간 경과에 따른 변화를 살펴보면 대규모 이동이나 새 이상값이 생성되는 것을 확인할 수 있습니다.
+ 이외에도 데이터 내의 수많은 타임스탬프를 근거로 입력 대기 시간, 레이아웃에서 보낸 시간 또는 여타 비슷한 흥미로운 메트릭도 그래프로 표현할 수 있습니다.
+
+
+</p>
+
+<img src="{@docRoot}preview/images/perf-test-framestats.png">
+
+
+<h3 id="timing-dump">단순한 프레임 타이밍 덤프</h3>
+
+<p>
+ <strong>프로필 GPU 렌더링</strong>이 개발자 옵션에서 <strong>adb 셸의 dumpsys gfxinfo</strong>로 설정된 경우, <code>adb shell dumpsys gfxinfo</code> 명령이 가장 최근의 120개 프레임에 대한 타이밍 정보를 출력하되, 몇 개의 서로 다른 카테고리로 나누어 탭으로 구분된 값을 담아 표현합니다.
+
+
+ 이 데이터를 사용하면 드로잉 파이프라인의 어떤 부분이 레벨이 높을 때 느려지는지 나타내는 데 유용합니다.
+
+</p>
+
+<p>
+ 위의 <a href="#fs-data-format">framestats</a>와 마찬가지로, 이것을 개발자가 선택한 스프레드시트 도구에 붙여넣거나 수집해서 스크립트로 구문 분석하는 작업은 매우 단도직입적입니다.
+
+ 다음 그래프는 앱이 생성한 수많은 프레임이 어디에서 시간을 보내는지 분석한 내용을 표시한 것입니다.
+
+</p>
+
+<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
+
+<p>
+ Gfxinfo를 실행한 결과, 그 출력을 복사하여 이를 스프레드시트 애플리케이션에 붙여넣은 다음 데이터를 누적 가로 막대형 그래프로 나타내는 것입니다.
+
+</p>
+
+<p>
+ 각 세로 막대는 애니메이션 한 프레임을 나타냅니다. 그 막대의 높이가 해당 애니메이션 프레임을 계산하는 데 걸린 밀리초 수를 나타냅니다.
+ 막대에서 색이 지정된 각 세그먼트는 렌더링 파이프라인의 각기 다른 단계를 나타내므로, 개발자는 이것을 보고 애플리케이션의 어떤 부분이 병목 현상을 유발하고 있는지 확인할 수 있습니다.
+
+ 렌더링 파이프라인을 잘 이해하고 이에 맞게 최적화하는 법에 대한 자세한 내용은 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">무효화 레이아웃 및 성능</a> 비디오를 참조하십시오.
+
+
+</p>
+
+
+<h3 id="collection-window">상태 수집 창 제어</h3>
+
+<p>
+ Framestats와 단순한 프레임 타이밍은 양쪽 모두 아주 짧은 시간 범위 동안 데이터를 수집합니다. 렌더링 약 2초에 상당하는 시간입니다.
+ 이 시간 범위를 정확하게 제어하려면(예: 데이터를 특정 애니메이션에 제한), 카운터를 모두 초기화한 다음 수집한 통계를 집계하면 됩니다.
+
+
+</p>
+
+<pre>
+&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
+</pre>
+
+<p>
+ 이 방법은 명령 자체를 덤프하는 방법과 함께 써서 정기적인 간격을 두고 수집과 초기화를 반복하여 계속해서 2초 미만의 프레임 창을 캡처하도록 하는 데 쓰일 수도 있습니다.
+
+
+</p>
+
+
+<h3 id="diagnose">성능 저하 진단</h3>
+
+<p>
+ 성능이 저하된 것을 알아내는 것은 문제를 추적하고 애플리케이션의 건강 상태를 높은 수준으로 유지 관리하는 데 좋은 첫 단계입니다.
+ 그러나 dumpsys는 문제의 존재 여부와 상대적인 심각도만 식별하는 데 그치지 않습니다.
+ 각 성능 문제의 제각기 다른 원인을 진단하고 이를 해결하기 위해 적절한 방법을 찾아야 하는 것은 변하지 않습니다.
+ 이를 위해, <a href="{@docRoot}tools/help/systrace.html">systrace</a> 도구를 사용하는 것을 적극적으로 추천합니다.
+
+</p>
+
+
+<h3 id="resources">추가 리소스</h3>
+
+<p>
+ Android의 렌더링 파이프라인의 작동 원리나 여기에서 마주칠 수 있는 보편적인 문제와 그 해결 방법에 대한 자세한 정보를 원하시면, 다음 리소스 중 몇 가지를 유용하게 쓸 수 있습니다.
+
+
+</p>
+
+<ul>
+ <li>렌더링 성능의 기초
+ </li>
+ <li>왜 60fps일까요?
+ </li>
+ <li>Android UI와 GPU
+ </li>
+ <li>무효화 레이아웃 및 성능
+ </li>
+ <li>Systrace로 UI 성능 분석하기
+ </li>
+</ul>
+
+
+<h2 id="automate">UI 성능 테스트 자동화</h2>
+
+<p>
+ UI 성능 테스트에 대한 한 가지 관점은 그저 인간 테스터가 대상 앱에서 일련의 사용자 작업을 수행하도록 하는 것입니다. 그러면서 육안으로 jank가 있는지 살펴보든가, 아니면 오랜 시간을 들여 도구 중심적인 관점으로 jank를 찾아내는 것입니다.
+
+ 하지만 이와 같은 수동식 방법은 위험 투성이입니다. 프레임 속도 변화를 인지하는 사람의 능력에는 개인차가 극명하고, 시간도 오래 걸릴 뿐더러 지루하고 오류가 발생할 가능성이 높습니다.
+
+
+</p>
+
+<p>
+ 보다 효율적인 접근 방식은 자동화된 UI 테스트로부터 가져온 주요 성능 메트릭을 기록하고 분석하는 것입니다.
+ Android M 개발자 미리 보기에는 새로운 로깅 기능이 포함되어 있어 애플리케이션 애니메이션의 jank의 양과 심각도를 판별하기 쉽고, 이를 사용해 현재 성능을 판단하고 앞으로의 성능 목표를 추적하기 위해 철저한 프로세스를 구축할 수도 있습니다.
+
+
+
+</p>
+
+<p>
+ 이 글에서는 그러한 데이터를 사용하여 성능 테스트를 자동화하는 데 권장되는 방안을 찬찬히 알려드립니다.
+
+</p>
+
+<p>
+ 이것은 주로 두 가지 주요 작업으로 나뉘어 있습니다. 첫째로 무엇을 테스트할지, 어떻게 테스트할지를 확인합니다. 그런 다음 두 번째로 자동화된 테스트 환경을 설정하고 유지 관리하는 것입니다.
+
+
+</p>
+
+
+<h3 id="ui-tests">UI 테스트 설정</h3>
+
+<p>
+ 자동화된 테스트를 시작하기 전에 우선 몇 가지 수준 높은 결정을 내려야 합니다. 그래야 테스트 공간과 스스로에게 필요한 부분을 제대로 숙지할 수 있습니다.
+
+</p>
+
+<h4>
+ 테스트할 주요 애니메이션/흐름 알아내기
+</h4>
+
+<p>
+ 성능이 불량한 것이 사용자에게 가장 눈에 띄는 것은 애니메이션이 원활히 작동하지 않을 때라는 점을 명심하십시오.
+ 따라서, 테스트할 UI 작업 유형을 식별할 때에는 사용자가 가장 많이 접하게 되는 애니메이션이나 사용자 환경에 가장 중요한 것에 주안점을 두면 유용합니다.
+
+ 예를 들어 다음은 이처럼 식별하는 데 유용하게 쓰일 수 있는 몇 가지 보편적인 시나리오입니다.
+</p>
+
+<ul>
+ <li>기본 ListView 또는 RecyclerView를 스크롤링
+ </li>
+
+ <li>비동기 대기 주기 동안 표시되는 애니메이션
+ </li>
+
+ <li>비트맵 로딩/조작이 들어 있을 수 있는 모든 애니메이션
+ </li>
+
+ <li>알파 혼합이 포함된 애니메이션
+ </li>
+
+ <li>Canvas로 사용자 지정 보기 드로잉
+ </li>
+</ul>
+
+<p>
+ 팀 구성원인 엔지니어, 디자이너와 제품 관리자와 협력하여 이와 같이 테스트 대상 범위에 넣어야 하는 주요 제품 애니메이션의 우선 순위를 지정하십시오.
+
+</p>
+
+<h4>
+ 앞으로의 목표를 정의하고 그것을 추적하기
+</h4>
+
+<p>
+ 레벨이 높을 때에는 특정한 성능 목표를 알아내고 테스트 작성에 집중하며, 그에 관한 데이터를 수집하는 것이 매우 중요할 수 있습니다.
+ 예를 들면 다음과 같습니다.
+</p>
+
+<ul>
+ <li>처음에만 UI 성능을 추적하여 좀 더 자세히 알아보기만 했으면 합니까?
+ </li>
+
+ <li>앞으로 마주치게 될 성능 저하를 방지하고자 합니까?
+ </li>
+
+ <li>지금은 매끄러운 프레임 비율이 약 90% 정도이지만 이번 사분기 내에 98%까지 올리고자 합니까?
+ </li>
+
+ <li>지금 매끄러운 프레임이 약 98%이고 성능이 저하되지 않기를 바랍니까?
+ </li>
+
+ <li>저사양 기기에서 성능을 개선하는 것이 목표입니까?
+ </li>
+</ul>
+
+<p>
+ 이 모든 경우, 애플리케이션의 여러 버전에 걸쳐 성능을 나타내주는 사용 기록 추적을 수행하는 것이 좋습니다.
+
+</p>
+
+<h4>
+ 테스트할 기기 정하기
+</h4>
+
+<p>
+ 애플리케이션의 성능은 어느 기기에서 실행되는지에 따라 여러 가지로 달라집니다. 메모리 용량이 적고 GPU 파워가 딸리거나 CPU 칩 속도가 느린 기기도 있습니다.
+ 이는 즉 한 가지 하드웨어 세트에서는 잘 작동하는 애니메이션이 다른 곳에서는 그렇지 않을 수도 있다는 뜻입니다. 더 나쁜 경우로는 파이프라인의 서로 다른 부분에서 병목 현상이 일어나는 결과를 초래할 수도 있습니다.
+
+ 따라서, 사용자가 볼 수도 있는 이러한 변형을 감안하기 위해 테스트를 실행할 기기를 여러 가지로 선택하는 것이 중요합니다. 최신 고사양 기기, 저사양 기기, 태블릿 등 양쪽 측면을 모두 고려하십시오.
+
+ CPU 성능, RAM, 화면 밀도, 크기 등의 변형을 잘 살피십시오.
+ 고사양 기기를 통과하는 테스트가 저사양 기기에서는 실패할 수도 있습니다.
+
+</p>
+
+<h4>
+ UI 테스트의 기본 프레임워크
+</h4>
+
+<p>
+ <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>와 <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a> 등의 도구 스위트는 개발자의 애플리케이션을 통과하는 사용자의 동작을 자동화하는 데 도움이 되도록 구축된 것입니다.
+
+ 이들은 단순한 프레임워크로, 사용자와 기기의 상호작용을 흉내 냅니다.
+ 이러한 프레임워크를 사용하려면, 사실상 개발자가 나름의 고유한 스크립트를 생성해야 합니다. 이는 일련의 사용자-동작을 통해 실행되고, 이를 기기 자체에서 재생합니다.
+
+
+</p>
+
+<p>
+ 이렇게 자동화된 테스트를 여러 가지로 조합하여 <code>dumpsys gfxinfo</code>와 함께 사용하면 재현 가능한 시스템을 재빨리 만들어내 테스트를 실행하고 해당 조건 하에서 성능 정보를 측정할 수 있습니다.
+
+
+</p>
+
+
+<h3 id="automated-tests">자동화된 UI 테스트 설정</h3>
+
+<p>
+ UI 테스트를 실행할 수 있게 되고, 한 번의 테스트로부터 데이터를 수집할 파이프라인을 갖추게 되면 다음으로 중요한 단계는 해당 테스트를 여러 번, 여러 기기에 걸쳐 실행하고 그 결과 도출된 성능 데이터를 집계하여 개발 팀이 한층 더 상세하게 분석할 수 있게 해주는 프레임워크를 채택하는 것입니다.
+
+
+
+</p>
+
+<h4>
+ 테스트 자동화를 위한 프레임워크
+</h4>
+
+<p>
+ UI 테스트 프레임워크(예: <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)는 대상 기기/에뮬레이터에서 직접 실행된다는 점에 주목할 만한 가치가 있습니다.
+ 반면 <em>dumpsys gfxinfo</em>에 의해 완료되는 성능 수집 정보는 호스트 머신이 구동하여 ADB를 통해 명령을 전송합니다.
+ 이러한 각각의 항목 자동화를 연결하는 데 도움을 주기 위해 <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> 프레임워크가 개발되었습니다. 이것은 호스트 머신에서 실행되는 스크립팅 시스템으로, 일련의 연결된 기기에 명령을 발행하기도 하고 이들로부터 데이터를 수신할 수도 있습니다.
+
+
+
+</p>
+
+<p>
+ UI 성능 테스트를 제대로 자동화하기 위해 최소한의 수준으로 일련의 스크립트를 구축하는 경우, 다음과 같은 작업을 수행하기 위해 monkeyRunner를 활용할 수 있어야 합니다.
+
+</p>
+
+<ul>
+ <li>원하는 APK를 대상 기기(하나 이상일 수 있음) 또는 에뮬레이터에 로드하여 시작합니다.
+ </li>
+
+ <li>UI Automator UI 테스트를 시작하고 실행되도록 허용하십시오.
+ </li>
+
+ <li><em>dumpsys gfxinfo</em><em></em>를 통해 성능 정보를 수집합니다.
+ </li>
+
+ <li>정보를 집계하고 이를 다시 유용한 방식으로 표시해 개발자에게 보여줍니다.
+ </li>
+</ul>
+
+
+<h3 id="triage">관측된 문제 심사 및 수정</h3>
+
+<p>
+ 문제의 패턴이나 성능 저하를 확인했으면, 다음 단계는 해결 방법을 알아내어 적용합니다.
+ 자동화된 테스트 프레임워크가 프레임에 대해 정확한 타이밍 분석을 유지하는 경우, 최근의 의심스러운 코드/레이아웃 변경 내용을 꼼꼼히 훑어보거나(성능 저하의 경우) 수동 조사로 전환했을 때 시스템의 어느 부분을 분석할지 범위를 좁히는 데 도움이 될 수 있습니다.
+
+
+ 수동 조사의 경우, <a href="{@docRoot}tools/help/systrace.html">systrace</a>부터 시작하는 것이 좋습니다. 이렇게 하면 렌더링 파이프라인의 모든 단계, 시스템에 있는 모든 스레드와 코어는 물론 개발자가 정의한 사용자 지정 이벤트 마커 일체에 대해 정확한 타이밍 정보를 나타내주기 때문입니다.
+
+
+</p>
+
+<h4>
+ 임시 타이밍을 적절하게 프로파일링하기
+</h4>
+
+<p>
+ 렌더링 성능에서 타이밍을 가져와 이를 측정하는 데 수반되는 몇 가지 어려움을 알아두는 것이 중요합니다.
+ 이와 같은 숫자는 본래 결정적인 것이 아니고 시스템 상태, 이용 가능한 메모리 용량, 열 제한 및 개발자가 사는 지역에 태양 플레어가 마지막으로 영향을 미친 시점 등에 따라 변동폭이 큽니다.
+
+ 요점은 같은 테스트를 두 번 실행하면서 서로 근사치이지만 완전히 똑같지는 않은, 약간 다른 숫자를 얻어내는 데 있습니다.
+
+
+</p>
+
+<p>
+ 이런 식으로 데이터를 제대로 수집하고 프로파일링한다는 것은 같은 테스트를 여러 번 거듭 실행하면서 얻어지는 결과를 평균 또는 중간값(너무 복잡해지니 이것을 '배치(batch)'라고 부르기로 합시다)으로 누적한다는 것을 뜻합니다. 이렇게 하면 테스트 성과를 대략적으로 어림잡을 수 있으면서 정확한 타이밍은 없어도 됩니다.
+
+
+
+</p>
+
+<p>
+ 이러한 배치를 코드 변경 사이사이에 사용하여 그러한 변경 내용이 성능에 미치는 상대적인 영향을 알아볼 수도 있습니다.
+ 변경 전 배치의 평균 프레임 속도가 변경 후 배치에서보다 빠른 경우, 해당 변경에 대해 전반적으로 좋은 WRT 성능을 성취했다는 뜻입니다.
+
+
+</p>
+
+<p>
+ 이는 즉 개발자가 수행하는 자동화된 UI 테스트는 모두 이 개념을 감안해야 한다는 뜻이기도 하고, 테스트 중에 일어나는 모든 변칙적인 부분 또한 감안해야 한다는 뜻입니다.
+ 예를 들어 애플리케이션 성능이 일종의 기기 문제(본인의 애플리케이션에서 기인한 것이 아님) 때문에 갑자기 뚝 떨어지는 경우라면 해당 배치를 다시 실행하여 조금 덜 혼란스러운 타이밍을 얻어야 할 수도 있습니다.
+
+
+
+</p>
+
+<p>
+ 그렇다면 측정값이 의의를 지니려면 테스트를 몇 번이나 수행하는 것이 좋습니까? 최소한 10번은 해야 합니다. 실행 횟수가 50이나 100처럼 커질수록 더욱 정확한 경과를 도출할 수 있습니다(물론, 이제는 정확도와 시간을 맞바꿔야 하는 셈입니다).
+
+
+</p>