Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5544cb42 authored by David Friedman's avatar David Friedman Committed by Android Git Automerger
Browse files

am 6fa1ee64: am 41a722ab: Merge "Docs: L10N of remaining M-Preview pages (Ja)...

am 6fa1ee64: am 41a722ab: Merge "Docs: L10N of remaining M-Preview pages (Ja) Bug: 21789313" into mnc-preview-docs

* commit '6fa1ee64':
  Docs: L10N of remaining M-Preview pages (Ja) Bug: 21789313
parents b14dc048 6fa1ee64
Loading
Loading
Loading
Loading
+327 −0
Original line number Diff line number Diff line
page.title=アプリの自動バックアップ
page.tags=バックアップ, 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 Preview を実行する端末では、アプリデータを Google ドライブに自動的にバックアップすることで、前述のような状況でも快適な操作性を実現できます。

アプリデータは、ユーザーが端末を変更したりアップグレードしたりした場合に自動的に復元されます。

</p>

<p>
  自動バックアップは、Android M Preview を実行する端末にインストールされているすべてのアプリで有効になっています。追加のアプリコードは必要ありません。
ユーザーは、自動データ バックアップを使用しないよう選択することもできます。
また、バックアップするアプリのデータを制限することもできます。
</p>

<p>
  このドキュメントでは、新しいシステムの動作と、バックアップするアプリデータを指定する方法について説明します。

</p>

<h2 id="overview">概要</h2>

<p>
  自動バックアップ機能では、アプリがユーザーの端末上に作成するデータを、ユーザーの Google ドライブ アカウントにアップロードして暗号化することで、そのデータを保持します。
開発者やユーザーにデータ ストレージの費用が発生することはなく、保存されたデータはユーザー個人のドライブ容量にはカウントされません。
M Preview の期間中、ユーザーは 1 つの 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 Preview 端末にインストールされたすべてのアプリで作成されるデータがバックアップ対象です。
そこからさらに、アプリ マニフェストの設定を使用して、アプリからバックアップするデータを制限したり設定したりできます。

</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> 属性がアプリの開発プロジェクトの <code>res/xml/</code> ディレクトリにある <code>mybackupscheme.xml</code> という名前の XML ファイルを指定しています。

この構成ファイルには、バックアップ対象とするファイルのルールが含まれています。
次のサンプル コードは、バックアップから特定のファイルを除外する構成ファイルを示しています。

</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> というプレフィクスが付く必要があります。
  Transport の一覧を取得するには、次のコマンドを呼び出します。
</p>

<pre>$ adb shell bmgr list transports</pre>

<h2 id="issues">既知の問題</h2>

<p>自動バックアップ サービスには、次のような既知の問題があります。</p>

<ul>
  <li><strong>Google Cloud Messaging</strong> - プッシュ通知に Google Cloud Messaging を使用するアプリの場合、Messaging の登録時に返された登録 ID をバックアップすると、復元されたアプリのプッシュ通知が破損することがあるという既知の問題があります。古い登録 ID がバックアップされている場合を除いて、新しい端末へのインストール後は、新しい 登録 ID 用の API を照会することが重要です。




これを回避するには、バックアップ対象ファイルから登録 ID を除外します。

  </li>
</ul>
+348 −0

File added.

Preview size limit exceeded, changes collapsed.

+123 −0
Original line number Diff line number Diff line
page.title=App Links
page.image=images/cards/card-app-linking_2x.png
page.keywords=applinking,deeplinks,intents
@jd:body

<div id="qv-wrapper">
  <div id="qv">
    <h2>本書の内容</h2>
      <ol>
        <li><a href="#web-assoc">ウェブサイトの関連を宣言する</a></li>
        <li><a href="#verfy-links">App Link の検証を要求する</a></li>
        <li><a href="#user-manage">App Link 設定を管理する</a></li>
      </ol>
  </div>
</div>

<p>
  Android インテント システムは、アプリでコンテンツや要求を処理できるようにする柔軟なメカニズムです。
  複数のアプリが、それぞれのインテント フィルタに一致する URI パターンを宣言できます。デフォルトのローンチ ハンドラを持たないウェブリンクをユーザーがクリックしたとき、一致するインテント フィルタが宣言されているアプリの一覧から選択するダイアログがプラットフォームによってユーザーに表示されます。


</p>

<p>
  Android M Developer Preview でサポートされる App Links では、既存のリンク処理が改善され、アプリ開発者が所有するウェブドメインとアプリを関連付けられるようになりました。
デベロッパーがこの関連を作成すると、プラットフォームが特定のウェブリンクの処理に使用するデフォルトのアプリを自動的に決めることができ、ユーザーにアプリを選択させる操作をスキップできます。


</p>


<h2 id="web-assoc">ウェブサイトの関連付けを宣言する</h2>

<p>
  ウェブサイトのオーナーは、アプリのリンクを設定するための関連を宣言する必要があります。サイトのオーナーは、ドメインのよく知られた場所で {@code statements.json} という名前の JSON ファイルをホストすることで、アプリとの関係を宣言します。


</p>

<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>

<p class="note">
  <strong>注:</strong> 
  M Developer Preview の間、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">App Link の検証を要求する</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">App Link 設定を管理する</h2>

<p>
  ユーザーが希望する方法で URL を処理するように、ユーザー側でアプリのリンク設定を変更できます。アプリのリンクは、システムの設定アプリの <strong>[設定] &gt; [アプリ] &gt; [アプリ情報] &gt; [デフォルトでの起動]</strong> で確認、管理できます。


</p>
+67 −0
Original line number Diff line number Diff line
page.title=Android M Developer Preview
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 Developer Preview</h1>
        <p class="dac-hero-description">
          次期バージョンの Android に向けて準備しましょう。Nexus 5、6、9、Nexus Player でアプリをテストします。
<strong>実行時パーミッション</strong>、          <strong>Doze</strong>、<strong>App Standby</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>
        Join G+ コミュニティ
        </a>
      </li>
    </ul>
  </div>
</section>
+143 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading