2015-12-17 16 views
15

Stworzyłem niestandardowe buildTypes następująco:Android Studio: jak usunąć/odfiltrować warianty kompilacji dla domyślnego debugowania i wydania buildTypes i zachować tylko te, które używają niestandardowych buildTypes?

buildTypes { 
     releasefree.initWith(buildTypes.release) 
     releasefree { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     releasepro.initWith(buildTypes.release) 
     releasepro { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      applicationIdSuffix ".pro" 
     } 
     debugfree.initWith(buildTypes.debug) 
     debugfree { 
      shrinkResources true 
      applicationIdSuffix ".debug" 
      debuggable true 
     } 
     debugpro.initWith(buildTypes.debug) 
     debugpro { 
      shrinkResources true 
      applicationIdSuffix ".pro.debug" 
      debuggable true 
     } 
    } 

ja nie zamierzam użyć domyślnego debugowania i uwalniania zbudować rodzajów kiedykolwiek i chcą, aby usunąć je z listy wariantów budowy. Mam więcej niż kilka smaków, a lista wariantów jest zbyt duża. Usunięcie wariantów z domyślnymi typami debugowania i wydawania pomoże, ponieważ nigdy ich nie użyję.

Próbowałem za pomocą filtra wariant następująco ale to nie działa

android.variantFilter { variant -> 
    if(variant.buildType.name.endsWith('Release') || variant.buildType.name.endsWith('Debug')) { 
     variant.setIgnore(true); 
    } 
} 

Czy jest coś złego w drodze mam filtrowanie warianty, czy jest to po prostu niemożliwe, aby usunąć warianty z domyślnym i debugowania zwróć typy kompilacji.

Odpowiedz

17

Wyliczyłem to. To był naprawdę głupi błąd z mojej strony. Powyższy wariant filtru działa. Wszystkie nazwy są pisane małymi literami, a wielkie litery w łańcuchach, z którymi się porównywałem, były winowajcami.

Zmiana na następujące (co porównywania ciągów znaków małymi literami) sprawiły, że działa zgodnie z oczekiwaniami:

android.variantFilter { variant -> 
    if(variant.buildType.name.endsWith('release') || variant.buildType.name.endsWith('debug')) { 
     variant.setIgnore(true); 
    } 
} 

czy to

android.variantFilter { variant -> 
    if(variant.buildType.name.equals('release') || variant.buildType.name.equals('debug')) { 
     variant.setIgnore(true); 
    } 
} 
+0

Dzięki Zastanawiałem się też, jak to zrobić. – Jim