2017-03-02 2 views
2

Wie würde ich nur einen Geschmack verschleiern gehen.obfuscate nur eine Geschmacksrichtung

Leider basiert Flavour 2 auf einem Modul (jar), das einige Duplikate von Klassen verwendet, und ich kann es aufgrund der Art der Einrichtung nicht verschleiern. (3rd party) Also möchte ich den Geschmack nicht verschleiern.

Ich scheine nicht in der Lage, MinifyENabled false im Abschnitt Flavours zu definieren, oder fügen Sie den Geschmack zum Build-Abschnitt.

Hinweis, es gibt insgesamt 6 Geschmacksrichtungen. Der Wunsch ist Aromen zu wählen, und wählen die

buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    productFlavors { 
     flavour1{ 
      applicationId "uk.co.company.flavour1" 
     } 
     flavour2{ 
      applicationId "uk.co.company.flavour2" 
     } 
    } 

Antwort

2

So lange verschleiert werden sollte, da es nicht vorhanden minifyEnabled in ProductFlavor DSL-Objekt ist, dann müssen Sie eine andere buildType erstellen, zum Beispiel releaseMinified zusammen mit Standard release.

buildTypes { 
    release { 
     minifyEnabled false 
    } 
    releaseMinified { 
     minifyEnabled true 
    } 
} 

productFlavors { 
    minifiableFlavor{} 
    nonMinifiableFlavor{} 
} 

Und aktivieren Sie diesen Buildtyp nur für den Geschmack, der braucht die:

android.variantFilter { variant -> 
    if (variant.buildType.name.equals('releaseMinified') && !variant.getFlavors().get(0).name.equals('nonMinifiableFlavor')) { 
     variant.setIgnore(true); 
    } else if (variant.buildType.name.equals('release') && variant.getFlavors().get(0).name.equals('nonMinifiableFlavor')){ 
     variant.setIgnore(true); 
    } 
} 

Dann werden Sie am Ende mit:

Build types

+0

eine ausgezeichnete Idee. Werde es versuchen. Vielen Dank :) – Doomsknight