Как установить идентификатор трекера Google Analytics в build.gradle вместо xml?

Все ключи для конкретной среды, такие как URL-адрес сервера и ключи SDK, в настоящее время хранятся в файле build.gradle. Цель этого - легко переключаться между средой разработки и производством с помощью buildTypes.

Я добавил в приложение Google Analytics, который настраивается через файл res/xml/app_tracker.xml, содержащий идентификатор трекера:

<string name = "ga_trackingId" translatable = "false">UA-12345678-9</string>

Как можно переместить идентификатор трекера в build.gradle файла buildTypes, чтобы определить другой идентификатор трекера GA для каждой среды?


Редактировать

Я пробовал это в build.gradle:

buildTypes {
  release {
    resValue "string", "GOOGLE_ANALYTICS_TRACKER_ID", "UA-12345678-9"
  }
}

Что автоматически создает файл xml:

<?xml version = "1.0" encoding = "utf-8"?>
<resources>

    <!-- Automatically generated file. DO NOT MODIFY -->

    <!-- Values from build type: debug -->
    <string name = "GOOGLE_ANALYTICS_TRACKER_ID" translatable = "false">UA-12345678-9</string>

</resources>

Но в файле app_tracker.xml это не работает:

<string name = "ga_trackingId" translatable = "false">@string/GOOGLE_ANALYTICS_TRACKER_ID</string>

Я попробовал решение из вашего связанного ответа, но оно не сработало, поэтому я разместил этот вопрос, см. Мое редактирование.

Manuel 13.10.2018 14:15
0
2
221
1

Ответы 1

Исходя из заданного вами вопроса, вы хотите поддерживать несколько идентификаторов трекера для другой среды.

Поэтому вместо поддержки UA-XXX в build.gradle нам нужно указать несколько файлов xml с разными UA-XXX в классе Application.

private static final String PROPERTY_ID = "UA-XXXXX-Y";


  public enum TrackerName {
    PROD_ENV_TRACKER, // Tracker used for Production Environment.
    DEV_ENV_TRACKER, // Tracker used for Devlopment Environment.
    STAGE_ENV_TRACKER, // Tracker used for Stage Environment.
  }

  HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

  public AnalyticsSampleApp() {
    super();
  }
  synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      Tracker t = (trackerId == TrackerName.PROD_ENV_TRACKER) ? analytics.newTracker(PROPERTY_ID)
          : (trackerId == TrackerName.DEV_ENV_TRACKER) ? analytics.newTracker(R.xml.dev_env_tracker)
              : analytics.newTracker(R.xml.stage_env_tracker);
      mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
  }
}

Другие вопросы по теме