Как установить идентификатор трекера Google Analytics в build.gradle вместо xml? - PullRequest
0 голосов
/ 13 октября 2018

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

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

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

Как можно переместить идентификатор трекера в buildTypes файла build.gradle файла, чтобы определить разные идентификаторы трекера 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>

1 Ответ

0 голосов
/ 13 октября 2018

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

Таким образом, вместо того, чтобы поддерживать UA-XXX в build.gradle, нам нужно указать несколько XML-файлов с разными UA-XXX в классе приложения

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);
  }
}
...