Skip to main content
Availability2022.1 or later

Requirements

Current package and endpoint values

Initialize GermainUX

Set up in Application class

Configure Privacy Before Release

Exclude sensitive data from capture

Troubleshooting

Fix deployment and init problems

Deploy Monitoring for an Android Application

Overview

Deploy Android application monitoring by adding the GermainUX Mobile App library to the Android project, initializing it when the application starts, and configuring the required Android permissions and service. The library can collect configured: The application must be rebuilt and released after the library is added.

Requirements

Before deployment:
  • Confirm that the Android and Java or Kotlin versions are supported by the current GermainUX Mobile App library.
  • Obtain the latest library version and repository access from GermainUX.
  • Obtain the HTTPS ingestion URL for the GermainUX environment.
  • Confirm that the application can send outbound HTTPS requests to GermainUX.
  • Define the application name and environment.
  • Review privacy, security, and user-consent requirements.
  • Test the integration in a nonproduction build.
Do not use package versions, repository credentials, or ingestion URLs copied from an older deployment. Obtain the current values for your GermainUX environment.

Required Android Permissions

Add the required permissions to AndroidManifest.xml:
Additional permissions may be necessary only for optional system-event or device monitoring. Request permissions only when they are required by the application and approved by its privacy and security policies. Android may restrict access to certain system events regardless of the declared permissions.

Obtain the Mobile App Library

GermainUX can provide the Android library through:
  • A private Maven-compatible repository
  • Android Archive (.aar) files for manual installation
Use the current package and dependency information supplied with the library release. Never place repository credentials directly in source control. Store repository credentials in an approved Gradle properties file, environment variable, CI/CD secret, or credential-management system.

Option 1: Install with Gradle

Add the GermainUX repository to the project’s dependency-management configuration using the repository URL and credentials provided for your environment. Example structure:
Add the current GermainUX Mobile App dependency to the application module:
Replace the placeholders with the repository and release information supplied by GermainUX. Do not hard-code repository credentials in build.gradle, build.gradle.kts, or another committed project file.

Option 2: Install AAR Files

For manual installation:
1

Obtain the current GermainUX .aar files and dependency list

2

Copy the files into the application module’s libs directory

3

Add the local repository to the module configuration

4

Add each required AAR as a dependency

5

Add any external dependencies not packaged inside the AAR files

6

Synchronize and rebuild the project

Example:
The archive names and external dependencies can change between releases. Use the files and instructions supplied with the installed version.

Initialize GermainUX

Create or update the application’s Application subclass and initialize GermainUX in onCreate().

Java

Kotlin

Replace the sample URL with the ingestion URL assigned to the GermainUX environment. Always use HTTPS in production.

Register the Application Class

If the application does not already register a custom Application subclass, add it to AndroidManifest.xml:
If the application already has an Application subclass, add GermainUX initialization to that existing class instead of creating a second one. Initialize the library once per application process unless the supplied release documentation specifies otherwise.

Register the GermainUX Service

Add the GermainUX service inside the <application> element:
Keep the service non-exported so other applications cannot start it directly. Verify the required service declaration against the documentation included with the installed library version.

Configure Network Security

Confirm that:
  • The ingestion endpoint uses a trusted TLS certificate.
  • The application is permitted to connect to the GermainUX hostname.
  • Network-security configuration does not block the endpoint.
  • Proxies, VPNs, firewalls, or mobile-device policies permit the connection.
  • Cleartext HTTP traffic is not required.
  • Certificate pinning, when used, accounts for the approved GermainUX endpoint.
Do not disable Android network-security controls globally to enable monitoring.

Configure Code Shrinking and Obfuscation

If the application uses R8 or ProGuard:
1

Obtain the rules supplied with the current GermainUX library

2

Add them to the application’s shrinker configuration

3

Preserve the model classes and attributes required for serialization and diagnostic stack traces

4

Build a release variant

5

Verify that monitoring works after shrinking and obfuscation

6

Retain the mapping file for crash analysis

Avoid broad -dontwarn or -keep rules unless they are required by the installed library version. Rules from older releases may hide legitimate dependency or build problems.

Configure Privacy Before Release

Review every automatically or manually captured attribute. Do not collect:
  • Passwords
  • Authentication tokens
  • Payment-card data
  • Sensitive personal or health information
  • Message or form content that is not required
  • Unrestricted exception values containing confidential data
Configure:
  • Anonymous or pseudonymous user identification
  • Allowed application and device attributes
  • Custom-event and transaction attributes
  • Error-message filtering
  • Data retention
  • Access permissions
  • Environment separation
Do not include secrets in build constants or monitoring attributes.

Build and Test

After installation:
1

Clean and rebuild the Android project

2

Confirm that dependency resolution succeeds

3

Launch the application

4

Verify that initialization completes without an exception

5

Generate a normal user session

6

Navigate through representative screens and fragments

7

Execute a monitored transaction

8

Send a controlled handled exception

9

Validate crash collection in a safe test build

10

Confirm that telemetry appears in GermainUX

11

Verify the application name, version, environment, and device context

12

Measure startup and runtime overhead

13

Confirm that sensitive information is excluded

Test both debug and release builds because shrinking, obfuscation, signing, and network settings may differ.

Release

After validation:
1

Use the approved production ingestion endpoint

2

Confirm the production application and environment identifiers

3

Verify privacy and retention settings

4

Publish the monitored build through the normal release process

5

Monitor initial telemetry volume, errors, and performance

6

Compare the new release with the previous application version

7

Configure dashboards, SLAs, alerts, and reports

Troubleshooting

The library cannot be downloaded

Verify:
  • Repository URL
  • Repository credentials
  • Network or proxy access
  • Dependency coordinates and version
  • Gradle repository configuration
  • Credential availability in the local or CI/CD environment

The application does not compile

Check:
  • Android and Java or Kotlin compatibility
  • Duplicate dependencies
  • Missing external dependencies
  • AAR file names
  • R8 or ProGuard configuration
  • Android manifest merging errors
  • Release notes for the installed library

No telemetry reaches GermainUX

Confirm that:
  • GermainAPM.init() executes.
  • The ingestion URL is correct.
  • The URL uses HTTPS.
  • The device can reach the GermainUX environment.
  • The service is registered correctly.
  • The application has internet permission.
  • Network-security or certificate policies do not block the connection.
  • The selected GermainUX application and environment are enabled.

Debug works but the release build fails

Review:
  • R8 or ProGuard rules
  • Obfuscation
  • Release-only network configuration
  • Product flavors
  • Build-time endpoint selection
  • Certificate pinning
  • CI/CD secret injection

Get Help

Contact GermainUX Support

The GermainUX team helps you get up and running faster, empower your team, turn data into actionable insights, and optimize performance to deliver measurable business outcomes.

Can't find what you need?

Search all GermainUX docs with Ctrl + K, or use the feedback buttons at the bottom of this page to tell us what is missing.

The content of this document is proprietary to GERMAIN SOFTWARE.