Ich brauche eine Aufgabe, was am Ende laufen wird. Sagen wir etwas println
. Ich habe mehrere Beispiele gesehen, wie man eine Aufgabe am Ende ausführt, und sie hängen immer von anderen Aufgaben ab, also bekomme ich nicht wirklich, wie es geht, und ich habe keine Aufgaben. Denn jetzt habe ich einige Stück Code:Aufgabe einmal am Ende in Gradle ausführen
if (releaseBol)
{
// Some of my code
// Run twice, one for lab and other for prod
println fileName
}
Das Stück Code laufen zweimal, einmal für Labor Geschmack und eine für prod Geschmack falls ich laufen:
MyApp:assembleRelease -PRELEASE=1
Ich brauche diesen Frieden Code nur einmal laufen, dafür muss ich es einmal am Ende laufen.
Meine volle gradle:
import org.tmatesoft.svn.core.wc.*
apply plugin: 'com.android.application'
def BuildNumberFile = new File('./BuildNumber.txt')
def BuildNumber = 'BRND'
def _versionName = '1.0.1'
def _applicationId = 'com.myapp.android.pic'
def _versionCode = 17
def fileName = ''
def obfuscated = false
def releaseBol = false
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
lintOptions {
abortOnError false
}
def lines = BuildNumberFile.readLines()
BuildNumber = 'S'+lines.get(0)
defaultConfig {
applicationId _applicationId
minSdkVersion 15
targetSdkVersion 23
versionCode _versionCode
versionName _versionName
multiDexEnabled true
resValue 'string', 'BUILD_NUMBER_RES', BuildNumber
}
if (project.hasProperty('RELEASE') && project.ext.RELEASE == '1')
releaseBol = true
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(
output.outputFile.parent,
output.outputFile.name.replace(".apk", "-${variant.versionName}." + BuildNumber + "-" + getSvnRevision() + ".apk"))
fileName=output.outputFile.name
}
variant.assemble.doLast {
variant.outputs.each { output ->
println "aligned " + output.outputFile
println "unaligned " + output.packageApplication.outputFile
File unaligned = output.packageApplication.outputFile;
File aligned = output.outputFile
if (!unaligned.getName().equalsIgnoreCase(aligned.getName())) {
println "deleting " + unaligned.getName()
unaligned.delete()
}
}
if (releaseBol) {
// Some of my code
// Run twice, one for lab and other for prod
println fileName
}
}
}
signingConfigs {
release {
storeFile file('myapp')
storePassword "myapp123"
keyAlias 'myapp'
keyPassword "myappmobile"
}
}
productFlavors {
prod {
}
lab {
}
}
buildTypes {
release {
minifyEnabled obfuscated
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-android.txt'
signingConfig signingConfigs.release
}
}
dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g"
jumboMode true
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':trunk')
}
Es hilft mir nur, wenn Sie einige println
zu diesem gradle hinzufügen können, die am Ende laufen einmal wird.
Danke, es ist das, was ich gefragt ... aber ich muss in der Funktion BA stellen, wenn (releaseBol) {} und releaseBol wird dort nicht erreicht. Ich sehe BA läuft nach "BUILD ERFOLGREICH", aber ich brauche es vor – Dim
@Dim, können Sie 'releaseBol' im Projektbereich definieren und dann verweisen Sie über' Projekt' Variable. Ich schätze, es ist unmöglich, es ohne BUILD SUCCESSFUL auszuführen, ohne einen Task Finalizer zu verwenden. – Opal
@Dim, siehe die Bearbeitung - die letzte ist wahrscheinlich das, wonach Sie suchen. – Opal