diff options
author | David Friedman <dmail@google.com> | 2015-07-08 04:25:05 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-08 04:25:05 +0000 |
commit | 68c22cd17d922889c5d035f628395733f85fcbc2 (patch) | |
tree | a467a9c08baf498b3b6bc6dfd1eced1af42558f0 | |
parent | e6e821d641fe5be6fc9e18e4e6920e8134e949f8 (diff) | |
parent | 73fde03ad7e3e39739da23c6d39a1b9911e2b2d9 (diff) | |
download | frameworks_base-68c22cd17d922889c5d035f628395733f85fcbc2.zip frameworks_base-68c22cd17d922889c5d035f628395733f85fcbc2.tar.gz frameworks_base-68c22cd17d922889c5d035f628395733f85fcbc2.tar.bz2 |
am 73fde03a: am d6473b0f: Merge "Docs: L10N of remaining M-Preview docs (zh-tw)" into mnc-preview-docs
* commit '73fde03ad7e3e39739da23c6d39a1b9911e2b2d9':
Docs: L10N of remaining M-Preview docs (zh-tw)
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/backup/index.jd | 327 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/download.jd | 348 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/features/app-linking.jd | 123 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/index.jd | 67 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/license.jd | 143 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/samples.jd | 70 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/setup-sdk.jd | 207 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/support.jd | 67 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/testing/guide.jd | 187 | ||||
-rw-r--r-- | docs/html-intl/intl/zh-tw/preview/testing/performance.jd | 656 |
10 files changed, 2195 insertions, 0 deletions
diff --git a/docs/html-intl/intl/zh-tw/preview/backup/index.jd b/docs/html-intl/intl/zh-tw/preview/backup/index.jd new file mode 100644 index 0000000..edb8b98 --- /dev/null +++ b/docs/html-intl/intl/zh-tw/preview/backup/index.jd @@ -0,0 +1,327 @@ +page.title=針對應用程式進行自動備份 +page.tags=backup, previewresources, androidm +page.keywords=backup, autobackup, preview +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 雲端硬碟,讓使用者獲得良好的體驗。 + +如果使用者變更或升級裝置,應用程式資料會自動儲存。 + +</p> + +<p> + 在執行 Android M 預覽版的裝置上安裝的所有應用程式,預設都會啟用自動備份。不需要任何額外的應用程式程式碼。 +系統則提供使用者不進行自動備份資料的選項。 +您也可以選擇限制要備份應用程式的哪些資料。 +</p> + +<p> + 本文件說明新的系統行為,以及如何指定備份應用程式的哪些資料。 + +</p> + +<h2 id="overview">總覽</h2> + +<p> + 自動備份功能保存應用程式資料的方法,是將使用者裝置上建立的資料上傳到使用者的 Google 雲端硬碟帳戶,然後將資料加密。 +儲存資料不會向您或使用者收費,儲存的資料也不會計入使用者個人雲端硬碟的容量配額。 +在 M 預覽版期間,使用者最多可以為每個 Android 應用程式儲存 25 MB 的資料。 + +</p> + +<p> + 當裝置閒置、正在充電且連線到 Wi-Fi 網路時,每 24 小時會執行一次自動備份。 +當符合上述情況時,備份管理員服務就會將所有可用的備份資料上傳到雲端。 +當使用者轉換到新的裝置,或者解除安裝又重新安裝已備份的應用程式時,系統會進行一項還原作業,將備份的資料複製到新安裝之應用程式的資料目錄。 + + +</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> +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + package="com.my.appexample"> + <uses-sdk android:minSdkVersion="MNC"/> + <uses-sdk android:targetSdkVersion="MNC"/> + <app ... +<strong> android:fullBackupContent="@xml/mybackupscheme"></strong> + </app> + ... +</manifest> +</pre> + +<p> + 在此範例程式碼中,<code>android:fullBackupContent</code> 屬性指定應用程式開發專案的 <code>res/xml/</code> 目錄中,名為 +<code>mybackupscheme.xml</code> 的 XML 檔案。 +此設定檔包含要備份哪些檔案的規則。 +下列範例程式碼顯示排除特定檔案不要進行備份的設定檔: + +</p> + +<pre> +<?xml version="1.0" encoding="utf-8"?> +<full-backup-content> + <exclude domain="database" path="device_info.db"/> +</full-backup-content> +</pre> + +<p> + 此範例備份設定只排除特定資料庫檔案不要進行備份。 + 其他所有檔案都會備份。 +</p> + +<h4>備份設定語法</h4> + +<p> + 您可以使用備份服務設定指定要將哪些檔案納入或排除備份。 +資料備份設定 XML 檔案的語法如下所示: +</p> + +<pre> +<full-backup-content> + <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> + <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> +</full-backup-content> +</pre> + +<p> + 您可以使用下列元素和屬性指定要將哪些檔案納入備份或從備份排除: + +</p> + +<ul> + <li> + <code><include></code>。如果您想要指定備份一組資源,請使用此元素,而不要讓系統預設備份應用程式的所有資料。 +當您指定 +<code><include></code> 標籤時,系統只會備份此元素「指定的資源」<em></em>。 + + </li> + + <li> + <code><exclude></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> +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + package="com.my.appexample"> + <uses-sdk android:minSdkVersion="MNC"/> + <uses-sdk android:targetSdkVersion="MNC"/> + <app ... +<strong> android:allowBackup="false"></strong> + </app> + ... +</manifest> +</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><PACKAGE></code> 參數指定為您應用程式的套件名稱,手動備份您的應用程式: + +</p> + +<pre class="noprettyprint"> +$ adb shell bmgr fullbackup <PACKAGE></pre> + + +<h4>測試還原</h4> + +<p> + 如要在應用程式資料備份之後手動啟動還原,請呼叫下列命令,將 <code><PACKAGE></code> 參數指定為您應用程式的套件名稱: + +</p> + +<pre class="noprettyprint"> +$ adb shell bmgr restore <PACKAGE> +</pre> + +<p class="warning"> + <b>警告:</b>這個動作在執行還原作業之前會先停止您的應用程式,然後清除其中的資料。 + +</p> + +<p> + 如果解除安裝又重新安裝應用程式,就會針對應用程式啟動還原程序。應用程式安裝完成之後,就會自動從雲端還原應用程式資料。 + +</p> + + +<h4>疑難排解備份</h4> + +<p> + 如果您遇到問題,可以在 [設定] > [備份]<strong></strong> 中關閉備份再開啟、將裝置重設為出廠值,或是呼叫下列命令,清除備份資料及相關的中繼資料: + + +</p> + +<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre> + +<p> + <code><TRANSPORT></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 雲端通訊</strong> - 使用「Google 雲端通訊」推送通知的應用程式有一個已知問題,亦即備份由「Google 雲端通訊」註冊程序傳回的註冊 ID,會讓還原後的應用程式無法傳送推送通知。在新裝置安裝 API 之後,需要向 API 查詢新的註冊 ID,因此如果之前備份了舊的註冊 ID,就會發生問題。 + + + + +如要避免發生這個情況,請不要備份包含註冊 ID 的檔案。 + + </li> +</ul> diff --git a/docs/html-intl/intl/zh-tw/preview/download.jd b/docs/html-intl/intl/zh-tw/preview/download.jd new file mode 100644 index 0000000..9632715 --- /dev/null +++ b/docs/html-intl/intl/zh-tw/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/) 所提供的 Android 裝置軟體堆疊 (不定期更新)。 + +1.3「Google」係指 Google Inc.,是一家在美國德拉瓦州註冊的公司,地址為 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。 + +2.接受「授權協議」 + +2.1 必須先同意遵守「授權協議」,才能使用此「預覽版」。如果不接受「授權協議」,您就無法使用此「預覽版」。 + +2.2 按一下 [接受] 且/或使用「預覽版」,即表示您同意「授權協議」的條款。 + +2.3 如果您是美國或其他國家/地區 (包括您所居住或使用此「預覽版」的國家/地區) 的法律所禁止接收此「預覽版」的人員,就不得使用此「預覽版」及接受「授權協議」。 + +2.4 如果您將在公司或組織內部使用「預覽版」,您就要代表雇主或其他實體同意受「授權協議」約束,且您代表並保證具備完整法定權限來約束您的雇主或這類實體遵守「授權協議」。如果您不具備必要的權限,就不得代表您的雇主或其他實體接受「授權協議」或使用此「預覽版」。 + +3.Google 的預覽版授權 + +3.1 在「授權協議」之條款的約束下,Google 授權您使用此「預覽版」,此授權為買斷式、不可轉讓、非獨占性、不可轉授權、有限且可撤銷,僅在您公司或組織內部私下或內部使用。此「預覽版」僅供您用於開發在 Android 平台上執行的應用程式。 + +3.2 您同意 Google 或第三方對此「預覽版」擁有一切法定權利及權益,包括存在於此「預覽版」中的任何「智慧財產權」。「智慧財產權」係指專利法、著作權法、商業秘密法、商標法及任何和所有其他專利權下的任何及一切權利。Google 保留一切未明確授予您的權利。 + +3.3 您不得將此「預覽版」用於「授權協議」未明文許可的任何用途。除非適用的第三方授權所需,否則您不得:(a) 對此「預覽版」或其任何部分進行複製 (備份用途除外)、修改、改編、轉散佈、反向組譯、還原工程、解編或製作衍生成品;或是 (b) 將此「預覽版」的任何部分載入至行動電話或個人電腦以外的任何其他硬體裝置、將此「預覽版」的任何部分與其他軟體結合,或散佈包含此「預覽版」之任一部分的任何軟體或裝置。 + +3.4 您同意不會從事任何可能導致或造成 Android 分裂的活動,包括但不限於以任何形式散佈從此「預覽版」衍生的軟體開發套件、參其製作或宣傳。 + +3.5 對開放原始碼軟體授權下所授權之「預覽版」的使用、複製及散佈,完全受該開放原始碼軟體授權的條款管制,而不受「授權協議」管制。您同意遵守從這類開放原始碼軟體授權獲得的所有權利,並且避免採取任何可能終止、中止或侵害這類權利的行為。 + +3.6 您同意 Google 可在不事先通知您的情況下變更其所提供之「預覽版」的形式和本質,且此「預覽版」的未來版本可與在此「預覽版」的先前版本上開發的應用程式不相容。您同意 Google 通常可全權斟酌永久或暫時停止提供此「預覽版」(或此「預覽版」的任何功能) 給您或使用者,毋須事先通知。 + +3.7「授權協議」中的所有條款皆未授予您任何使用 Google 之商業名稱、商標、服務標章、標誌、網域名稱或其他明確品牌特徵的權利。 + +3.8 您同意不會移除、遮蔽或更改可能附加至或內含在此「預覽版」中的任何專利權通知 (包括著作權和商標通知)。 + +4.您對「預覽版」的使用 + +4.1 Google 同意在「授權協議」下,任何條款皆未從您 (或您的授權人) 賦予 Google 對您使用此「預覽版」開發之任何軟體應用程式的任何權利及權益,包括存在於這些應用程式中的任何智慧財產權。 + +4.2 您同意只就 (a)「授權協議」和 (b) 相關管轄權中任何適用法律、規定或是普遍獲得接受之慣例或指導方針 (包括任何有關將資料或軟體輸出或輸入美國或其他相關國家/地區的法律) 所允許的用途使用此「預覽版」及撰寫應用程式。 + +4.3 您同意如果使用此「預覽版」開發應用程式,您將保護使用者的隱私權和法定權利。如果使用者提供您使用者名稱、密碼或是其他登入資訊或個人資訊,您必須告知使用者這類資訊將提供給您的應用程式使用,並且必須為這些使用者提供法定充分的隱私權通知和保護。如果您的應用程式會儲存使用者所提供的個人或敏感資訊,它必須確保這些資訊安全無虞。如果使用者提供 Google 帳戶資訊給您,則只有在每個使用者已授權您存取其 Google 帳戶並僅限用於使用者所授權之用途的情況下,您的應用程式才能使用該資訊來存取使用者的 Google 帳戶。 + +4.4 您同意不會使用此「預覽版」從事任何不當Activity,例如開發或散佈會以未經授權的方式干擾、妨礙、損害或存取 Google 或任何第三方之伺服器、網路或是其他財產或服務的應用程式。 + +4.5 您同意對您透過 Android 裝置和 (或) Android 應用程式建立、傳輸或顯示的任何資料、內容或資源,以及上述行為造成的後果 (包括 Google 可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。 + +4.6 您同意對違反在此「授權協議」、任何適用之第三方合約或《服務條款》或是任何適用之法律或規定下所必須遵守的義務,以及違反相關義務造成的後果 (包括 Google 或任何第三方可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。 + +4.7「預覽版」目前正在開發中,因此您的測試與意見反應對開發程序非常重要。使用「預覽版」,您即認同某些功能仍處於開發階段,因此您不應期待「預覽版」擁有穩定版本的完整功能。在官方 Android SDK 發行之後,此「預覽版」不再受到支援時,您同意不使用此「預覽版」公開散佈或隨附任何應用程式。 + +5.您的開發人員認證 + +5.1 您同意負責保密 Google 可能核發給您或您自己選擇的任何開發人員認證,並且對在您開發人員認證名義下開發的所有應用程式負起全責。 + +6.隱私權和資訊 + +6.1 為了持續更新及改進此「預覽版」,Google 可能會從軟體收集某些使用狀況統計數據,包括但不限於軟體的唯一識別碼、相關 IP 位址、版本號碼,以及有關使用此「預覽版」中的哪些工具和 (或) 服務及其使用方式的相關資訊。在收集這類資訊之前,此「預覽版」會先通知您並徵求您的同意。如果您不同意,Google 將不會收集這類資訊。 + +6.2 Google 會彙總並檢查收集到的資料,據以改善此「預覽版」,並且會依據《Google 隱私權政策》(http://www.google.com/policies/privacy/) 加以妥善保存。 + +7.第三方應用程式 + +7.1 如果您使用此「預覽版」來執行第三方開發的應用程式,或是執行會存取第三方所提供之資料、內容或資源的應用程式,您同意 Google 不需對這類應用程式、資料、內容或資源負任何責任。您瞭解您透過第三方應用程式存取的所有資料、內容或資源是由其提供者負起全責,而 Google 對您因使用或存取任何這些第三方應用程式、資料、內容或資源所造成的損失或損害不需負任何責任。 + +7.2 您瞭解第三方應用程式提供給您的資料、內容或資源可能受到提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您不得根據這類資料、內容或資源 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品,除非相關擁有者明確授權您從事上述活動。 + +7.3 您瞭解使用第三方應用程式、資料、內容或資源可能受到您與相關第三方之間的個別條款約束。 + +8.使用 Google API + +8.1 Google API + +8.1.1 如果您使用任何 API 從 Google 擷取資料,您瞭解這些資料可能受到 Google 或資料提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您對任何這類 API 的使用可能受到其他《服務條款》約束。除非相關《服務條款》明文允許,否則您不得根據這類資料 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品。 + +8.1.2 使用任何 API 從 Google 擷取使用者的資料時,您瞭解並同意只有在該使用者明確同意且授權您擷取其資料,而且僅限用於使用者所授權之用途的情況下,您才能擷取資料。 + +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 在法律允許的最大範圍內,您同意為 Google、其子公司及其個別董監事、主管、員工和代理人,就任何和一切索賠、法律行動、訴訟或訴訟程序,以及因下列原因而引起的任何和一切損失、責任、損害賠償、費用及開支 (包括合理的律師費),提供辯護、賠償損失並確保其免於承擔賠償責任:(a) 您使用此「預覽版」;(b) 您使用此「預覽版」開發的應用程式侵害任何人的任何智慧財產權,或是詆毀任何人或違反其公開權或隱私權;以及 (c) 您未遵守「授權協議」。 + +13.對「授權協議」做出的變更 + +13.1 Google 可在散佈此「預覽版」的新版本時修改「授權協議」。做出這類變更後,Google 會在提供此「預覽版」的網站上提供「授權協議」的新版本。 + +14.一般法律條款 + +14.1「授權協議」構成您與 Google 之間的法律協議,用於管制您對此「預覽版」(不包括 Google 依據個別書面協議提供給您的任何服務) 的使用,並完全取代先前您與 Google 之間就此「預覽版」簽署的相關協議。 + +14.2 您同意如果 Google 未行使或執行「授權協議」所含的任何法律權利或救濟 (或在任何適用法律下對 Google 有利的權益),並不代表 Google 正式放棄權利,Google 日後仍可行使這些權利或救濟。 + +14.3 如果經任何法院 (就此事宜依管轄權決定) 裁決「授權協議」中有任何條款無效,則該條款將自「授權協議」中移除,「授權協議」的其餘部分則不受影響。「授權協議」的其餘條款將持續具有效力且可執行。 + +14.4 您瞭解並同意 Google 旗下子公司體系的每位成員都是「授權協議」的第三方受益人,而且這類其他公司有權直接執行和依據「授權協議」中對其授予權益 (或對其有利之權利) 的任何條款。除此之外的任何其他人員或公司皆非「授權協議」的第三方受益人。 + +14.5 出口限制。此「預覽版」受美國出口法規約束。您必須遵守適用於此「預覽版」的所有國內和國際出口法規。這些法律包括對目的地、使用者及最終用途的限制。 + +14.6 未事先取得 Google 事先書面核准的情況下,您不得轉讓或轉移「授權協議」,未經這類核准的任何轉讓將會失效。您不得在未事先取得 Google 書面核准的情況下,委派其「授權協議」涵蓋的責任或義務。 + +14.7「授權協議」以及您與 Google 就「授權協議」構成的關係皆受加州法律管轄,毋須理會其法律牴觸條款。您和 Google 同意服從位於加州聖塔克拉拉 (Santa Clara, California) 郡內法院的專屬管轄權,以解決由「授權協議」產生的任何法律事務。儘管如此,您同意 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 管理器</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 系統映像與出廠作業系統的測試不同,可能會導致您的手機和安裝的服務與應用程式停止運作。 + + +</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) 更新方式自動升級為下一個預覽版版本。 + +</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/zh-tw/preview/features/app-linking.jd b/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd new file mode 100644 index 0000000..5be8a0f --- /dev/null +++ b/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd @@ -0,0 +1,123 @@ +page.title=應用程式連結 +page.image=images/cards/card-app-linking_2x.png +page.keywords=應用程式連結, 深層連結, 意圖 +@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 模式。當使用者按一下不含預設啟動處理常式的 Web 連結時,平台可能會顯示一個對話方塊,讓使用者能夠從具備已宣告相符意圖篩選條件的應用程式清單中選取。 + + +</p> + +<p> + Android M 開發人員預覽版引進了應用程式連結的支援,這樣就能藉由允許應用程式開發人員將應用程式關聯至他們所擁有的 Web 網域,來改善現有的連結處理。 +當開發人員建立這個關聯時,平台可以自動判斷要用來處理特定 Web 連結的預設應用程式,並略過詢問使用者的程序。 + + +</p> + + +<h2 id="web-assoc">宣告網站關聯</h2> + +<p> + 網站擁有者必須宣告與應用程式的關聯,才能建立應用程式連結。站台擁有者可藉由在網域上的已知位置裝載名為 {@code statements.json} 的 JSON 檔案,來宣告與應用程式的關係: + + +</p> + +<pre>http://<domain>:<optional port>/.well-known/statements.json</pre> + +<p class="note"> + <strong>注意:</strong> + 在 M 開發人員預覽版期間,會透過 http 通訊協定來驗證 JSON 檔案。如果是平台的正式版本,就會透過加密的 https 通訊協定來驗證該檔案。 + +</p> + +<p> + 這個 JSON 檔案會指出應該在這個網域中用來做為 URL 預設處理常式的 Android 應用程式。 +它會根據下列欄位來識別應用程式: +</p> + +<ul> + <li>{@code package_name}:宣告於應用程式宣示說明中的套件名稱。</li> + + <li>{@code sha256_cert_fingerprints}:您應用程式簽署憑證的 SHA256 指紋。 + 您可以使用 Java 金鑰工具,利用下列命令來產生指紋: + <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><package name></strong>", + "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"] + } +}] +</pre> + + +<h2 id="verfy-links">要求應用程式連結驗證</h2> + +<p> + 應用程式可以要求平台根據裝載於個別 Web 網域上的 {@code statements.json} 檔案,自動驗證在其意圖篩選條件的資料元素中由主機名稱所定義的任何應用程式連結。 + +如要要求應用程式連結驗證,請將 {@code android:autoVerify} + 屬性新增到宣示說明中每個所需的意圖篩選條件中,如下列宣示說明程式碼片段所示: + +</p> + +<pre> +<activity ...> + <intent-filter <strong>android:autoVerify="true"</strong>> + <action android:name="android.intent.action.VIEW" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + <data android:scheme="http" android:host="www.android.com" /> + <data android:scheme="https" android:host="www.android.com" /> + </intent-filter> +</activity> +</pre> + +<p> + 當 {@code android:autoVerify} 屬性出現在應用程式宣示說明時,平台即會在安裝該應用程式時嘗試驗證應用程式連結。 +如果平台無法成功驗證應用程式連結,就無法將該應用程式設定為偏好使用的應用程式來處理 Web 連結。 +當使用者下次開啟其中一個連結時,平台就切換回為該使用者展示一個對話方塊。 + + +</p> + +<p class="note"> + <strong>注意:</strong>在測試期間,如果驗證失敗,可能會產生誤判,但是使用者已經使用系統「設定」應用程式,明確地啟用應用程式來自動開啟支援的連結。在此案例中,不會顯示任何對話方塊,而且連結會直接連至您的應用程式,但這只是基於使用者的設定,而不是因為驗證成功所致。 + + + +</p> + + +<h2 id="user-manage">管理應用程式連結設定</h2> + +<p> + 使用者可以變更應用程式連結設定,讓他們能夠以偏好使用的方式來處理 URL。您可以在系統「設定」應用程式中,於 [設定] > [應用程式] > [應用程式資訊] > [預設開啟]<strong></strong> 下方,檢閱和管理應用程式連結。 + + +</p> diff --git a/docs/html-intl/intl/zh-tw/preview/index.jd b/docs/html-intl/intl/zh-tw/preview/index.jd new file mode 100644 index 0000000..f57728c --- /dev/null +++ b/docs/html-intl/intl/zh-tw/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>休眠</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/zh-tw/preview/license.jd b/docs/html-intl/intl/zh-tw/preview/license.jd new file mode 100644 index 0000000..c4acb91 --- /dev/null +++ b/docs/html-intl/intl/zh-tw/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/) 所提供的 Android 裝置軟體堆疊 (不定期更新)。 + +1.3「Google」係指 Google Inc.,是一家在美國德拉瓦州註冊的公司,地址為 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。 + +2.接受「授權協議」 + +2.1 必須先同意遵守「授權協議」,才能使用此「預覽版」。如果不接受「授權協議」,您就無法使用此「預覽版」。 + +2.2 按一下 [接受] 且/或使用「預覽版」,即表示您同意「授權協議」的條款。 + +2.3 如果您是美國或其他國家/地區 (包括您所居住或使用此「預覽版」的國家/地區) 的法律所禁止接收此「預覽版」的人員,就不得使用此「預覽版」及接受「授權協議」。 + +2.4 如果您將在公司或組織內部使用「預覽版」,您就要代表雇主或其他實體同意受「授權協議」約束,且您代表並保證具備完整法定權限來約束您的雇主或這類實體遵守「授權協議」。如果您不具備必要的權限,就不得代表您的雇主或其他實體接受「授權協議」或使用此「預覽版」。 + +3.Google 的預覽版授權 + +3.1 在「授權協議」之條款的約束下,Google 授權您使用此「預覽版」,此授權為買斷式、不可轉讓、非獨占性、不可轉授權、有限且可撤銷,僅在您公司或組織內部私下或內部使用。此「預覽版」僅供您用於開發在 Android 平台上執行的應用程式。 + +3.2 您同意 Google 或第三方對此「預覽版」擁有一切法定權利及權益,包括存在於此「預覽版」中的任何「智慧財產權」。「智慧財產權」係指專利法、著作權法、商業秘密法、商標法及任何和所有其他專利權下的任何及一切權利。Google 保留一切未明確授予您的權利。 + +3.3 您不得將此「預覽版」用於「授權協議」未明文許可的任何用途。除非適用的第三方授權所需,否則您不得:(a) 對此「預覽版」或其任何部分進行複製 (備份用途除外)、修改、改編、轉散佈、反向組譯、還原工程、解編或製作衍生成品;或是 (b) 將此「預覽版」的任何部分載入至行動電話或個人電腦以外的任何其他硬體裝置、將此「預覽版」的任何部分與其他軟體結合,或散佈包含此「預覽版」之任一部分的任何軟體或裝置。 + +3.4 您同意不會從事任何可能導致或造成 Android 分裂的活動,包括但不限於以任何形式散佈從此「預覽版」衍生的軟體開發套件、參其製作或宣傳。 + +3.5 對開放原始碼軟體授權下所授權之「預覽版」的使用、複製及散佈,完全受該開放原始碼軟體授權的條款管制,而不受「授權協議」管制。您同意遵守從這類開放原始碼軟體授權獲得的所有權利,並且避免採取任何可能終止、中止或侵害這類權利的行為。 + +3.6 您同意 Google 可在不事先通知您的情況下變更其所提供之「預覽版」的形式和本質,且此「預覽版」的未來版本可與在此「預覽版」的先前版本上開發的應用程式不相容。您同意 Google 通常可全權斟酌永久或暫時停止提供此「預覽版」(或此「預覽版」的任何功能) 給您或使用者,毋須事先通知。 + +3.7「授權協議」中的所有條款皆未授予您任何使用 Google 之商業名稱、商標、服務標章、標誌、網域名稱或其他明確品牌特徵的權利。 + +3.8 您同意不會移除、遮蔽或更改可能附加至或內含在此「預覽版」中的任何專利權通知 (包括著作權和商標通知)。 + +4.您對「預覽版」的使用 + +4.1 Google 同意在「授權協議」下,任何條款皆未從您 (或您的授權人) 賦予 Google 對您使用此「預覽版」開發之任何軟體應用程式的任何權利及權益,包括存在於這些應用程式中的任何智慧財產權。 + +4.2 您同意只就 (a)「授權協議」和 (b) 相關管轄權中任何適用法律、規定或是普遍獲得接受之慣例或指導方針 (包括任何有關將資料或軟體輸出或輸入美國或其他相關國家/地區的法律) 所允許的用途使用此「預覽版」及撰寫應用程式。 + +4.3 您同意如果使用此「預覽版」開發應用程式,您將保護使用者的隱私權和法定權利。如果使用者提供您使用者名稱、密碼或是其他登入資訊或個人資訊,您必須告知使用者這類資訊將提供給您的應用程式使用,並且必須為這些使用者提供法定充分的隱私權通知和保護。如果您的應用程式會儲存使用者所提供的個人或敏感資訊,它必須確保這些資訊安全無虞。如果使用者提供 Google 帳戶資訊給您,則只有在每個使用者已授權您存取其 Google 帳戶並僅限用於使用者所授權之用途的情況下,您的應用程式才能使用該資訊來存取使用者的 Google 帳戶。 + +4.4 您同意不會使用此「預覽版」從事任何不當活動,例如開發或散佈會以未經授權的方式干擾、妨礙、損害或存取 Google 或任何第三方之伺服器、網路或是其他財產或服務的應用程式。 + +4.5 您同意對您透過 Android 裝置和 (或) Android 應用程式建立、傳輸或顯示的任何資料、內容或資源,以及上述行為造成的後果 (包括 Google 可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。 + +4.6 您同意對違反在此「授權協議」、任何適用之第三方合約或《服務條款》或是任何適用之法律或規定下所必須遵守的義務,以及違反相關義務造成的後果 (包括 Google 或任何第三方可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。 + +4.7「預覽版」目前正在開發中,因此您的測試與意見反應對開發程序非常重要。使用「預覽版」,您即認同某些功能仍處於開發階段,因此您不應期待「預覽版」擁有穩定版本的完整功能。在官方 Android SDK 發行之後,此「預覽版」不再受到支援時,您同意不使用此「預覽版」公開散佈或隨附任何應用程式。 + +5.您的開發人員認證 + +5.1 您同意負責保密 Google 可能核發給您或您自己選擇的任何開發人員認證,並且對在您開發人員認證名義下開發的所有應用程式負起全責。 + +6.隱私權和資訊 + +6.1 為了持續更新及改進此「預覽版」,Google 可能會從軟體收集某些使用狀況統計數據,包括但不限於軟體的唯一識別碼、相關 IP 位址、版本號碼,以及有關使用此「預覽版」中的哪些工具和 (或) 服務及其使用方式的相關資訊。在收集這類資訊之前,此「預覽版」會先通知您並徵求您的同意。如果您不同意,Google 將不會收集這類資訊。 + +6.2 Google 會彙總並檢查收集到的資料,據以改善此「預覽版」,並且會依據《Google 隱私權政策》(http://www.google.com/policies/privacy/) 加以妥善保存。 + +7.第三方應用程式 + +7.1 如果您使用此「預覽版」來執行第三方開發的應用程式,或是執行會存取第三方所提供之資料、內容或資源的應用程式,您同意 Google 不需對這類應用程式、資料、內容或資源負任何責任。您瞭解您透過第三方應用程式存取的所有資料、內容或資源是由其提供者負起全責,而 Google 對您因使用或存取任何這些第三方應用程式、資料、內容或資源所造成的損失或損害不需負任何責任。 + +7.2 您瞭解第三方應用程式提供給您的資料、內容或資源可能受到提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您不得根據這類資料、內容或資源 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品,除非相關擁有者明確授權您從事上述活動。 + +7.3 您瞭解使用第三方應用程式、資料、內容或資源可能受到您與相關第三方之間的個別條款約束。 + +8.使用 Google API + +8.1 Google API + +8.1.1 如果您使用任何 API 從 Google 擷取資料,您瞭解這些資料可能受到 Google 或資料提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您對任何這類 API 的使用可能受到其他《服務條款》約束。除非相關《服務條款》明文允許,否則您不得根據這類資料 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品。 + +8.1.2 使用任何 API 從 Google 擷取使用者的資料時,您瞭解並同意只有在該使用者明確同意且授權您擷取其資料,而且僅限用於使用者所授權之用途的情況下,您才能擷取資料。 + +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 在法律允許的最大範圍內,您同意為 Google、其子公司及其個別董監事、主管、員工和代理人,就任何和一切索賠、法律行動、訴訟或訴訟程序,以及因下列原因而引起的任何和一切損失、責任、損害賠償、費用及開支 (包括合理的律師費),提供辯護、賠償損失並確保其免於承擔賠償責任:(a) 您使用此「預覽版」;(b) 您使用此「預覽版」開發的應用程式侵害任何人的任何智慧財產權,或是詆毀任何人或違反其公開權或隱私權;以及 (c) 您未遵守「授權協議」。 + +13.對「授權協議」做出的變更 + +13.1 Google 可在散佈此「預覽版」的新版本時修改「授權協議」。做出這類變更後,Google 會在提供此「預覽版」的網站上提供「授權協議」的新版本。 + +14.一般法律條款 + +14.1「授權協議」構成您與 Google 之間的法律協議,用於管制您對此「預覽版」(不包括 Google 依據個別書面協議提供給您的任何服務) 的使用,並完全取代先前您與 Google 之間就此「預覽版」簽署的相關協議。 + +14.2 您同意如果 Google 未行使或執行「授權協議」所含的任何法律權利或救濟 (或在任何適用法律下對 Google 有利的權益),並不代表 Google 正式放棄權利,Google 日後仍可行使這些權利或救濟。 + +14.3 如果經任何法院 (就此事宜依管轄權決定) 裁決「授權協議」中有任何條款無效,則該條款將自「授權協議」中移除,「授權協議」的其餘部分則不受影響。「授權協議」的其餘條款將持續具有效力且可執行。 + +14.4 您瞭解並同意 Google 旗下子公司體系的每位成員都是「授權協議」的第三方受益人,而且這類其他公司有權直接執行和依據「授權協議」中對其授予權益 (或對其有利之權利) 的任何條款。除此之外的任何其他人員或公司皆非「授權協議」的第三方受益人。 + +14.5 出口限制。此「預覽版」受美國出口法規約束。您必須遵守適用於此「預覽版」的所有國內和國際出口法規。這些法律包括對目的地、使用者及最終用途的限制。 + +14.6 未事先取得 Google 事先書面核准的情況下,您不得轉讓或轉移「授權協議」,未經這類核准的任何轉讓將會失效。您不得在未事先取得 Google 書面核准的情況下,委派其「授權協議」涵蓋的責任或義務。 + +14.7「授權協議」以及您與 Google 就「授權協議」構成的關係皆受加州法律管轄,毋須理會其法律牴觸條款。您和 Google 同意服從位於加州聖塔克拉拉 (Santa Clara, California) 郡內法院的專屬管轄權,以解決由「授權協議」產生的任何法律事務。儘管如此,您同意 Google 仍可在任何管轄權中申請禁制令救濟 (或同等類型的緊急法定救濟)。 + + +</div>
\ No newline at end of file diff --git a/docs/html-intl/intl/zh-tw/preview/samples.jd b/docs/html-intl/intl/zh-tw/preview/samples.jd new file mode 100644 index 0000000..2ef9a60 --- /dev/null +++ b/docs/html-intl/intl/zh-tw/preview/samples.jd @@ -0,0 +1,70 @@ +page.title=範例 +page.image=images/cards/samples-new_2x.png +@jd:body + +<p> + 下列提供 M 開發人員預覽版的程式碼範例。如要下載 Android Studio 的範例,請選取 [File] (檔案) > [Import Samples] (匯入範例) 選單選項。 +<b></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/zh-tw/preview/setup-sdk.jd b/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd new file mode 100644 index 0000000..1769f74 --- /dev/null +++ b/docs/html-intl/intl/zh-tw/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 預覽版與開發人員預覽版一起使用。 +</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>開啟 [Settings] (設定) 視窗 (在 Windows 上,您可以選擇 [檔案] > [設定] 來執行此動作)。<strong> +</strong><strong></strong>選擇 [Appearance & Behavior] (外觀和行為) > [System Settings] (系統設定) > [Updates] (更新) 面板。<strong></strong> + + + + <p class="aside">在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance & Behavior] (外觀和行為) 面板。<strong></strong><strong></strong> + +</p> + </li> + + <li> 在「Updates」(更新) 面板上,選擇以下選項:[Automatically check updates for: (自動檢查以下的可用更新:) +<strong></strong><strong>Canary Channel] (測試版管道)。</strong> + </li> + + <li>在「Updates」(更新) 面板上,選取 [Check Now] (立即檢查) 以檢查是否有可用的最新測試版建置。<strong></strong><strong></strong> +版本請在系統提示您時,下載並安裝該版本。 + + </li> +</ol> + +<h2 id="get-sdk">取得預覽版 SDK</h2> + +<p>如要將預覽版 SDK 元件新增至您的開發環境:</p> + +<ol> + <li>啟動 Android Studio 1.3 預覽版。 + </li> + + <li>開啟 [Settings] (設定) 視窗 (在 Windows 上,您可以選擇 [檔案] > [設定] 來執行此動作)。<strong></strong><strong></strong> +選擇 [Appearance & Behavior] (外觀和行為) > [System Settings] (系統設定) > [Updates] (更新) 面板。<strong></strong> + + + + <p class="aside">在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance & Behavior] (外觀和行為) 面板。<strong></strong><strong></strong> + +</p> + </li> + + <li>在「Updates」(更新) 面板上,選擇以下選項:[Automatically check updates for: (自動檢查以下的可用更新:) +<strong></strong><strong></strong>Canary Channel] (測試版管道) 以及 [Automatically check updates for Android SDK: (自動檢查 Android SDK 的可用更新:)<strong> +Preview Channel] (預覽版管道)。</strong> + </li> + + <li>啟動 <strong>Android Studio Manager</strong>。(使用 Android Studio 1.3,SDK Manager 會與 Android Studio 整合,而不是獨立的應用程式。) + + + </li> + + <li>在「Platforms」(平台) 區段下,選取 [Android MNC Preview] (Android MNC 預覽版)。<strong></strong><strong></strong> + + </li> + + <li>在「Tools」(工具) 區段中,選擇最新的 Android SDK 工具、平台工具以及建置工具。<strong></strong><strong></strong><strong></strong><strong></strong> + + + </li> + + <li>按一下 [Install packages] (安裝套件) 並接受所有套件的授權合約。<strong></strong> + + </li> + + <li>開啟 [Settings] (設定) 視窗,然後選擇 [Appearance & Behavior] (外觀和行為) > [System Settings] (系統設定) > [Android SDK] 面板,來驗證已安裝 M 開發人員預覽版。<strong></strong><strong></strong> + +</li> + + <li>在「Android SDK」面板上,選擇 [SDK Platforms] (SDK 平台) 索引標籤。<strong></strong><strong></strong> +「Android MNC Preview」(Android MNC 預覽版) 應該會列在「Installed」(已安裝)。<strong></strong><em></em> +此外,開啟 [SDK Tools] (SDK 工具) 索引標籤以確認已經安裝最新的工具。<strong></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>核取 [Phone and Tablet] (手機與平板電腦)。<strong></strong></li> + <li>選取 [MNC:<strong></strong>Android M (Preview)] (Android M (預覽版)),它位於 [Minimum SDK] (SDK 最低版本)。<strong></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 電視,您可以在這些裝置上安裝預覽版系統映像,以測試您的應用程式。您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。 + + + +</p> + +<p class="caution"> + <strong>重要說明:</strong>在裝置上安裝預覽版映像,會「移除當中的所有資料」,因此您應該在安裝預覽版映像之前備份任何資料。<em></em> + +</p> + +<h3 id="setupAVD">設定虛擬裝置</h3> + +<p> + 您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。 + +</p> + +<p>如要使用 AVD Manager 來建立 AVD:</p> + +<ol> + <li>請在您的開發環境中安裝預覽版 SDK,如<a href="{@docRoot}preview/setup-sdk.html">設定預覽版 SDK</a> 中所述。 + +</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 電視</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/zh-tw/preview/support.jd b/docs/html-intl/intl/zh-tw/preview/support.jd new file mode 100644 index 0000000..2c2d66a --- /dev/null +++ b/docs/html-intl/intl/zh-tw/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> (2015 年 5 月)<em></em> + </p> + + <div class="toggle-content-toggleme"> + + <dl> + <dt>初始版本。</dt> + </dl> + </div> +</div> + + diff --git a/docs/html-intl/intl/zh-tw/preview/testing/guide.jd b/docs/html-intl/intl/zh-tw/preview/testing/guide.jd new file mode 100644 index 0000000..879ec02 --- /dev/null +++ b/docs/html-intl/intl/zh-tw/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">測試休眠與應用程式待命</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">休眠與應用程式待命</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>模型改變使用者對您的應用程式分配權限的方式。 +以前在安裝過程中會授與所有權限,現在您的應用程式則必須在執行階段向使用者要求個別的權限。 + +對於使用者而言,這個行為能夠對每個應用程式的Activity提供更細膩的控制,而且也能更瞭解應用程式為何要要求特定權限。 +使用者可以隨時個別對應用程式授與或撤銷權限。 +預覽版的這個功能最有可能影響到您應用程式的行為,而且可能會導致應用程式某些功能無法正常運作,或者這些功能會以降級的狀態運作。 + + +</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] <permission.name> ...</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">測試休眠與應用程式待命</h2> + +<p> + 當裝置處於閒置狀態,或者當您的應用程式不在使用中時,「休眠」與「應用程式待命」的省電功能會限制應用程式可以執行的背景處理量。 +系統可能加諸在應用程式的限制,包括網路受到限制或沒有網路、背景工作暫停、通知暫停、喚醒要求被略過,以及警示被略過。 + +如要確保您的應用程式能正確運作,而且這些省電功能也達到最好的效益,您應該透過模擬這些低電量狀態,測試您的應用程式。 + + +</p> + +<h4 id="doze">搭配休眠測試應用程式</h4> + +<p>對您的應用程式測試休眠:</p> + +<ol> +<li>設定 M 預覽版系統映像的硬體裝置或虛擬裝置。</li> +<li>將裝置連線到您的開發電腦並安裝您的應用程式。</li> +<li>執行您的應用程式並讓應用程式保持使用中。</li> +<li>執行下列命令,模擬裝置進入「休眠」模式: + +<pre> +$ adb shell dumpsys battery unplug +$ adb shell dumpsys deviceidle step +$ adb shell dumpsys deviceidle -h +</pre> + + </li> + <li>觀察當裝置重新啟動時的應用程式行為。當裝置結束「休眠」時,確定應用程式順利回復。 +</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 <packageName> true +</pre> + + </li> + <li>使用下列命令,模擬喚醒應用程式: + <pre>$ adb shell am set-idle <packageName> false</pre> + </li> + <li>觀察當應用程式被喚醒時的行為。確定應用程式順利從待命模式回復。 +您尤其要檢查應用程式通知與背景工作是否有如預期般繼續運作 +。</li> +</ol> + +<h2 id="ids">針對應用程式進行自動備份與裝置特定識別碼</h2> + +<p>如果您的應用程式在內部儲存空間存有任何裝置特定識別碼,例如 Google +雲端通訊註冊 ID,請確認按照建議做法排除這些儲存位置不要進行自動備份,如<a href="{@docRoot}preview/backup/index.html">針對應用程式進行自動備份</a>中所述。 + + + </p> diff --git a/docs/html-intl/intl/zh-tw/preview/testing/performance.jd b/docs/html-intl/intl/zh-tw/preview/testing/performance.jd new file mode 100644 index 0000000..5437e9d --- /dev/null +++ b/docs/html-intl/intl/zh-tw/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> + 使用者介面效能測試可確保您的應用程式不只符合功能需求,與使用者與應用程式的互動也無比順暢,執行時每秒一致有 60 個畫面 (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">為什麼 60fps?</a>),任何畫面都不會遺漏或延遲,或稱為「閃避」<em></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> +> adb shell dumpsys gfxinfo <PACKAGE_NAME> +</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> +>adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats +</pre> + +<p> + 此命令會從應用程式所產生至少 120 個畫面當中,加上奈秒時間戳記印出畫面計時資訊。以下範例是 adb dumpsys gfxinfo <PACKAGE_NAME> 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>FLAGS + <ul> + <li>FLAGS 資料欄的資料列均為 0,從 FRAME_COMPLETED 資料欄減去 INTENDED_VSYNC 資料欄可計算得出總畫面時間。 + + </li> + + <li>如果這個值非零,應該略過該資料列,因為從正常效能來判斷,畫面已是極端值,版面配置與繪製預期都要花費 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&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&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>輸入佇列中最新輸入事件的時間戳記,或為 0,若沒有該畫面的輸入事件的話。 + + </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">順滑流暢與否</a>影片。 + + </li> + </ul> + </li> + + <li>PERFORM_TRAVERSALS_START + <ul> + <li>如果您從這個值中減去 DRAW_START,就可以得知版面配置和測量階段花費多久的時間完成。(請注意,在捲動或動畫期間,您會希望這個值趨近於零。) + + + </li> + + <li>如要深入瞭解轉譯管道的測量與版面配置階段,請參閱<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&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&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&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&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">設定檔 GPU 轉譯</a>影片。 + + </li> + </ul> + </li> + + <li>ISSUE_DRAW_COMMANDS_START + <ul> + <li>硬體轉譯器開始對 GPU 發出繪製命令的時間。 + </li> + + <li>這個值與 FRAME_COMPLETED 之間的時間大約就是應用程式產生的 GPU 工作量。 +太過度繪製或無效轉譯效果之類的問題都會顯示於此。 + + </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> + 您能以不同的方式使用這項資料。顯示不同延遲貯體中畫面時間分布的長條圖就是一種簡單但實用的方式,請見下圖。 + +本圖可一目瞭然地告訴我們,大部分畫面都低於 16ms 的上限 (紅色除外),但只有幾個畫面明顯超過上限。 + +我們可以查看此長條圖一段時間的變化,觀察出現的大規模位移或產生新的極端值。 +您也能根據資料中的許多時間戳記將輸入延遲、花費在版面配置的時間或其他類似的有趣度量指標繪成圖表。 + + +</p> + +<img src="{@docRoot}preview/images/perf-test-framestats.png"> + + +<h3 id="timing-dump">簡易畫面計時傾印</h3> + +<p> + 如果 [開發人員選項] 中的 [設定檔 GPU 轉譯]<strong></strong> 設定為 [In adb shell dumpsys gfxinfo]<strong></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&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">無效判定、版面配置及效能</a>影片。 + + +</p> + + +<h3 id="collection-window">控制統計資料收集時間</h3> + +<p> + framestats 與簡單的畫面計時都會收集極短時間內的資料 – 轉譯約需兩秒。 +為了精確控制這段時間,例如只限特定動畫的資料,您可以重設所有計數器,然後彙總收集的統計資料。 + + +</p> + +<pre> +>adb shell dumpsys gfxinfo <PACKAGE_NAME> reset +</pre> + +<p> + 這也能和傾印命令本身結合使用,定期收集和重設,持續擷取兩秒時間內的畫面。 + + +</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>轉譯效能 101 + </li> + <li>為什麼 60fps? + </li> + <li>Android UI 和 GPU + </li> + <li>無效判定、版面配置及效能 + </li> + <li>利用 Systrace 分析 UI 效能 + </li> +</ul> + + +<h2 id="automate">自動化 UI 效能測試</h2> + +<p> + UI 效能測試的方法之一就是讓測試人員對目標應用程式執行一組使用者操作,並以肉眼查看,或花費很長一段時間使用工具導向的方法,尋找閃避現象。 + +但這種靠人工的方式充滿危險,人類對畫面率變化的感知能力因人而異,而且這種方法也很費時、繁瑣且容易出錯。 + + +</p> + +<p> + 較有效率的方法是從自動化的 UI 測試中記錄和分析重要效能度量指標。 +Android M 開發人員預覽版包含新的記錄功能,能夠輕鬆判斷應用程式動畫中閃避現象的數量與嚴重程度,還能用來建置嚴謹的程序,判斷目前的效能並追蹤未來的效能目標。 + + + +</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>包含 Alpha 透明混色的動畫 + </li> + + <li>使用畫布繪製的自訂檢視 + </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>) 毫無價值。 +因為效能收集資訊是由主控機器透過 ADB 傳送命令驅動 <em>dumpsys gfxinfo</em> 來完成。 +<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>透過 dumpsys gfxinfo 收集效能資訊。<em></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> + 以這種方式適當收集和分析資料,表示執行相同的測試多次,並累積結果取平均值或中間值。(為了簡單起見,我們稱之為「批次」) 這可讓您粗略計算測試的效能,而不需要精確的計時。 + + + +</p> + +<p> + 在變更的程式碼之間使用批次,可看出那些變更對效能的影響。 +如果前次變更批次的平均畫面率大於後來變更批次,您通常會有那項特定變更的整體 win wrt 效能。 + + +</p> + +<p> + 這表示您執行的任何自動化 UI 測試都應將此概念列入考量,同時考量可能會在測試期間發生的任何異常情況。 +例如,您的應用程式效能若因為某些裝置問題而突然下降 (並非由您的應用程式引起),您可能會想要重新執行批次,以讓取得的計時較不混亂。 + + + +</p> + +<p> + 應該執行多少次測試才能獲得有意義的測量結果呢?最少應執行 10 次,若執行更多次 (像是 50 或 100 次) 可以產生更準確的結果 (當然您現在是以時間換取準確度)。 + + +</p> |