Localytics - Программно установлен ключ приложения

Можно ли программно установить ключ приложения для Localytics? Из руководства по интеграции ( https://support.localytics.com/Android_SDK_integration) кажется, что вы должны установить его в файле манифеста как метаданные.

<meta-data android:name="LOCALYTICS_APP_KEY" android:value="APP KEY FROM STEP 2"/>

Из следующего поста также кажется, что невозможно динамически устанавливать метаданные Android. Как динамически добавлять метаданные (не в манифесте, а внутри кода)?

Я хотел бы иметь возможность динамически устанавливать ключ приложения на основе Gradle buildType, чтобы у меня был ключ выпуска и ключ приложения отладки.

3 ответа

Решение

Вы можете использовать манифест слияния для поддержки различных ключей приложения для ваших типов сборки (например, отладка или выпуск) или разновидностей вашего продукта (например, бесплатное и платное).

Для поддержки различных ключей приложения для типов ваших сборок:

  1. Создайте src/debug/AndroidManifest.xml а также src/release/AndroidManifest.xml,
  2. Удалить метаданные из src/main/AndroidManifest.xml,
  3. Добавьте соответствующий тег метаданных в свой манифест конкретного типа сборки.

src/debug/AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.app" >

        <application>

            <meta-data
                android:name="LOCALYTICS_APP_KEY"
                android:value="DEBUG_APP_KEY" />

        </application>

    </manifest>

src/release/AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.app" >

        <application>

            <meta-data
                android:name="LOCALYTICS_APP_KEY"
                android:value="RELEASE_APP_KEY" />

        </application>

    </manifest>

Для разных ключей приложения в зависимости от вашего продукта, просто замените debug а также release выше с названиями вашего продукта.

В Localytics.integrate есть переопределение, которое принимает ключ API.

Localytics.integrate(this, "API_KEY")

Если в случае, если вы используете autoIntegrateиспользуйте следующий API, который принимает контекст приложения в качестве первого аргумента.

Localytics.autoIntegrate(this, "API_KEY");
Другие вопросы по тегам