Skip to main content

Proguard Rule

Proguard is a tool used in Android release builds to optimize, shrink, and obfuscate code, reducing app size and enhancing security. To ensure the AppTrove React Native SDK and its dependencies function correctly when Proguard is enabled, specific rules must be added to prevent critical classes and methods from being removed or renamed. This section outlines how to configure Proguard rules for your Android app.

Prerequisites

  • AppTrove React Native SDK installed and initialized in your project
  • A Trackier MMP account with access to the Trackier Panel
  • React Native 0.60 or later
  • Android API 21 (Android 5.0) or later
  • Proguard enabled for release builds in your Android project
  • Basic knowledge of Android build configurations and Proguard

Configure Proguard Rules

To maintain the functionality of the AppTrove SDK and its dependencies in optimized builds, add the required Proguard rules to your project's Proguard configuration file.

Step 1: Add Proguard Rules

  1. Locate or create the Proguard configuration file in your Android project, typically at android/app/proguard-rules.pro.
  2. Add the following rules to preserve AppTrove SDK classes and dependencies:
-keep class com.trackier.sdk.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
java.lang.String getId();
boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }
-keep class kotlin.Metadata { *; }
-keep class kotlin.reflect.jvm.internal.** { *; }
-keep class kotlin.** { *; }
-dontwarn kotlin.**

Step 2: Enable Proguard in Android Build

  1. Open the android/app/build.gradle file in your React Native project.
  2. Ensure Proguard is enabled for release builds by verifying or adding the following configuration in the buildTypes section:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

Step 3: Test the Release Build

  1. Build the Android release APK using the following command in the project root directory:
cd android && ./gradlew assembleRelease

  1. Install the APK on a device or emulator.
  2. Test AppTrove SDK features (e.g., event tracking, campaign data retrieval) to ensure they function correctly in the optimized build.

Expected Outcome

The AppTrove SDK and its dependencies will remain fully functional in the optimized release build, with no critical classes or methods removed by Proguard. Tracking data will continue to be sent to the Trackier MMP without issues, verifiable in the Trackier Panel.

Best Practices

  • Test Proguard Rules: Build and test the release APK with Proguard enabled in a development environment to verify SDK functionality before deploying to production.
  • Backup Proguard Files: Commit proguard-rules.pro to version control to track changes and ensure consistency across builds.
  • Monitor Build Logs: Check Android build logs for Proguard-related warnings or errors that may affect the SDK.
  • Use Default Proguard Files: Include the default proguard-android-optimize.txt file in build.gradle to leverage Android's standard optimizations alongside Trackier's rules.
  • Validate SDK Functionality: After applying Proguard rules, test key SDK features like event tracking and campaign data retrieval to confirm they work as expected.
  • Keep Rules Updated: Check for updates to AppTrove SDK Proguard rules in the Trackier Documentation Portal as new SDK versions are released.

Troubleshooting

  • SDK Features Not Working in Release Build:
    • Confirm all required Proguard rules are added to proguard-rules.pro without modifications.
    • Check build logs for warnings about missing classes or methods related to com.trackier.sdk or Google Play Services.
    • Temporarily set minifyEnabled false in build.gradle to isolate Proguard-related issues.
  • Build Errors with Proguard:
    • Verify the syntax of the Proguard rules in proguard-rules.pro for typos or formatting errors.
    • Ensure the proguardFiles line in build.gradle correctly references proguard-rules.pro.
  • Tracking Data Not Appearing in Trackier Panel:
    • Test the release APK to ensure the SDK is initialized and tracking events correctly.
    • Confirm the app token and environment match the Trackier Panel configuration.

For further assistance, refer to the Trackier Documentation Portal or contact Trackier support at support@trackier.com.