Aug 13, 2025

Signing Your ATAK Plugin for Production

Signing Your ATAK Plugin for Production

Learn how to deploy ATAK plugins to Google Play Store. Complete guide covering dual-signing, TAK.gov submission, keystore creation, and deployment steps.

Introduction

Ever wondered how to get your ATAK plugin to work with the official ATAK app on Google Play? Whether you’re a seasoned developer or just getting started with ATAK plugin development, navigating the production deployment process can feel like traversing uncharted waters. The Android Team Awareness Kit (ATAK) has revolutionized tactical communications and situational awareness, but getting your custom plugins from development to production requires understanding a specific workflow that challenges many developers.

But don’t worry, in this tutorial, we will demonstrate how to jump through the hoops to get your ATAK plugin signed and ready for distribution on the Google Play Store. As usual, you can follow along with the video or the written version below.

Getting Started

We had previously covered getting started with ATAK plugins in a previous tutorial. If you are completely new to ATAK plugins, start there. The tutorial scope today will be limited to getting your plugin signed and deployed in the app store, but as a quick refresher and note, to follow along, you should use ATAK-CIV 5.x for the SDK, or you will have to go to tak.gov and download it to bring your application up to date. You will also need to use JDK 17.

Understanding ATAK Plugin Architecture

Before diving into the signing process, it’s essential to understand how ATAK plugins work. ATAK follows a sophisticated plugin architecture that sets it apart from traditional Android applications. The base ATAK application provides a platform, while plugins extend functionality without requiring modifications to the core system.

The architecture consists of two main components that plugins interact with: the map component and the dropdown receiver. The map component handles all geographical and visual elements displayed on the tactical map (left), while the dropdown receiver manages the user interface elements that appear in the side panel (right).

This separation enables clean, modular development, where plugins can add both visual map elements and interactive user interfaces.

You can see in the example hierarchy in the image above that the map and dropdown receiver files are clearly labeled.

What makes this architecture particularly elegant is how plugins integrate seamlessly with the base application. This allows modules to integrate through dynamic loading, enabling a rich ecosystem of specialized tools for uses ranging from drone control to weather monitoring.

For production deployment, plugins must be dual-signed by both your developer certificate and the official TAK signing system to communicate with the production ATAK app while maintaining security standards. This setup is robust, but it can cause some hurdles developers often trip over.

Downloading and Building with the Example Plugin

Feel free to attempt this tutorial with your own plugin, but to make life easier, you can download our example Weather IoT Plugin to test the waters. The example plugin connects to Rainman Weather Stations deployed across southeast Michigan, pulling temperature, humidity, and other environmental data through MQTT messages. It then displays the data as map markers and details in the dropdown receiver’s interface.

As in the architecture explanation, you can now locate our map and dropdown files in weather_iot_plugin/app/src/main/java/com/atakmap/android/weatheriotplugin and if you are familiar with Android development, the corresponding layouts for each of these dropdown components in weather_iot_plugin/app/src/main/res/layout. If not already turned on, turn on Build Variants in Android Studio, and make sure your Active Build Variant is set to civRelease.

Before moving on to the Make and Build steps, it doesn’t hurt to force a sync by going to File > Sync Project with Gradle Files to ensure your project and Gradle files sync correctly.

Now you can select Build>Make Project to compile the code and then Build>Build App Bundles(s) > APK(s) > Build APK(s).

If the build goes as planned, you should see a notification pop up on the right-hand side of the IDE. Click on the locate to get access to the APK.

Your development workflow should include proper configuration of ProGuard settings, which the signing process requires. The TAK.gov user build documentation specifies required ProGuard configurations that must be included in your project. Currently, it states -recpackageclasses atakplugin.PluginTemplate PluginTemplate needs to be replaced with a descriptor of your specific plugin. You can find this buried at the bottom of your proguard-gradle.txt file. Make sure it correctly matches the package name at the top of your components. These settings ensure that your plugin’s code structure remains compatible with ATAK’s security requirements.

The Android manifest must contain specific entries that identify your application as an ATAK plugin rather than a standalone application. These manifest entries tell the ATAK framework how to load and integrate your plugin, including which components to instantiate and how to handle plugin lifecycle events.

Preparing Your Zip File and Submitting

The submission process demands careful attention to file organization and packaging. The pipeline expects a clean zip archive containing your plugin source code, organized in the standard Android project structure.

If on MacOS, open up a terminal, and if on ,Windows open up a WSL terminal in the proper directory and issue this command:

zip -r weather_iot_plugin.zip weather_iot_plugin -x "*.iml" "*.apk" "*.zip" "*.idea/*" "*/build/*" "*.DS_Store“

Just for some clarity, this zip command removes all unnecessary files that TAK’s service does not want included.

Head on over to tak.gov/user_builds and submit your zip file in the handy drag-and-drop UI a little ways down the page.

It should take around 20 minutes or longer for your plugin to be reviewed, so take a short break and come back to check in on it. If it succeeds, you should receive a downloadable in a message like this:

Understanding the Build Results

Upon successful review, you'll receive a zip file containing several important components. The most critical files are the signed APK and AAB (Android App Bundle) files. The AAB format is required for Google Play distribution, while the APK format is used for other distribution methods, not relevant to our case. It’s more of a legacy format at this point.

The returned package also includes valuable diagnostic information. You'll find Fortify scan results showing any security analysis performed on your code, along with dependency check results that highlight any third-party libraries with known issues. The complete build log provides transparency into the compilation process, helping you understand exactly how your plugin was processed. It’s definitely worth looking through the PDF files for some insights.

Google Play Deployment

Google Play requires all applications to be signed with a developer certificate, creating a dual-signing situation for ATAK plugins. Your plugin must be signed with both your developer certificate (for Google Play) and the TAK certificate (for ATAK integration). The order and method of applying these signatures matter for successful deployment.

Before you can upload your plugin to Google Play, you need to sign the application with your own keystore that represents your identity as the app publisher.

The process begins with generating a keystore with the following commands:

keytool -genkeypair \\
-v \\
-keystore weather_iot_release.keystore \\
-alias weatheriotkey \\
-keyalg RSA \\
-keysize 2048 \\
-validity 10000

You will need to replace the keystore and alias information with your own plugin’s.

Key Information to Remember:

  • Keystore password: Password for the keystore file

  • Key alias: The alias name (e.g., "my_app_key")

  • Key password: Password for the specific key (can be same as keystore password)

This process signs your application bundle with your developer credentials, marking it as authentic and ready for distribution through Google Play.

Important: Store your keystore file and passwords securely - you'll need them for all future app updates. If you lose them, you cannot update your app on Google Play.

Now we can move on to signing our AAB file:

jarsigner \\
-verbose \\
-sigalg SHA256withRSA \\
-digestalg SHA-256 \\
-keystore

This should make it ready for upload to Google Play.

If you haven’t already, you need to open up a Google Play developer account. That’s beyond the scope of this tutorial, so if you aren’t already set up, go do that and come back.

Once you are in the developer console, click on Create App located on the right side.

You are going to need all the marketing information, including screenshots for your plugin, to properly submit.

We’re almost there, but if you want to make sure your app isn’t broken, you can use the Test and Release features on the left-hand menu.

This can prevent future issues if major problems bring your app down or get it delisted. From here, adding new releases and moving them to production becomes straightforward.

Troubleshooting Common Issues

Several common issues can arise during the production deployment process. Build failures often stem from using incorrect SDK versions or missing required configurations. The most frequent problem is attempting to use JDK 11 with the current 5.x SDK, which will result in compilation errors.

Configuration issues, particularly in the ProGuard setup or Android manifest, can prevent proper integration with ATAK. These problems often appear as plugins that build successfully but fail to load or function correctly in the production environment.

Google Play compliance issues frequently arise from evolving platform requirements. Staying informed about Google's developer policy updates and API level requirements helps prevent last-minute compatibility problems that can delay your plugin's release.

Conclusion

Now, users can download your plugin and install it easily into the ATAK base application directly from the Play Store. Amazing!

By following this tutorial, you learned the complete ATAK plugin deployment pipeline from understanding the dual-architecture system with map components and dropdown receivers to building plugins with proper ProGuard configurations, packaging source code correctly for TAK.gov submission, navigating the official signing process that provides both TAK and developer certificates, and finally deploying to Google Play Store with proper keystore management, transforming your development plugin into a production-ready application that users can seamlessly install alongside the official ATAK app. The custom plugin applications you can build are now limited only by your imagination.

Additional Resources

To learn more about drone application development, join the Drone Software Meetup group for monthly tutorials and networking.