bonjour,

J'ai des tests androids qui fonctionnent en debug et en release sur gitlab ci, j'ai pas de problème

Mais dans android studio, le testbuildtype est valorisé par défaut à debug, je me base sur la sélection dans AS du build variant que je souhaite avoir
debug / release.

Si je choisi release, comment récupérer la variante sélectionnée dans le app build.gradle, ensuite je dois valoriser testbuildtype 'release' en fonction de la variante sélectionnée, comment faire cela.

j'ai bien essayé ca, mais ca ne marche pas, la variable est bien correctement alimentée. j'utilise un gradle 4.4 et un AS 3.1.2

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
def getVariant() 
Gradle gradle = getGradle()
String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
if ( tskReqStr.contains('Release") ) 
        variant='release'
else 
        variant='debug'
return variant
 
def variant=getVariant()
android {
       buildType {
             release {
             }
             debug {
             }
 
            testBuildType = variant  // marche pas, les tests android sont en erreur sur les annotations (en rouge) non couvert, les android tests sont non executable
            println "test : "testBuildType
ou
            testBuildType  = 'release'  // ca fonctione, tout marche en release
       }
}
je pense que la ligne ci-dessous fait planter gradle, les testandroid ne sont pas couvert et sont en erreurs et ne peuvent être lancé. manque un truc quelque part. si je hardcode sans cette ligne ca marche.
hors j'ai besoin de recuperer la task generateReleaseSources [variante sélectionner action] ou AssembleRelease [rebuild action], de ca je peux determiner la variante en testant la ligne gradle task declenchée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
le test complet app build.gradle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
import java.util.regex.Matcher
import java.util.regex.Pattern
 
apply plugin: 'com.android.application'
 
def variantSelected = getCurrentVariant() // ca plante
//def variantSelected = 'release' // ca marche
 
android {
 
/*
    if (getGradle().getStartParameter().getTaskRequests().toString().contains("Release")) {
        testBuildType 'release'
    } else if (getGradle().getStartParameter().getTaskRequests().toString().contains("Debug")) {
        testBuildType 'debug'
    }
*/
 
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.jpbor.myapplication"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnit4"
    }
 
    buildTypes {
        println "variantSelected : " + variantSelected
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-test-rules.pro'
            minifyEnabled true
            if (variantSelected.equalsIgnoreCase("release")) {
                testBuildType variantSelected
            }
        }
        debug {
            debuggable true
            if (variantSelected.equalsIgnoreCase("debug")) {
               testBuildType variantSelected
            }
        }
    }
 
    // test from gitlab
 
    if (System.hasProperty("testBuildType")) {
        def var = System.getProperties().get("testBuildType")
        testBuildType=var
    }
    println "testBuildType " + testBuildType
}
 
def getCurrentVariant() {
    Gradle gradle = getGradle()
    String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
 
    println "tskReqStr :" + tskReqStr
 
    if (tskReqStr.contains("assemble") || tskReqStr.contains("generate"))
        if (tskReqStr.contains("Release"))
            return "release"
        else
            return "debug"
 
    return ""
}
 
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    androidTestImplementation 'junit:junit:4.12'
}
log
Executing tasks: [:app:generateReleaseSources]
 
Configuration on demand is an incubating feature.
variantSelected : release
testBuildType release
:app:preBuild UP-TO-DATE
:app:extractProguardFiles UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:compileReleaseAidl UP-TO-DATE
:app:compileReleaseRenderscript UP-TO-DATE
:app:checkReleaseManifest UP-TO-DATE
:app:generateReleaseBuildConfig UP-TO-DATE
:app:prepareLintJar UP-TO-DATE
:app:mainApkListPersistenceRelease UP-TO-DATE
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources UP-TO-DATE
:app:mergeReleaseResources UP-TO-DATE
:app:createReleaseCompatibleScreenManifests UP-TO-DATE
:app:processReleaseManifest UP-TO-DATE
:app:splitsDiscoveryTaskRelease UP-TO-DATE
:app:processReleaseResources UP-TO-DATE
:app:generateReleaseSources UP-TO-DATE
 
BUILD SUCCESSFUL in 0s
14 actionable tasks: 14 up-to-date
Je pense qu'il ne prend plus en compte le testbuildtype modifier quand il a commencé son cycle de build AS, alors que le gradlew -DtestBuildType=release est passé avant son démarrage de build.
J'ai épuisé toutes mes pistes pour l'instant
merci pour vos infos
JP