2016-09-26 4 views
0

In Android, möchten wir eine App mit verschiedenen Anwendungs-ID erstellen abhängig von der vorinstallierten App-Paket. So enthält es Geschmack in der Build-Gradle mit verschiedenen ApplicationId-Set.So machen Sie bedingte Build-Aufgabe auf Android Build Gradle

Aber wir wollen nicht, dass alle diese Varianten erstellt wurden, wir wollen nur den auf dem vorinstallierten App-Paketnamen basierenden Build erstellen, um ihn irgendwann auf dem Build-Server zu speichern.

Wenn

verwendet
task prepareA(dependsOn:['assembleADebug']){} 

task prepareB(dependsOn:['assembleBDebug']){} 

task prepareTest(dependsOn:['prepareA', 'prepareB']) {} 

Dann, wenn prepareTest genannt, beide prepareA und prepareB würde mit beiden ausgeführt assembleADebug und assembleBDebug ausgeführt werden.

Ich möchte nur entweder prepareA oder prepareB basierend auf einer Bedingungsprüfung (wenn ...) ausgeführt werden.

Antwort

0

Die Antwort, die ich nach einigen Stunden Untersuchung fand, ist, dass wir AfterEvaluate-Methode verwenden können, die ausgeführt werden würde, bevor dependsOn läuft.

Entfernen Sie die vordefinierten dependsOn die prepareA und prepareB.

Then 

afterEvaluate { 
    if (isPackageInstalled(packageName)) {    
     tasks.findByName("prepareTest").dependsOn("prepareA") 
    } else { 
     tasks.findByName("prepareTest").dependsOn("prepareB") 
    } 
} 
Verwandte Themen