Как добавить разрешения на основе вкуса в манифест Android с помощью GradleAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как добавить разрешения на основе вкуса в манифест Android с помощью Gradle

Сообщение Anonymous »

Могу ли я как-то добавить/не добавлять определенное разрешение на манифест для определенных вариантов?
Предположим, у меня есть 2 варианта
>main
>cloud

У меня есть разрешение REQUEST_INSTALL_PACKAGES. Я хочу иметь его в «основном» варианте, но мне не нужен «облачный» вариант. Могу ли я сделать это, используя переменные в Gradle?
Я уже пробовал подход с установкой всех разрешений в основном манифесте, а затем удалением их в дополнительном манифесте:


Но он ничего не делает, объединенный манифест по-прежнему имеет это разрешение. Поэтому я думаю, что подход с добавлением его через Gradle был бы лучше, но я действительно не знаю, как это сделать.
@edit
Ниже приведены размеры и определения моего варианта Gradle:
def enableCrashlyticsInDebugBuild = false
def enableCrashlyticsInReleaseBuild = true

buildTypes {
release {
minifyEnabled true
firebaseCrashlytics {
mappingFileUploadEnabled true
}
proguardFile 'proguard.cfg'
manifestPlaceholders = [crashlyticsEnabled:"${enableCrashlyticsInReleaseBuild}"]
}
debug {
manifestPlaceholders = [crashlyticsEnabled:"${enableCrashlyticsInDebugBuild}"]
}
}
flavorDimensions "environment", "distribution"
productFlavors {

enterprise {
dimension 'distribution'
}

store {
dimension 'distribution'
}

sampleBuildType {
dimension 'environment'
signingConfig signingConfigs.sampleConfig
applicationId "com.sample.sampleBuildType"
buildConfigField "String", "DEFAULT_APP_THEME", "\"DARK\""
buildConfigField "String", "APP_CATEGORY", "\"ENTERPRISE\""
}
cloud {
dimension 'environment'
signingConfig signingConfigs.cloudConfig
applicationId "com.app.sample.Cloud"
buildConfigField "String", "DEFAULT_APP_THEME", "\"DARK\""
buildConfigField "String", "APP_CATEGORY", "\"ENTERPRISE\""
}

Кроме того, я нашел в Gradle некоторый код, который, как я не совсем понимаю, может иметь отношение к делу:
variantFilter { variant ->
def names = variant.flavors*.name

if (names.contains("store") && !names.contains("cloud_prod")) {
setIgnore(true)
}

if (names.contains("enterprise") && names.contains("cloud_prod")) {
setIgnore(true)
}
}


Подробнее здесь: https://stackoverflow.com/questions/757 ... ing-gradle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»