#android #gradle
Есть два продакт флэйвора: productFlavors { demo { ... } full { ... } } и два билд тайпа: buildTypes { release { ... } debug { ... } } Исходя из существующих продакт флейворов и билд тайпов получается четыре билд варианта: demoRelease demoDebug fullRelease fullDebug Возможно ли для каждого из четырех билд вариантов в AndroidManifest.xml прописать различные значения для некоторых атрибутов? Если возможно, то как? С помощью manifest placeholders или как-то иначе? Например, есть четыре API-ключа для какого-то сервиса и в зависимости от конкретного билд варианта в AndroidManifest.xml нужно вставлять свой собственный ключ. Сейчас у меня это реализовано с помощью отдельного strings.xml для каждого билд варианта, но хотелось бы где-то в одном файле прописать API-ключи, а не создавать кучу дополнительных файлов. Интересует что-нибудь вроде этого решения (в первой части ответа).
Ответы
Ответ 1
У меня сделано это так (build.gradle): android { defaultConfig { applicationId "blah-blah" targetSdkVersion targetSdkVersionVar } productFlavors { honeycumb { minSdkVersion minSdkHoneycumb targetSdkVersion targetSdkHoneycumb } kitkat { minSdkVersion minSdkKitkat targetSdkVersion targetSdkVersionVar } } } Остальное прописано в манифестах src/main, src/honeycumb, src/kitkatОтвет 2
Можно дополнить вариант, предложенный вами таким образом: build.gradle android { defaultConfig { manifestPlaceholders = [ apiKey:project.property('default.ApiKey') ] } } applicationVariants.all{ variant-> if (variant.productFlavors.get(0).name.equals("demo")) { if (variant.buildType.name.equals("release")) { manifestPlaceholders = [ apiKey:project.property('release.demo.ApiKey') ] } else { manifestPlaceholders = [ apiKey:project.property('debug.demo.ApiKey') ] } } else if (variant.productFlavors.get(0).name.equals("full")){ if (variant.buildType.name.equals("release")) { manifestPlaceholders = [ apiKey:project.property('release.full.ApiKey') ] } else { manifestPlaceholders = [ apiKey:project.property('debug.full.ApiKey') ] } } } AndroidManifest.xmlgradle.properties (глобальный) Если его нет, то необходимо создать и расположить по пути /.gradle. release.demo.ApiKey="your_key" debug.demo.ApiKey="your_key" release.full.ApiKey="your_key" debug.full.ApiKey="your_key" default.ApiKey="your_key" Глобальный файл нужен только если код будет загружен в публичный репозиторий, так как он игнорируется системами контроля версий (актуально для библиотек). В противном случае можно использовать gradle.properties проекта. источник
Комментариев нет:
Отправить комментарий