В build.gradle
, я вкус продукта установить:Android, Gradle, ароматы продуктов и манифест
productFlavors
{
AlternateFlavour
{
applicationId "com.myapp.alternateflavour"
}
}
Затем в разделе sourceSets, я использую различные ресурсов, активы и проявленные каталоги для этих вкусов:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
AlternateFlavour {
manifest.srcFile 'manifest-tmp/AlternateFlavour/AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res-tmp/AlternateFlavour']
assets.srcDirs = ['assets-tmp/AlternateFlavour']
}
}
ОК до сих пор.
В этом манифесте используется ароматом, который частично автоматически, у меня есть:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.myapp"
android:versionCode="1010001"
android:versionName="V1.1.0.1" >
, но в первоначальном манифесте в корневом проекте заключается в следующем:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.myapp"
android:versionCode="1010000"
android:versionName="V1.1.0.DEBUG" >
Это приводит к сбою Gradle:
Error:
Attribute [email protected] value=(1010001) from AndroidManifest.xml:4:5-28
is also present at AndroidManifest.xml:4:5-28 value=(1010000).
Attributes of <manifest> elements are not merged.
Почему т чтобы слиться с оригинальным манифестом вообще, когда я указал, что он должен искать в другом месте?
И как я могу остановить это?
Я ожидаю, что некоторые будут подвергать сомнению, почему я так делаю это вообще, или действительно, почему я не использую предложенную структуру проекта вкуса. Ну, мне нужен нормальный манифест для использования за пределами Gradle, например. для развертывания из Eclipse (по одной штуке одновременно, пожалуйста!), и мне также нужны версии, которые будут внедрены процессом сборки.
Итак, в первую очередь, здесь много разных вкусов - я просто попытался сохранить данный пример простым. Я не могу (AFAIK) уйти с удалением атрибутов из исходного манифеста, потому что это тот, который используется при развертывании IDE. Однако я мог бы создать третий, без атрибутов, и использовать Gradle по умолчанию. Кажется чрезмерным! –
@RobPridham: «это тот, который используется при развертывании IDE» - если вы используете Android Studio, инструмент Build Variants контролирует, что используется IDE. – CommonsWare
Действительно. Пока нет, к сожалению, все еще используется Eclipse & ADT для этой разработки, для множества хороших (хотя и менее хороших с течением времени) причин. –