Маркировка Android White с помощью Gradle: как мне эмулировать "суб" измерения вкуса?

Я хотел бы иметь возможность назначить BASE_URL построить поле конфигурации для каждого партнера и для каждого сервера. У каждого партнера разная постановка и постановка BASE_URL, В приведенном ниже сценарии это означает, что у нас есть 4 разных базовых URL, которые я хотел бы привязать к одному BASE_URL Поле конфигурации сборки в зависимости от окончательного варианта сборки. Код ниже будет работать только для одного партнера.

flavorDimensions 'partner', 'server'
productFlavors {
  partnerA {
    applicationId 'com.example.partnerA'
    dimension 'partner'
  }
  partnerB {
    applicationId 'com.example.partnerB'
    dimension 'partner'
  }
  staging {
    // Will not work for more than one partner because each 
    // partner has a different staging base url!
    applicationIdSuffix "staging"
    buildConfigField('String', 'BASE_URL', '"https://staging.example.com"')
    dimension 'server'
  }
  production {
    buildConfigField('String', 'BASE_URL', '"https://production.example.com"')
    dimension 'env'
  }
}

Как указано в заголовке, я бы хотел как-то создать "суб" измерение вкуса. Я не думаю, что это возможно с текущим API, но что-то вроде этого было бы полезно.

flavorDimensions 'partner', 'server'
productFlavors {
  partnerA {
    applicationId 'com.example.partnerA'
    dimension 'partner'
    staging {
      buildConfigField('String', 'BASE_URL', '"https://stagingA.com"')
    }
    production {
      buildConfigField('String', 'BASE_URL', '"https://prodA.com"')
    }
  }
  partnerB {
    applicationId 'com.example.partnerB'
    dimension 'partner'
    staging {
      buildConfigField('String', 'BASE_URL', '"https://stagingB.com"')
    }
    production {
      buildConfigField('String', 'BASE_URL', '"https://prodB.com"')
    }
  }
  staging {
    applicationIdSuffix "staging"
    dimension 'server'
  }
}

Есть только несколько способов обойти это:

  • использование applicationVariants.all {...} циклически перебирать каждый произведенный вариант, разбирая имя варианта на каждом из них, чтобы определить во время сборки, какой URL-адрес поместить в поле конфигурации сборки.
  • Определите значение BASE_URL в файле в каждом наборе src.
  • Изготовление partnerAStaging, partnerAProd, PartnerBStagingи т.д.

Я считаю эти варианты нежелательными по той или иной причине. Есть ли другой способ сделать это?

0 ответов