Home

Awesome

<h1 align="center"> <br> <a href="https://www.mapbox.com/android-docs/plugins/overview/"><img src="https://github.com/mapbox/mapbox-plugins-android/blob/master/.github/mbx-plugins-logo.png" alt="Mapbox Plugins" width="500"></a> </h1> <h4 align="center">Plugins are single-purpose libraries built on top of the <a href="https://www.mapbox.com/android-docs/">Mapbox Maps SDK for Android</a> that you can include in your apps like any other Android dependency</h4> <p align="center"> <a href="https://circleci.com/gh/mapbox/mapbox-plugins-android"> <img src="https://circleci.com/gh/mapbox/mapbox-plugins-android.svg?style=shield&circle-token=:circle-token"> </a> </p> <br>

Mapbox Plugins for Android

Plugins are single-purpose libraries built on top of the Mapbox Maps SDK for Android that you can include in your apps like any other Android dependency. You'll find documentation for each plugin on our Android documentation website. A full list of the current plugins is available below.

Available Plugins

Installing a plugin

By using a plugin, you also have to include the Mapbox Maps SDK for Android which means that you'll need to setup your project to use the Maps SDK if you haven't already. Head over to the overview page for the Maps SDK to learn more.

Note that depending on the plugin you add, there might be required permissions and additional setup steps. You'll find more information on whether or not more configuration steps are involved when looking at the specific plugin documentation.

  1. Start Android Studio
  2. Open up your application's build.gradle
  3. Make sure that your project's minSdkVersion is at API 14 or higher
  4. Under dependencies, add a new build rule for the latest plugin version you are trying to use.
repositories {
  mavenCentral()
  maven {
    url 'https://api.mapbox.com/downloads/v2/releases/maven'
    authentication {
      basic(BasicAuthentication)
    }
    credentials {
      username "mapbox"
      password = "SDK_REGISTRY_TOKEN"
    }
  }
}

dependencies {
  implementation 'com.mapbox.mapboxsdk:{PLUGIN_NAME}-v{MAJOR_MAPS_SDK_VERSION_NUMBER}:PLUGIN_VERSION_NUMBER'
}
  1. Replace SDK_REGISTRY_TOKEN with a Mapbox access token that has the downloads scope

Plugin artifacts are versioned based on the major release of the Maps SDK for Android, which means, that each artifact's name has a major version of the Maps SDK it's compatible with appended.

  1. Click the Sync Project with Gradle Files near the toolbar in Studio.

Maps SDK compatibility

The Mapbox Plugins for Android are heavily dependent on the major semantic versioning number of the Maps SDK. They either won't compile or hide runtime bugs when paired with a different major version of the Maps SDK. Each plugin's dependency name has a vX suffix which states the major version of the Maps SDK that the plugin is compatible with. This suffix makes the transition between versions easier and more educated without the need to jump into changelogs and compare repositories.

Help and Usage

A plugin is simply a library module built on top of the Mapbox Maps SDK for Android. Plugins can be easy to use. Currently, we are not requiring plugins to register themselves or to implement any specific interfaces so that they're simple to consume.

Test app

This repository includes an app with examples showing how you can use each plugin.

This might change in the future as we build more plugins and learn how you use them. We'd love to hear your feedback.

Why Plugins?

Splitting specific functionality into plugins makes our Maps SDK lighter and nimble for you to use, and it also lets us iterate faster. We can release plugins more often than the SDK, which requires a slower pace due to its larger codebase.

The Mapbox Android team creates plugins but this plugins repository is an open-source project similar to the various Mapbox SDKs for Android. Plugins' lightweight nature makes them much easier for you and anyone else to contribute rather than trying to add the same feature to the more robust Maps SDK. The Mapbox team can also more easily accept contributed plugins and keep the plugin list growing.

Contributing

We welcome contributions to this plugin repository!

If you're interested in building and sharing your own plugin, please read the contribution guide to learn how to get started.