2017-04-10 1 views
0

En travaillant avec les versions d'android, j'essaie d'hériter d'une autre version et de surcharger une classe dans la classe parent. Tout semble et fonctionne parfaitement, sauf que la classe cible apparaît comme dupliquée. Je suppose qu'il ya un moyen d'exclure la classe la saveur mère de sourceSets comme:Exclure un fichier spécifique de sourceSets

sourceSets { 
    benchmark { 
     java { 
      srcDirs = ['src/main/java', 'src/offline/java', 'src/benchmark/java'] 

      exclude { '**/Facade.java' in sourceSets.offline.files } 
     } 
    } 
} 

que quelqu'un peut me aider. Merci!

Répondre

0

au lieu d'hériter d'une autre saveur, utilisez flavor dimensions

android { 
    ... 


    flavorDimensions "version", "online" 


    productFlavors {  
     benchmark { 
      dimension "version" 
      ... 
     } 

     standard { 
      dimension "version" 
      ... 
     } 

     online { 
      dimension "online" 
      ... 
     } 

     offline { 
      dimension "online" 
      ... 
     } 
    } 
    //optionally filter combinations you don't want 
    variantFilter { variant -> 
     if (variant.flavors*.name.contains("online") && variant.flavors*.name.contains("benchmark")) { 
      variant.ignore = true 
     } 
    } 
} 

Mettez une version de facade.java dans src\benchmark\java\com\yourcompany\namespace\facade.java

Mettez la version alternative à src\standard\java\com\yourcompany\namespace\facade.java

Les fichiers qui sont toujours les mêmes, quel que soit la saveur de construction est laissée dans le répertoire standard, src\main\java\com\yourcompany\namespace\