2014-02-20 3 views
16

Я хотел бы определить другой атрибут манифеста meta-data в зависимости от вкуса продукта. я пытался сделать это,android + gradle: разные метаданные манифеста на вкус

src/ 
    main/ 
    AndroidManifest.xml 
    prod/ 
    AndroidManifest.xml 
    dev/ 
    AndroidManifest.xml 

main манифеста является полным, но prod и dev версии немногочисленны и содержат только мета-данные,

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

    <meta-data android:name="analytics" 
      android:value="true"/> 

</manifest> 

это мое понимание того, что аромат манифестов сливаются с основным. в моем build.gradle, я делаю,

android { 
    productFlavors { 
    prod { 
     manifest.srcFile "prod/AndroidManifest.xml" 
    } 
    dev { 
     manifest.srcFile "dev/AndroidManifest.xml" 
    } 
    } 
    ... 
} 

однако, найти я пытаюсь построить "assembleProdDebug", я получаю это,

* What went wrong: 
A problem occurred evaluating project ':Inventory'. 
> No signature of method: org.gradle.api.java.archives.internal.DefaultManifest.srcFile() is applicable for argument types: (java.lang.String) values: [prod/AndroidManifest.xml] 

спасибо.

ответ

19

В вашем файле градиента вам не нужно определять путь к манифесту.

использование:

productFlavors{ 
prod {} 
dev{} 
} 

Убедитесь, что структура каталогов правильно: каталог с именем вкуса, для каждого аромата, под Src директории, и в каждой директории положить файл манифеста первостепенному.

Gradle объединит файлы.

PS - если тэг метаданных находится внутри тега приложения, вы также должны применить тег приложения в переопределяющем манифесте.

+0

спасибо, вам удалось поймать обе мои ошибки. –

Смежные вопросы