GoogleAppIndexingWarning

2017年04月23日(編集2017年04月23日)
このエントリーをはてなブックマークに追加

Android Lint

version 2.3.1
lint_id GoogleAppIndexingWarning
severity Warning
category Usability
priority 5

環境

  • macOS Sierra
  • android sdk 25
  • Oracle jdk version 1.8.0_72
  • Android Studio 2.3.1
  • Android 7.1 (API level 25)

メッセージ

App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW intent filter.

説明

Adds URLs to get your app into the Google index, to get installs and traffic to your app from Google Search.

エラー原因

この警告はAndroidManifest.xmlにDeep Linkの設定がない場合に警告されるLintエラーです。Deep Linkは、アプリのActivityに直接アクセス可能なリンクです。

エラーコード

以下にエラーが発生するAndroidManifest.xmlコードを記載します。

{project_folder}/app/src/main/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.java_lang_programming.android_demo">

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.MainActivity2"
            android:label="@string/title_activity_main2"
            android:theme="@style/AppTheme.NoActionBar" />
    </application>

</manifest>
        

Don't.

上記のAndroidManifest.xmlはDeep LinkがないのでLintエラーになります。

修正方法

エラーの修正には2つの方法があります。

正常コードその1

1つ目は、Deep Linkチェックを無効にする方法です。
Deep Linkがないアプリはこの方法を用います。

{project_folder}/app/build.gradle
android {
    compileSdkVersion 25
    buildToolsVersion rootProject.buildToolsVersion

    defaultConfig {
        // something
    }
   +lintOptions {
        disable 'GoogleAppIndexingWarning'
        baseline file("lint-baseline.xml") // your choice of filename/path here
    }
} 
        

Do.

build.gradleにlintOptionsを追加して、GoogleAppIndexingWarningを無効にします。アプリにDeep Linkがない場合は、この方法でLintチェックを解除します。

正常コードその2

2つ目は、アプリにDeep Linkを追加する方法です。

{project_folder}/app/build.gradle
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.java_lang_programming.android_demo">

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

               +<action android:name="android.intent.action.VIEW" /  >

                <category android:name="android.intent.category.DEFAULT" / >
                <category android:name="android.intent.category.BROWSABLE" / >

                <!-- Accepts URIs that begin with "java-lang-programming://android-app-google-plus-demo" -- >
                <data
                    android:host="java-lang-programming"
                    android:scheme="android-app-google-plus-demo" / >
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.MainActivity2"
            android:label="@string/title_activity_main2"
            android:theme="@style/AppTheme.NoActionBar" />
    </application>

</manifest>
        

Do.

アプリのActivityにDeep Linkを追加します。アプリにDeep Linkがあれば、当然Deep Linkエラーの警告は出ません。

また、設定したDeep Linkが正しいかどうかの確認は、ターミナルのadbコマンドで行えます。

terminal
adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>
       

上記の例だと以下のようになります。

terminal
adb shell am start
        -W -a android.intent.action.VIEW
        -d "java-lang-programming://android-app-google-plus-demo" com.java_lang_programming.android_demo
        

ビルド

上記の修正後、Lintを確認してみましょう。
Lintエラーが消えているはずです。

結論

作成するアプリにDeep Linkが必要とは限りません。必要に応じた設定をしましょう。

タグ検索で調べてみよう

Android7.1 Warning