From 2f126408792ea0208fadc13c767eccf7486d8df1 Mon Sep 17 00:00:00 2001 From: Cheryl Potter Date: Thu, 28 Jan 2016 16:05:05 -0800 Subject: [PATCH] docs: Deep Link and App Indexing API Support in Android Studio 1.5 b/25391753 Change-Id: I05a5e829c572a811a4e84afd238d31c69c9a8e83 --- docs/html/images/tools/ai-ilightbulb.png | Bin 0 -> 4905 bytes docs/html/images/tools/ai-lint.png | Bin 0 -> 43911 bytes docs/html/tools/building/building-studio.jd | 1 + docs/html/tools/help/app-link-indexing.jd | 514 ++++++++++++++++++++ docs/html/tools/help/index.jd | 7 +- docs/html/tools/tools_toc.cs | 3 +- docs/html/training/app-indexing/index.jd | 1 + docs/html/training/app-links/index.jd | 4 + 8 files changed, 528 insertions(+), 2 deletions(-) create mode 100644 docs/html/images/tools/ai-ilightbulb.png create mode 100644 docs/html/images/tools/ai-lint.png create mode 100644 docs/html/tools/help/app-link-indexing.jd diff --git a/docs/html/images/tools/ai-ilightbulb.png b/docs/html/images/tools/ai-ilightbulb.png new file mode 100644 index 0000000000000000000000000000000000000000..e9522f323e210662c87dfd44eec6e5212014d32f GIT binary patch literal 4905 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 TH>xPGEu

  • Signing Your Applications
  • +
  • Deep Link and App Indexing API Support in Android Studio
  • diff --git a/docs/html/tools/help/app-link-indexing.jd b/docs/html/tools/help/app-link-indexing.jd new file mode 100644 index 0000000000000..611373a28ab5e --- /dev/null +++ b/docs/html/tools/help/app-link-indexing.jd @@ -0,0 +1,514 @@ +page.title=Deep Link and App Indexing API Support in Android Studio +parent.title=Tools +parent.link=index.html +page.tags=app indexing +@jd:body + + + +

    Android Studio helps you add deep links, app indexing, and search functionality to your apps. + These features can help to drive more traffic to your + app, discover which app content is used most, make it easier for users to find content in an + installed app, and attract new users.

    + +

    Typical Workflow

    + +

    To use Android Studio to add deep link, app indexing, and search features to your app, follow + these basic steps:

    + +
      +
    1. Add intent filters and code to handle incoming intents.
    2. +
    3. Associate a website with your app.
    4. +
    5. Add App Indexing API code.
    6. +
    + +

    Intent filters and the App Indexing API are ways to implement deep links and app indexing, but + there are other possible implementations as well. See + Alternate Android Indexing Methods + for more information.

    + +

    Intent filters for deep links

    + +

    Android Studio can create a basic intent filter in your manifest that you can customize to + define deep link URLs for your app. You can then write Java code in an activity to handle the + intent. This implementation lets users directly open the specified app activity by + clicking a deep link. Users can see the deep links in google.com in a browser, in the + Google Search app, and in Google Now on Tap.

    + +

    Website association with deep links

    + +

    After setting up deep links for your app, you can associate your website with your app by using + the Google Search Console and Google Play Developer Console. Afterward, Google indexes your app + for URLs defined in + your intent filters and begins to include them in search results. In addition, you can optionally + exclude app content from Google Search. After you associate a website with your app, features + such as Now on Tap and enhanced search result display (like including your app icon) + become available.

    + +

    As an alternative to associating your app with a website, + for Android 6.0 (API level 23) and higher, you can add + default handlers and verification for deep links + instead.

    + +

    Chrome displaying google.com serves search results with deep links that are accessible to both + signed-in users and those who aren't. Google Search app users must be signed in to see deep links + in their search results.

    + +

    App Indexing API code in activities

    + +

    Next, if you want to support additional search features, such as autocompletions, you can + add App Indexing API code to your app. Android Studio can create skeleton code in an activity + that you can then customize to support app indexing. The App Indexing API allows app indexing + even if + Googlebot + can’t get content from your app.

    + +

    Deep link and App Indexing API testing

    + +

    Android Studio helps you test your code with the following features:

    + +
      +
    • Deep link testing helps you verify that a specified deep link can launch an app.
    • +
    • The logcat Monitor helps you test App Indexing API calls in an activity.
    • +
    • The Android Lint tool has warnings for certain issues involving deep links and the App Indexing + API. These warnings and errors appear in the Code Editor and in Lint inspection results.
    • +
    + +

    The details for implementing deep links and app indexing are described next. + + +

    Adding an Intent Filter for Deep Linking and Google Search

    + +

    To use Android Studio features to add an intent filter defining a deep link, follow these + steps:

    + +
      +
    1. In the Android view + of the Project window, double-click the AndroidManifest.xml file to open it + in the Code Editor.
    2. +
    3. Insert an intent filter in one of the following ways:
    4. +
        +
      • In an <activity> element, click in the left column so the light bulb + Lightbulb icon appears. Click + Lightbulb icon + and select Create Deep Link.
      • +
      • Right-click in an <activity> element and select Generate + > Deep Link.
      • +
      • Place your cursor in an activity, and then select Code > + Generate > Deep Link.
      • +
      + +

      The Code Editor adds skeleton code using the + intention action and + generate code mechanisms.

      + +

      The Code Editor adds an intent filter similar to the following:

      +
      +<!-- ATTENTION: This intent was auto-generated. Follow instructions at
      + https://g.co/AppIndexing/AndroidStudio to publish your Android app deep links. -->
      +<intent-filter>
      +   <action android:name="android.intent.action.VIEW" />
      +
      +   <category android:name="android.intent.category.DEFAULT" />
      +   <category android:name="android.intent.category.BROWSABLE" />
      +   <!-- ATTENTION: This data URL was auto-generated.
      +     We recommend that you use the HTTP scheme.
      +     TODO: Change the host or pathPrefix as necessary. -->
      +   <data
      +       android:host="www.example.com"
      +       android:pathPrefix="/gizmos"
      +       android:scheme="http" />
      +</intent-filter>
      +
      + +
    5. Modify the + <data> element + and optionally the <category> element, as needed.
    6. + + +

      We recommend that you define a <data> element that supports URLs that you’ll + add in the future. In the previous sample code, for example, Google will index any URLs starting + with www.example.com/gizmos. Also, remember to + include a deep link for your app home screen so it’s included in search results.

      + +

      Deep link URLs can be the same as the URLs of the comparable pages on your website.

      + +
    7. In the corresponding activity, + add Java code + to read data from the intent filter and direct the app to respond accordingly.
    8. +
    9. Test your deep link.
    10. + +
    + +

    To support Google Search for your deep links, follow these steps:

    +
      +
    1. Define an association + between your app and your website.
    2. +

      Alternatively, for Android 6.0 (API level 23) and higher, add + link default handling and verification.

      +
    3. Optionally + exclude app URLs + from the Google index.
    4. +
    5. Optionally add App Indexing API code to support additional search + features.
    6. +
    + + +

    To test and debug your links, you can use the following Android Studio features:

    + + +

    In addition, you can + preview your APK in the Google Search Console + to test your deep links, whether the app is associated with a website or not.

    + + + +

    Adding App Indexing API Skeleton Code to an Activity

    + +

    After adding deep links, you can add App Indexing API code to an activity to support additional + search features.

    + +

    To add App Indexing API code to an activity, follow these steps:

    +
      +
    1. In Android view + in the Project window, double-click the activity Java file to open it in the + Code Editor.
    2. +
    3. Insert skeleton code in one of the following ways:
    4. +
        +
      • In an activity definition, click in the Java code so the light bulb + Lightbulb icon appears. + Click Lightbulb icon + and select Insert App Indexing API Code.
      • +
      • Right-click in an activity definition and select Generate > + App Indexing API Code.
      • +
      • Place the cursor in an activity, and then select Code > + Generate > + App Indexing API Code.
      • +
      + + +

      The Code Editor adds skeleton code using the + intention action and + generate code + mechanisms.

      + +

      If you don’t see the App Indexing API Code menu item, make sure your cursor is + within an activity, and check your code for App Indexing API methods. The Code Editor can insert + skeleton Java code into an activity in the following circumstances:

      + +
        +
      • The activity doesn’t have an onStart() method, or the onStart() + method doesn’t contain an AppIndexApi.start() or AppIndexApi.view() + call.
      • +
      • The activity doesn’t have an onStop() method, or the onStop() + method doesn’t contain an AppIndexApi.end() or AppIndexApi.viewEnd() + call.
      • +
      + + +

      The Code Editor adds Java code similar to the following:

      +
      +   /**
      +    * ATTENTION: This was auto-generated to implement the App Indexing API.
      +    * See https://g.co/AppIndexing/AndroidStudio for more information.
      +    */
      +   private GoogleApiClient client;
      +
      +       // ATTENTION: This was auto-generated to implement the App Indexing API.
      +       // See https://g.co/AppIndexing/AndroidStudio for more information.
      +       client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
      +   }
      +
      +
      +   @Override
      +   public void onStart() {
      +       super.onStart();
      +
      +       // ATTENTION: This was auto-generated to implement the App Indexing API.
      +       // See https://g.co/AppIndexing/AndroidStudio for more information.
      +       client.connect();
      +       Action viewAction = Action.newAction(
      +               Action.TYPE_VIEW, // TODO: choose an action type.
      +               "Main Page", // TODO: Define a title for the content shown.
      +               // TODO: If you have web page content that matches
      +               // this app activity's content,
      +               // make sure this auto-generated web page URL is correct.
      +               // Otherwise, set the URL to null.
      +               Uri.parse("http://host/path"),
      +               // TODO: Make sure this auto-generated app deep link URI is correct.
      +               Uri.parse("android-app://com.example/http/host/path")
      +       );
      +       AppIndex.AppIndexApi.start(client, viewAction);
      +   }
      +
      +   @Override
      +   public void onStop() {
      +       super.onStop();
      +
      +       // ATTENTION: This was auto-generated to implement the App Indexing API.
      +       // See https://g.co/AppIndexing/AndroidStudio for more information.
      +       Action viewAction = Action.newAction(
      +               Action.TYPE_VIEW, // TODO: choose an action type.
      +               "Main Page", // TODO: Define a title for the content shown.
      +               // TODO: If you have web page content that matches
      +               // this app activity's content,
      +               // make sure this auto-generated web page URL is correct.
      +               // Otherwise, set the URL to null.
      +               Uri.parse("http://host/path"),
      +               // TODO: Make sure this auto-generated app deep link URI is correct.
      +               Uri.parse("android-app://com.example/http/host/path")
      +       );
      +       AppIndex.AppIndexApi.end(client, viewAction);
      +       client.disconnect();
      +   }
      +}
      +
      + +

      For more information about the App Indexing API methods, see + Android API for App Indexing. + For information about the action types, see the + Action Class Constant Summary. +

      + +

      If your app isn’t already configured for the Google Play Services App Indexing API, the Code + Editor also modifies your build.gradle and AndroidManifest.xml files + to include it. If your app already depends on it but the version is lower than 8.1.0, your app + is upgraded to version 8.1.0. For more information and to correct any issues, see + Add Google Play Services + and Setting Up Google Play Services. +

      + +
    5. Customize the skeleton code, as needed.
    6. + +

      Pay attention to the comments, which help you find areas that need work, such as setting the + title and URLs. For more information, see + Add the App Indexing API. +

      +
    7. Verify that your app indexing code is working by using + the logcat Monitor.
    8. +
    + + + +

    To test and debug your App Indexing API code, you can use the following Android Studio + features:

    + + +

    In addition, you can + preview your APK in the Google Search Console.

    + + +

    Testing a Deep Link

    + +

    When you run your app from Android Studio, you can specify a deep link to launch so you can + test it.

    + +

    To launch a deep link from Android Studio, follow these steps:

    +
      +
    1. In Android Studio, open your project in + Android view.
    2. +
    3. After opening a project, select Run > Edit Configurations. +
    4. +
    5. In the Run/Debug Configurations dialog, beneath Android Application, + select the module you want to test.
    6. +
    7. Select the General tab.
    8. +
    9. In the Launch field, select Deep Link.
    10. +
    11. In the Deep Link field, click … to select from a list of + defined deep links.
    12. + +

      Or type the URL you want to test, for example, http://example.com/gizmos.

      +
    13. Click OK.
    14. +
    15. Select Run > Run app or Debug app.
    16. +
    17. If the Device Chooser dialog appears, select a connected device or an + emulator, and click OK.
    18. + +

      If the link is successful, the app launches in the device or emulator, and displays the app at + the specified activity. Otherwise, an error message appears in the Run window.

      +
    + +

    For more information about creating run configurations at the project, default, and module + levels, see + Building and Running from Android Studio. +

    + +

    You can view App Indexing API log messages while the app is running, as described next.

    + + +

    Viewing App Indexing API Messages in the logcat Monitor

    + +

    The logcat Monitor can display app indexing log messages to determine if your App Indexing API + code is pushing the correct data to the cloud. For example, you can check the app title and the + URL. The logcat Monitor is part of Android Monitor in Android Studio.

    + +

    Follow these steps:

    +
      +
    1. Run your app in Android Studio so it launches a deep link.
    2. +
    3. Display Android Monitor + and click the logcat tab.
    4. +
    5. Set the log level to + Verbose.
    6. +
    7. In the filter menu, select No Filters.
    8. +
    9. Search the log for the string + "appindex".
    10. + +

      App indexing log messages should appear. If they don’t, check the following items:

      +
        +
      • Is Google Play Services installed on the device or emulator? You can check the settings on + the device.
      • +
      • Is the Google Play Services version on the device or emulator lower than the version specified + in the build.gradle file? If so, it might be out-of-date and should be upgraded to + a higher version.
      • +
      + +

      For more information, see the + Google Play Services Download + page and Setting Up Google Play Services. +

      +
    11. Visit app pages that trigger App Indexing API calls.
    12. +
    + + +

    Configuring Lint

    + +

    You can use the Android Studio built-in Lint tool to check whether you have valid deep links + defined in the manifest and have implemented the App Indexing API correctly in activities.

    + +

    You can view deep link and app indexing warnings and errors in two ways:

    +
      +
    • As pop-up text in the Code Editor. When Lint finds a problem, it highlights the problematic + code in yellow, or underlines the code in red for more serious issues.
    • +
    • In the Lint Inspection Results window after you select Analyze > + Inspect Code.
    • +
    + + + +

    To set default Lint checks for deep links and the App Indexing API, follow these steps:

    +
      +
    1. In Android Studio, open your project in + Android view. +
    2. +
    3. Select File > Other Settings > + Default Settings.
    4. +
    5. In the Default Preferences dialog, select Editor > + Inspections.
    6. +
    7. In the Profile field, select Default or + Project Default to set the scope for Android Studio or just for this project, + respectively.
    8. +
    9. Expand the Android Lint category and change the Lint settings as needed:
    10. +
        +
      • Missing Support for Google App Indexing - Reports a warning if the app hasn’t + implemented deep links, which are used by Google Search. This warning setting is enabled by + default.
      • +
      • Missing Support for Google App Indexing API - Reports if an app hasn’t + implemented the App Indexing API at all. This warning setting is disabled by default.
      • +
      • Incorrect Usage of App Link for Google App Indexing - Reports deep link + errors in manifest code. This error setting is enabled by default.
      • +
      + +

      For example, the following Lint warning appears for the first setting:

      +

      + +
    11. Click OK.
    12. +
    + + + +

    To produce a list of Lint checks displayed in the Inspection Results window, + follow these steps:

    +
      +
    1. In Android Studio, open your project in + Android view + and select a portion of your project that you want to test.
    2. +
    3. Select Analyze > Inspect Code.
    4. +
    5. In the Specify Inspection Scope dialog, select the inspection scope and profile.
    6. + +

      The scope specifies the files you want to analyze, and the profile specifies the Lint checks + you’d like to perform.

      +
    7. If you want to change the Lint settings, click …. In the Inspections + dialog, optionally click Manage to define a new profile, specify the Lint + settings you want, and then click OK.
    8. +

      In the Inspections dialog, you can search for the string "app indexing" +to find the deep link and App Indexing API Lint checks. Note that changing Lint settings for a +profile in the Inspections dialog doesn’t change the default settings, as described in +the previous procedure. It does change the settings for profiles displayed in the +Inspections dialog, however.

      +
    9. Click OK.
    10. +

      The results appear in the Inspection Results window.

      + +
    diff --git a/docs/html/tools/help/index.jd b/docs/html/tools/help/index.jd index a97a5516c3e57..e7b9111191970 100755 --- a/docs/html/tools/help/index.jd +++ b/docs/html/tools/help/index.jd @@ -43,6 +43,11 @@ avd) the emulator (emulator), and the Dalvik Debug Monitor S
    android
    Lets you manage AVDs, projects, and the installed components of the SDK.
    +
    Deep Link and App Indexing API Support
    +
    Helps you add deep links, app indexing, and search functionality to your apps. + These features can make it easier to find content in an installed app, drive more traffic to your + app, discover which app content is used most, and attract new users.
    +
    Hierarchy Viewer (hierarchyviewer)
    Provides a visual representation of the layout's View hierarchy with performance information for each node in the layout, and a magnified view of the display to closely examine the @@ -139,7 +144,7 @@ content is allowed.
    Image Asset Studio
    Helps you to generate custom icons for your Android applications from existing images, cliparts, or text. - It generates a set of icons at the appropriate resolution for each generalized screen density that your app + It generates a set of icons at the appropriate resolution for each generalized screen density that your app supports.
    Vector Asset Studio
    diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs index 04ed7057ede35..14af176a470a0 100644 --- a/docs/html/tools/tools_toc.cs +++ b/docs/html/tools/tools_toc.cs @@ -146,8 +146,9 @@ class="en">Tools Help
  • AVD Manager
  • bmgr -
  • Device Monitor
  • +
  • Deep Link and App Indexing API Support
  • Desktop Head Unit
  • +
  • Device Monitor
  • dmtracedump
  • Draw 9-Patch
  • Emulator
  • diff --git a/docs/html/training/app-indexing/index.jd b/docs/html/training/app-indexing/index.jd index 15a6367289fd0..a1a47e96844f4 100644 --- a/docs/html/training/app-indexing/index.jd +++ b/docs/html/training/app-indexing/index.jd @@ -22,6 +22,7 @@ startpage=true target="_blank">App Indexing for Google Search
  • Intents and Intent Filters
  • +
  • Deep Link and App Indexing API Support in Android Studio
  • diff --git a/docs/html/training/app-links/index.jd b/docs/html/training/app-links/index.jd index 7ce95e646df36..27b6480287936 100644 --- a/docs/html/training/app-links/index.jd +++ b/docs/html/training/app-links/index.jd @@ -14,6 +14,10 @@ page.tags=androidm,marshmallow
  • Declare Website Associations
  • Test App Links
  • +

    See also

    +
      +
    1. Deep Link and App Indexing API Support in Android Studio
    2. +