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 0000000000000..edb8b98fb63cf --- /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 + +
+ ++ 使用者通常會在應用程式中花費很多時間精力建立資料和設定偏好設定。 +如果使用者換掉壞掉的裝置或升級到新的裝置時,能夠保存裝置上的資料,就能夠讓使用者獲得良好的體驗。 +執行 Android M 預覽版系統的裝置可以協助在上述情況自動將應用程式資料備份到 Google 雲端硬碟,讓使用者獲得良好的體驗。 + +如果使用者變更或升級裝置,應用程式資料會自動儲存。 + +
+ ++ 在執行 Android M 預覽版的裝置上安裝的所有應用程式,預設都會啟用自動備份。不需要任何額外的應用程式程式碼。 +系統則提供使用者不進行自動備份資料的選項。 +您也可以選擇限制要備份應用程式的哪些資料。 +
+ ++ 本文件說明新的系統行為,以及如何指定備份應用程式的哪些資料。 + +
+ ++ 自動備份功能保存應用程式資料的方法,是將使用者裝置上建立的資料上傳到使用者的 Google 雲端硬碟帳戶,然後將資料加密。 +儲存資料不會向您或使用者收費,儲存的資料也不會計入使用者個人雲端硬碟的容量配額。 +在 M 預覽版期間,使用者最多可以為每個 Android 應用程式儲存 25 MB 的資料。 + +
+ ++ 當裝置閒置、正在充電且連線到 Wi-Fi 網路時,每 24 小時會執行一次自動備份。 +當符合上述情況時,備份管理員服務就會將所有可用的備份資料上傳到雲端。 +當使用者轉換到新的裝置,或者解除安裝又重新安裝已備份的應用程式時,系統會進行一項還原作業,將備份的資料複製到新安裝之應用程式的資料目錄。 + + +
+ ++ 注意:如果您的應用程式使用舊版 + Android 備份服務,這個新的行為就不適用,現有的備份行為還是如往常運作。 + +
+ + ++ 並非所有應用程式資料都需要備份,例如暫存檔案和快取,因此自動備份服務預設會排除某些資料檔案: + +
+ ++ 除了上一節所列自動排除的檔案之外,其餘由 M 預覽版裝置上安裝的任何應用程式所建立的資料一律都會備份。 +您可以使用應用程式宣示說明中的設定,進一步限制和設定要備份應用程式的哪些資料。 + +
+ ++ 根據您的應用程式需要的資料和您儲存資料的方式,您可能需要設定特定的規則來納入或排除某些檔案或目錄。 +自動備份服務支援使用 XML 設定檔和應用程式宣示說明來設定這些備份規則。 + +在應用程式宣示說明中,您可以依照下列範例指定備份配置設定檔: + +
+ ++<?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 ... + android:fullBackupContent="@xml/mybackupscheme"> + </app> + ... +</manifest> ++ +
+ 在此範例程式碼中,android:fullBackupContent 屬性指定應用程式開發專案的 res/xml/ 目錄中,名為
+mybackupscheme.xml 的 XML 檔案。
+此設定檔包含要備份哪些檔案的規則。
+下列範例程式碼顯示排除特定檔案不要進行備份的設定檔:
+
+
+<?xml version="1.0" encoding="utf-8"?> +<full-backup-content> + <exclude domain="database" path="device_info.db"/> +</full-backup-content> ++ +
+ 此範例備份設定只排除特定資料庫檔案不要進行備份。 + 其他所有檔案都會備份。 +
+ ++ 您可以使用備份服務設定指定要將哪些檔案納入或排除備份。 +資料備份設定 XML 檔案的語法如下所示: +
+ ++<full-backup-content> + <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> + <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> +</full-backup-content> ++ +
+ 您可以使用下列元素和屬性指定要將哪些檔案納入備份或從備份排除: + +
+ +<include>。如果您想要指定備份一組資源,請使用此元素,而不要讓系統預設備份應用程式的所有資料。
+當您指定
+<include> 標籤時,系統只會備份此元素「指定的資源」。
+
+ <exclude>。如果您想要指定一組資源不要進行備份,請使用此元素。
+系統會備份應用程式中除了此元素指定之資源以外的其他所有資料。
+
+ domain. 您想要納入或排除備份的資源類型。此屬性可以指定的有效值包括:
+
+ root。指定資源位於應用程式的根目錄。
+ file。位於
+{@link android.content.Context#getFilesDir getFilesDir()} 方法傳回的目錄中的資源。
+ database。{@link android.content.Context#getDatabasePath getDatabasePath()} 方法或使用
+{@link android.database.sqlite.SQLiteOpenHelper} 類別傳回的資料庫。
+
+ sharedpref。{@link android.content.Context#getSharedPreferences getSharedPreferences()}
+方法傳回的 {@link android.content.SharedPreferences} 物件。
+
+ external。指定資源位於外部儲存空間,並且位於
+{@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 方法傳回的目錄中的檔案。
+
+ path。您想要納入或排除備份的資源檔案路徑。
+
+
+ 您可以在應用程式的宣示說明元素中將
+android:allowBackup 屬性設定為 false,選擇不要對任何應用程式資料進行自動備份。
+此設定如下列範例程式碼所示:
+
+<?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 ... + android:allowBackup="false"> + </app> + ... +</manifest> ++ + +
+ 如果您建立了備份設定,就要進行測試,以確保您的應用程式能正確儲存和還原資料。 + +
+ + ++ 如要協助判斷備份功能如何剖析您的 XML 檔案,請在執行測試備份之前先啟用記錄功能: + +
+ ++$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE ++ +
如要手動執行備份,首先您必須呼叫下列命令以初始化備份管理員: + +
+ ++$ adb shell bmgr run ++ +
+ 接著,您要使用下列命令,將 <PACKAGE> 參數指定為您應用程式的套件名稱,手動備份您的應用程式:
+
+
+$ adb shell bmgr fullbackup <PACKAGE>+ + +
+ 如要在應用程式資料備份之後手動啟動還原,請呼叫下列命令,將 <PACKAGE> 參數指定為您應用程式的套件名稱:
+
+
+$ adb shell bmgr restore <PACKAGE> ++ +
+ 警告:這個動作在執行還原作業之前會先停止您的應用程式,然後清除其中的資料。 + +
+ ++ 如果解除安裝又重新安裝應用程式,就會針對應用程式啟動還原程序。應用程式安裝完成之後,就會自動從雲端還原應用程式資料。 + +
+ + ++ 如果您遇到問題,可以在 [設定] > [備份] 中關閉備份再開啟、將裝置重設為出廠值,或是呼叫下列命令,清除備份資料及相關的中繼資料: + + +
+ +$ adb shell bmgr wipe <TRANSPORT> <PACKAGE>+ +
+ <TRANSPORT> 值前面必須加上 com.google.android.gms。
+ 如要取得傳輸清單,請呼叫下列命令:
+
$ adb shell bmgr list transports+ +
以下是自動備份服務的已知問題:
+ ++ Android M 預覽版 SDK 有開發工具、Android 系統檔案以及程式庫檔案,可以幫助測試您的應用程式和下一個平台版本隨附的新 API。 +本文件會說明如何取得可下載的預覽版元件來測試您的應用程式。 + +
+ + ++ 預覽版 SDK 可透過 Android SDK 管理器下載取得。如需有關下載和設定預覽版 SDK 的詳細資訊,請參閱設定預覽版 SDK。 + +
+ + ++ 開發人員文件下載套件提供詳細的 API 參考資料和預覽版的 API 差異報告。 +
+ +| 說明 | +下載 / 總和檢查碼 | +
|---|---|
| Android M 預覽版 開發人員文件 |
+ m-preview-1-developer-docs.zip + MD5: b65201b0d35416f5a1b7a071b52854a7 + SHA-1: d47e856aa65e06897e6edd902ad8d2b1f05ac3ec + |
+
| 裝置 | +下載 / 總和檢查碼 | +
|---|---|
| Nexus 5 (GSM/LTE) "hammerhead" |
+ hammerhead-MPZ44Q-preview-55d76d3a.tgz + MD5:9e2631b06c6525e401ceaae3677ff320 + SHA-1:55d76d3a379b18f3363f28d8a462c236ab96fc36 + |
+
| Nexus 6 "shamu" |
+ shamu-MPZ44Q-preview-c1d6506a.tgz + MD5:307cbf9dab0a38df4ab2639d02be12aa + SHA-1: c1d6506a74094bdb2f4b8677c7fe4967334f9ea8 + |
+
| Nexus 9 "volantis" |
+ volantis-MPZ44Q-preview-d15ad483.tgz + MD5: fae40377fd999d2b09128665c915264d + SHA-1:7ab05f96093b2cb370b226f65931202714cbc2ca + |
+
| Nexus Player "fugu" |
+ fugu-MPZ44Q-preview-2406ba05.tgz + MD5:815902141a85cc65e7725f005cad31d5 + SHA-1:2406ba0598dea1e69110497ac0bc8e16789bc8fb + |
+
+ 如果要使用裝置映像進行測試,您必須先在相容的裝置上安裝映像。請依照下面的指示安裝系統映像: + +
+ ++ 注意:在您使用預覽版系統映像更新開發裝置之後,裝置就會透過無線 (OTA) 更新方式自動升級為下一個預覽版版本。 + +
+ ++ 如果您要解除安裝預覽版並將裝置還原成出廠規格,請至 +developers.google.com/android 並下載您要為裝置更新的映像。 +依照該頁面的指示,將映像更新到您的裝置。 + +
+ + + + + + + + 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 0000000000000..5be8a0f12c016 --- /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 + ++ Android 意圖系統是一個彈性機制,讓應用程式能夠用來處理內容和要求。 + 有許多應用程式可能會在它們的意圖篩選條件中宣告相符的 URI 模式。當使用者按一下不含預設啟動處理常式的 Web 連結時,平台可能會顯示一個對話方塊,讓使用者能夠從具備已宣告相符意圖篩選條件的應用程式清單中選取。 + + +
+ ++ Android M 開發人員預覽版引進了應用程式連結的支援,這樣就能藉由允許應用程式開發人員將應用程式關聯至他們所擁有的 Web 網域,來改善現有的連結處理。 +當開發人員建立這個關聯時,平台可以自動判斷要用來處理特定 Web 連結的預設應用程式,並略過詢問使用者的程序。 + + +
+ + ++ 網站擁有者必須宣告與應用程式的關聯,才能建立應用程式連結。站台擁有者可藉由在網域上的已知位置裝載名為 {@code statements.json} 的 JSON 檔案,來宣告與應用程式的關係: + + +
+ +http://<domain>:<optional port>/.well-known/statements.json+ +
+ 注意: + 在 M 開發人員預覽版期間,會透過 http 通訊協定來驗證 JSON 檔案。如果是平台的正式版本,就會透過加密的 https 通訊協定來驗證該檔案。 + +
+ ++ 這個 JSON 檔案會指出應該在這個網域中用來做為 URL 預設處理常式的 Android 應用程式。 +它會根據下列欄位來識別應用程式: +
+ +keytool -list -v -keystore my-release-key.keystore+
+ 下列檔案清單會顯示 +{@code statements.json} 檔案的內容與格式範例: +
+ +
+[{
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "<package name>",
+ "sha256_cert_fingerprints": ["6C:EC:C5:0E:34:AE....EB:0C:9B"]
+ }
+}]
+
+
+
++ 應用程式可以要求平台根據裝載於個別 Web 網域上的 {@code statements.json} 檔案,自動驗證在其意圖篩選條件的資料元素中由主機名稱所定義的任何應用程式連結。 + +如要要求應用程式連結驗證,請將 {@code android:autoVerify} + 屬性新增到宣示說明中每個所需的意圖篩選條件中,如下列宣示說明程式碼片段所示: + +
+ ++<activity ...> + <intent-filter android:autoVerify="true"> + <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> ++ +
+ 當 {@code android:autoVerify} 屬性出現在應用程式宣示說明時,平台即會在安裝該應用程式時嘗試驗證應用程式連結。 +如果平台無法成功驗證應用程式連結,就無法將該應用程式設定為偏好使用的應用程式來處理 Web 連結。 +當使用者下次開啟其中一個連結時,平台就切換回為該使用者展示一個對話方塊。 + + +
+ ++ 注意:在測試期間,如果驗證失敗,可能會產生誤判,但是使用者已經使用系統「設定」應用程式,明確地啟用應用程式來自動開啟支援的連結。在此案例中,不會顯示任何對話方塊,而且連結會直接連至您的應用程式,但這只是基於使用者的設定,而不是因為驗證成功所致。 + + + +
+ + ++ 使用者可以變更應用程式連結設定,讓他們能夠以偏好使用的方式來處理 URL。您可以在系統「設定」應用程式中,於 [設定] > [應用程式] > [應用程式資訊] > [預設開啟] 下方,檢閱和管理應用程式連結。 + + +
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 0000000000000..f57728c2bfe72 --- /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 + + + ++如果想要開始使用 Android SDK 預覽版,您必須同意遵守下列條款和條件。如下方所述,請注意這是 Android SDK 預覽版,可能隨時會有變更,請您自負使用風險。 +Android SDK 預覽版還不是穩定的版本,可能會包含許多錯誤和瑕疵而對您的電腦系統、裝置和資料造成嚴重的損害。 +
+ ++這是「Android SDK 預覽版授權協議」(以下稱「授權協議」)。 +
++ 下列提供 M 開發人員預覽版的程式碼範例。如要下載 Android Studio 的範例,請選取 [File] (檔案) > [Import Samples] (匯入範例) 選單選項。 + +
+ ++ 注意:這些可下載的專案是專為與 Gradle 和 Android Studio 一起使用而設計。 + +
+ + ++ Android M 改變系統權限的運作方式。改為在執行階段才要求使用者核准權限要求,而不是安裝期間。 +這個範例顯示如何要求這些權限。 + +
+ + + ++ 這個範例示範如何在您的應用程式中使用裝置認證做為驗證方法。 +
+ + + ++ 這個範例示範如何在您的應用程式中辨識註冊的指紋以驗證使用者。 + +
+ + + ++ Android M 導入自動備份應用程式設定的功能。這個範例示範如何將篩選規則新增至應用程式以管理設定備份。 + +
+ + + +
+ 示範如何使用 Camera2 API,以擷取 RAW 相機緩衝區並另存為 DNG 檔案。
+
+
+ 這個範例示範
+NotificationManager
+ 如何將您應用程式目前顯示的通知數目告訴您。
+
M 開發人員預覽版 SDK 可以從 Android SDK Manager 取得。本文件假設您熟悉 Android 應用程式開發工作,例如使用 Android SDK Manager 和建立專案。 + +如果您是 Android 的新手,請先參閱建置您的第一個應用程式訓練課程。 + +
+ +開發人員預覽版最適合與處於預覽版狀態的 Android Studio 1.3 一起使用。 +強烈建議您安裝 Android Studio 1.3 預覽版與開發人員預覽版一起使用。 +
+ +注意:Android Studio 1.3 的測試預覽版仍在持續開發中。 +如果您使用主要開發電腦來測試開發人員預覽版,可以建立第二個 Android Studio 安裝以用於測試。 + +
+ +如要安裝 Android Studio 1.3 預覽版:
+ +在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance & Behavior] (外觀和行為) 面板。 + +
+如要將預覽版 SDK 元件新增至您的開發環境:
+ +在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance & Behavior] (外觀和行為) 面板。 + +
+完成這些步驟之後,就能在您的開發環境中使用預覽版元件。 +
+ + ++ 為了使用預覽版 API,您必須建立或更新開發專案,才能使用預覽版元件。 + +
+ + ++ 建議您使用 Android Studio 搭配預覽版來建立專案。依照建立專案中所述的步驟執行,直到您到達專案精靈中的「大小」畫面。 + +接著,執行下列步驟以建立為預覽版設定的專案。 + +
+ +
+ 對於現有專案,您必須修改專案設定以啟用預覽版 API。在您的開發環境中,開啟模組的 build.gradle 檔案,然後將這些值設定如下:
+
+
+
compileSdkVersion 設定為 'android-MNC'minSdkVersion 設定為 'MNC'targetSdkVersion 設定為 'MNC'+ 利用預覽版測試應用程式,需要您將裝置或虛擬裝置設定為使用平台的預覽版本。 +如果您有相容的裝置,您可以安裝預覽版平台以用於測試。 +否則,您可以設定虛擬裝置以用於測試。 +
+ ++ 如果您有 Nexus 5、Nexus 6、Nexus 9 或 Android 電視,您可以在這些裝置上安裝預覽版系統映像,以測試您的應用程式。您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。 + + + +
+ ++ 重要說明:在裝置上安裝預覽版映像,會「移除當中的所有資料」,因此您應該在安裝預覽版映像之前備份任何資料。 + +
+ ++ 您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。 + +
+ +如要使用 AVD Manager 來建立 AVD:
+ ++ 如需建立虛擬裝置以用於測試的詳細資訊,請參閱管理虛擬裝置。 +
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 0000000000000..2c2d66a82da6a --- /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 + ++ 如果您遇到錯誤或有關於 M 開發人員預覽版的意見反應,請在我們的問題追蹤器上建立問題。 + + +
+ ++ 如需更多支援,請加入 M 開發人員預覽版 Google+ 社群來討論您的開發體驗。 + + +
+ +
+
M 開發人員預覽版,修訂版 1 (2015 年 5 月)
+
+ Android M 開發人員預覽版能夠讓您有機會確保您的應用程式能搭配下一個版本的平台運作。 +此預覽版包含許多 API 和足以影響應用程式的行為變更,如 API 總覽和行為變更中所述。 + +使用預覽版測試應用程式時,您必須著重在許多特定的系統變更,以確保使用者都能擁有良好的體驗。 + + +
+ ++ 本指南說明對應用程式測試預覽功能的內容與方法。您應優先測試這些特定的預覽功能,因為這些功能可能會對您的應用程式行為有非常大的影響: + + +
+ ++ 如需有關如何設定使用預覽版系統映像的裝置或虛擬裝置以進行測試的詳細資訊,請參閱設定預覽版 SDK。 + +
+ + ++ 新的權限模型改變使用者對您的應用程式分配權限的方式。 +以前在安裝過程中會授與所有權限,現在您的應用程式則必須在執行階段向使用者要求個別的權限。 + +對於使用者而言,這個行為能夠對每個應用程式的Activity提供更細膩的控制,而且也能更瞭解應用程式為何要要求特定權限。 +使用者可以隨時個別對應用程式授與或撤銷權限。 +預覽版的這個功能最有可能影響到您應用程式的行為,而且可能會導致應用程式某些功能無法正常運作,或者這些功能會以降級的狀態運作。 + + +
+ ++ 這個變更會影響在新平台上執行的所有應用程式,甚至影響並非針對新平台版本開發的應用程式。 +平台會對舊版應用程式提供有限的相容性行為,但是您最好還是立即開始規劃將應用程式移轉到新的權限模型,以便能在官方平台上市時發佈更新的應用程式版本。 + + +
+ + ++ 使用下列測試祕訣,可以幫助您使用新的權限行為,規劃和執行應用程式測試。 + +
+ +adb shell pm list permissions -d -g+
adb shell pm [grant|revoke] <permission.name> ...+
+ 權限變更會影響應用程式的結構和設計,同時也會影響使用者的體驗以及您提供給使用者的流程。 +您應該評估應用程式目前的權限作法,然後開始規劃您要提供的新流程。 +官方版本的平台會提供相容性行為,但是您最好規劃更新您的應用程式,而不要依賴這些行為。 + + +
+ ++ 辨別您的應用程式實際需要且使用到的權限,然後找出使用受權限保護之服務的各種程式碼路徑。 +您可以在新平台上測試,並且進行程式碼分析,來達到上述目的。 +測試時,您應該變更應用程式的 {@code targetSdkVersion} 為預覽版本,著重在加入執行階段權限。 +如需詳細資訊,請參閱設定預覽版 SDK。 + +
+ ++ 測試各種撤銷/加入權限的組合,著重在依據這些權限的使用者流程。 +如果相依性不明顯或邏輯不清楚時,您可以考慮重新分解或劃分流程以消除相依性,或是更清楚為何需要某個權限。 + + +
+ ++ 如需有關執行階段權限行為、測試和建議做法的詳細資訊,請參閱 權限開發人員預覽版頁面。 + + +
+ + ++ 當裝置處於閒置狀態,或者當您的應用程式不在使用中時,「休眠」與「應用程式待命」的省電功能會限制應用程式可以執行的背景處理量。 +系統可能加諸在應用程式的限制,包括網路受到限制或沒有網路、背景工作暫停、通知暫停、喚醒要求被略過,以及警示被略過。 + +如要確保您的應用程式能正確運作,而且這些省電功能也達到最好的效益,您應該透過模擬這些低電量狀態,測試您的應用程式。 + + +
+ +對您的應用程式測試休眠:
+ ++$ adb shell dumpsys battery unplug +$ adb shell dumpsys deviceidle step +$ adb shell dumpsys deviceidle -h ++ +
對您的應用程式測試應用程式待命模式:
+ ++$ adb shell am broadcast -a android.os.action.DISCHARGING +$ adb shell am set-idle <packageName> true ++ +
$ adb shell am set-idle <packageName> false+
如果您的應用程式在內部儲存空間存有任何裝置特定識別碼,例如 Google +雲端通訊註冊 ID,請確認按照建議做法排除這些儲存位置不要進行自動備份,如針對應用程式進行自動備份中所述。 + + +
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 0000000000000..5437e9da6bfa4 --- /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 + + ++ 使用者介面效能測試可確保您的應用程式不只符合功能需求,與使用者與應用程式的互動也無比順暢,執行時每秒一致有 60 個畫面 (為什麼 60fps?),任何畫面都不會遺漏或延遲,或稱為「閃避」現象。 + + +本文件說明可用以測量 UI 效能的工具,以及呈現可將 UI 效能測量與測試做法整合的方法。 + + +
+ + ++ 為改善效能,首先您需要測量系統效能的能力,接著在管道的各部分發生問題時加以診斷和辨識。 + + +
+ ++ dumpsys 是一種 Android 工具,可在裝置上執行和傾印有關系統服務狀態的有趣資訊。 + +將 gfxinfo 命令傳送至 dumpsys,會將錄製階段所發生與動畫的畫面相關的效能資訊以 logcat 提供輸出。 + + +
+ ++> adb shell dumpsys gfxinfo <PACKAGE_NAME> ++ +
+ 此命令會產生多種不同的畫面計時資料。 +
+ ++ 使用 M 預覽版,命令會在程序的生命週期全程收集畫面資料,並將彙總的分析列印到 logcat。 +例如: +
+ ++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 ++ +
+ 這些高階統計資料是以高階方式轉換應用程式的轉譯效能,還有其在許多畫面的穩定性。 + +
+ + ++ M 預覽版隨附新的命令 gfxinfo,而 framestats 可從最近的畫面提供相當詳細的畫面計時資訊,讓您可以追蹤並更準確進行除錯。 + + +
+ ++>adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats ++ +
+ 此命令會從應用程式所產生至少 120 個畫面當中,加上奈秒時間戳記印出畫面計時資訊。以下範例是 adb dumpsys gfxinfo <PACKAGE_NAME> framestats 的原始輸出: + + +
+ ++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, ++ +
+ 這裡的每一行輸出都代表應用程式產生的一個畫面。每行都有固定的資料欄編號,描述畫面產生管道的各階段所花費的時間。 +下一節會詳細說明此格式,包括各資料欄代表的意義。 + +
+ + ++ 由於資料區塊是以 CSV 格式輸出,所以可以直接將它貼到選擇的試算表工具,或使用指令碼來收集和剖析。 +下表說明輸出資料欄的格式。 +所有時間戳記都以奈秒為單位。 +
+ ++ 您能以不同的方式使用這項資料。顯示不同延遲貯體中畫面時間分布的長條圖就是一種簡單但實用的方式,請見下圖。 + +本圖可一目瞭然地告訴我們,大部分畫面都低於 16ms 的上限 (紅色除外),但只有幾個畫面明顯超過上限。 + +我們可以查看此長條圖一段時間的變化,觀察出現的大規模位移或產生新的極端值。 +您也能根據資料中的許多時間戳記將輸入延遲、花費在版面配置的時間或其他類似的有趣度量指標繪成圖表。 + + +
+ +
+
+
+
+ 如果 [開發人員選項] 中的 [設定檔 GPU 轉譯] 設定為 [In adb shell dumpsys gfxinfo]
+,adb shell dumpsys gfxinfo 命令會印出最近 120 個畫面的計時資訊,以定位鍵分隔值分成數個不同類別。
+
+這項資料非常適合用來指出可能是繪製管道的哪個部分太慢。
+
+
+ 類似於上述的 framestats,可以直接將它貼到選擇的試算表工具,或使用指令碼來收集和剖析。 + +下圖顯示許多由應用程式產生的畫面花費時間的分類細項。 + +
+ +
+
++ 執行 gfxinfo、複製輸出、將輸出貼入試算表應用程式,然後將資料繪製成堆疊長條圖的結果。 + +
+ ++ 每個直條都代表動畫的一個畫面,其高度代表計算該畫面所花費的毫秒數。 +長條的每個色塊都代表轉譯管道的不同階段,好讓您看出應用程式的哪部分可能產生瓶頸。 + +如需瞭解繪製管道以及如何最佳化的詳細資訊,請參閱硬體加速或無效判定、版面配置及效能影片。 + + +
+ + ++ framestats 與簡單的畫面計時都會收集極短時間內的資料 – 轉譯約需兩秒。 +為了精確控制這段時間,例如只限特定動畫的資料,您可以重設所有計數器,然後彙總收集的統計資料。 + + +
+ ++>adb shell dumpsys gfxinfo <PACKAGE_NAME> reset ++ +
+ 這也能和傾印命令本身結合使用,定期收集和重設,持續擷取兩秒時間內的畫面。 + + +
+ + ++ 識別回復是追蹤問題和維護應用程式健康情況的第一步。 +不過,dumpsys 只能識別有問題存在與相關的嚴重性。 +您仍需要診斷造成效能問題的特定原因,以及找出適當的修正方式。 +因此,強烈建議您使用 systrace 工具。 + +
+ + ++ 如需 Android 的轉譯管道如何運作、常見問題以及如何修正的詳細資訊,下列的一些資訊可能會很實用: + + +
+ ++ UI 效能測試的方法之一就是讓測試人員對目標應用程式執行一組使用者操作,並以肉眼查看,或花費很長一段時間使用工具導向的方法,尋找閃避現象。 + +但這種靠人工的方式充滿危險,人類對畫面率變化的感知能力因人而異,而且這種方法也很費時、繁瑣且容易出錯。 + + +
+ ++ 較有效率的方法是從自動化的 UI 測試中記錄和分析重要效能度量指標。 +Android M 開發人員預覽版包含新的記錄功能,能夠輕鬆判斷應用程式動畫中閃避現象的數量與嚴重程度,還能用來建置嚴謹的程序,判斷目前的效能並追蹤未來的效能目標。 + + + +
+ ++ 本文會逐步說明建議用來使用資料以自動化效能測試的方法。 + +
+ ++ 這種方法大多分成兩個主要動作。首先,識別您要測試的項目,以及測試的方法。其次是設定和維護自動化測試環境。 + + +
+ + ++ 在您開始進行自動化測試之前,務必要決定幾個高階決策,才能適當瞭解您的測試空間與可能會有的需求。 + +
+ ++ 請記住,流暢的動畫有所中斷時,就是使用者最容易看見效能低落的時候。 +因此,識別要測試哪種類型的 UI 動作時,最好著重在使用者最常看見或對他們的體驗最重要的主要動畫。 + +例如,以下是一些可能有利於識別的常見情況: +
+ ++ 和您團隊的工程人員、設計師及產品經理合作,優先考慮將這些主要產品動畫放入測試涵蓋範圍內。 + +
+ ++ 從高階觀點來看,重要的是識別特定的效能目標,並著重在撰寫測試及收集相關資料。 +例如: +
+ ++ 在上述的這些情況中,您會想要有歷史追蹤功能,來顯示不同應用程式版本間的效能。 + +
+ ++ 應用程式效能會因其執行所在裝置而異。有些裝置包含的記憶體較少、GPU 較不強大或 CPU 晶片速度較慢。 +這表示可在某組硬體上執行良好的動畫,在其他組合上不一定能執行良好,更糟的是可能會在管道的不同部分產生瓶頸。 + +使用者所見可能會不同,為將這點列入考量,請挑選涵蓋當前高階裝置、低階裝置、平板電腦等的一系列裝置執行測試。 + +尋找 CPU 效能、RAM、畫面密度、大小等方面的變化。 +高階裝置上通過的測試,在低階裝置上可能會失敗。 + +
+ ++ 工具套件 (例如 UI Automator 和 Espresso) 是為協助將使用者在您的應用程式四處移動的動作自動化而建置。 + +這些都是模擬使用者與裝置互動的簡單架構。 +如要使用這些架構,您要有效地建立會逐一執行一組使用者動作的獨特指令碼,然後在裝置上自行播放。 + + +
+ +
+ 連同 dumpsys gfxinfo,再結合這些自動化測試,您可快速建立可重現系統,讓您執行測試並測量該特定情況下的效能資訊。
+
+
+
+ 在您能夠執行 UI 測試,還有可從單一測試收集資料的管道後,下一個重要步驟是利用可多次執行該項測試的架構,然後彙總產生的效能資料,以供您的開發團隊進一步分析。 + + + +
+ ++ 直接在目標裝置/模擬器上執行的 UI 測試架構 (例如 UI Automator) 毫無價值。 +因為效能收集資訊是由主控機器透過 ADB 傳送命令驅動 dumpsys gfxinfo 來完成。 +MonkeyRunner 架構是為了協助橋接這些個別實體開發。在主控機器上執行的指令碼處理系統可對一組連接的裝置發出命令,也能接收來自這些裝置的資料。 + + + +
+ ++ 建置一組指令碼以適當自動化 UI 效能測試,至少應能利用 monkeyRunner 來完成下列工作: + +
+ ++ 在辨識出問題模式與回復之後,下一個步驟是辨識和套用修正。 +如果您的自動化測試架構會為畫面保留精確的計時分類細項,可幫助您詳細審察目前可疑的程式碼/版面配置變化 (在回復的情況下),或在您切換為靠人工探究時縮小要分析的系統部分。 + + +如需靠人工探究時,systrace 是開始進行的好地方,顯示轉譯管道各階段、系統中每個執行緒與核心,還有您所定義任何自訂事件標記的精確計時資訊。 + + +
+ ++ 請務必注意,從轉譯效能中取得和測量計時的困難度。 +這些數字不具決定性且通常受系統狀態、可用記憶體數目、溫度調節,還有上次太陽閃焰何時衝擊您所在地區影響。 + +重點是您執行相同的測試兩次,而每次得到的數字都有些微不同,數字很接近但不會完全相同。 + + +
+ ++ 以這種方式適當收集和分析資料,表示執行相同的測試多次,並累積結果取平均值或中間值。(為了簡單起見,我們稱之為「批次」) 這可讓您粗略計算測試的效能,而不需要精確的計時。 + + + +
+ ++ 在變更的程式碼之間使用批次,可看出那些變更對效能的影響。 +如果前次變更批次的平均畫面率大於後來變更批次,您通常會有那項特定變更的整體 win wrt 效能。 + + +
+ ++ 這表示您執行的任何自動化 UI 測試都應將此概念列入考量,同時考量可能會在測試期間發生的任何異常情況。 +例如,您的應用程式效能若因為某些裝置問題而突然下降 (並非由您的應用程式引起),您可能會想要重新執行批次,以讓取得的計時較不混亂。 + + + +
+ ++ 應該執行多少次測試才能獲得有意義的測量結果呢?最少應執行 10 次,若執行更多次 (像是 50 或 100 次) 可以產生更準確的結果 (當然您現在是以時間換取準確度)。 + + +