<!--
  ~ Copyright (C) 2015 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<idea-plugin version="2">
  <id>com.gooogle.services</id>
  <name>Google Services</name>
  <version>0.1</version>
  <vendor>Google</vendor>

  <description>
    A collection of Google services which can be integrated into your Android app.
  </description>

  <change-notes>
      Initial submission, containing Ads, Analytics, and Maps.
  </change-notes>

  <!-- please see https://confluence.jetbrains.com/display/IDEADEV/Build+Number+Ranges for description -->
  <idea-version since-build="107.105"/>

  <depends>org.jetbrains.android</depends>
  <depends>com.google.gct.login</depends>

  <extensions defaultExtensionNs="com.android.tools.idea.structure.services">
    <developerServiceCreators implementation="com.google.services.GoogleServiceCreators"/>
  </extensions>

  <extensions defaultExtensionNs="com.google.gct.login">
    <googleLoginListener implementation="com.google.services.GoogleServiceLoginListener"/>
  </extensions>

  <application-components>
    <!-- Add your application components here -->
  </application-components>

  <project-components>
    <!-- Add your project components here -->
  </project-components>

  <actions>
    <!-- Add your actions here -->
  </actions>

</idea-plugin>