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
.
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
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