2013-08-20 9 views
7

Sto migrando il mio progetto Android al sistema gradle build e non riesco a importare il mio progetto Android dal mio progetto Android di Integration Test.Crea test apk Android usando il sistema gradle build

Utilizzo la configurazione multiprogetto con diverse librerie Android e funziona benissimo, ma sto riscontrando un problema durante l'impostazione del mio progetto di test con impostazioni multi-progetto. Per ragioni esterne ho bisogno di continuare ad usare questa struttura.

MyProject/ 
| settings.gradle 
+ MyApp/ 
    | build.gradle 
    | src 
    | res 
    | libs 
+ Instrumentation-Tests/ 
    | build.gradle 
    | src 
    | res 
    | libs 

i miei file di configurazione correnti assomigliano:

settings.gradle:

include ':MyApp', 'Instrumentation-Tests' 

MyAppp/build.gradle:

apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile files('.....jar') 
    compile project('....') 
    compile 'com.android.support:support-v4:13.0.+' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 16 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

    } 
} 

E infine il mio Instrumentation-Tests/build.gradle:

apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile project(':MyApp') 
    compile files('.....jar') 
    compile 'com.android.support:support-v4:13.0.+' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 16 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 
    } 
} 

Quando corro gradle compileDebug il progetto MyApp è compilato correttamente (e tutti i suoi moduli) ma la compilazione Instrumentation-Tests non riesce perché non riesce a trovare le classi android definite in MyApp.

Ho letto la documentazione e un sacco di posti, ma non ho potuto farlo funzionare, io anche provato ad utilizzare:

compile(project(':MyApp')) { transitive = true } 

quando si dichiara la dipendenza.

Qualcuno ha avuto lo stesso problema? Desidero includere l'output della dipendenza del progetto MyApp nel classpath della compilazione Instrumentation-Tests, ma non so se sia possibile utilizzare il plug-in Android gradle.

+0

Avete letto cose come questa: http://stackoverflow.com/questions/16586409/how-can-i-create-tests-in-android-studio e questo: http://tools.android. com/Tech-docs/new-build-system/user-guida # TOC-test? Mi chiedo se hai seguito quelle istruzioni ma hai cambiato la posizione dei sorgenti d'origine se avrebbe funzionato con la tua configurazione attuale. Probabilmente è necessario specificare le directory di origine del test relative alla radice del progetto. – jDutton

+0

Alla fine ho spostato tutto sulla struttura gradle, ho anche spostato tutti i miei test di strumentazione (unità e funzionale) all'interno della cartella InstrumentationTest e tutto funziona! – David

risposta

1

Questo non funzionerà (al momento) perché è possibile specificare solo i progetti di libreria come dipendenze.

Così, per il caso di compile project(':MyApp')MyApp avrebbe dovuto essere un progetto libreria di Android con apply plugin: 'android-library' nella sua build.gradle. Che certamente non ha senso.

Per avere un progetto di test separato, è necessario qualcos'altro (che sto ricercando personalmente).

MODIFICA: Dando per il test con Gradle, usa Ant per quello.

+0

Alla fine ho spostato tutto sulla struttura gradle, ho anche spostato tutti i miei test di strumentazione (unità e funzionale) all'interno della cartella Test di strumentazione e tutto funziona! – David

Problemi correlati