Sto aiutando il progetto Guardian su NetCipher. Per ragioni ereditate, vogliono mantenere la struttura del progetto esistente, basata su Eclipse. Tuttavia, anziché avere i test in una sottodirectory tests/
della libreria, sono andati con un modello di progetto peer. Quindi, al di fuori della radice del protocollo, libnetcipher/
è la libreria e netciphertest/
sono i test di strumentazione.Come si punta AndroidTest a un progetto Peer Eclipse-Style?
I test di strumentazione non sono mai stati impostati per build Gradle, a differenza dello stesso libnetcipher/
. Quindi, sto aggiungendo cose al file libnetcipher/build.gradle
per fare in modo che punti il suo sourceet androidTest
nella directory netciphertest/
, piuttosto che nella sua posizione normale.
Questo funziona:
androidTest {
manifest.srcFile '../netciphertest/AndroidManifest.xml'
java.srcDirs = ['../netciphertest/src']
resources.srcDirs = ['../netciphertest/src']
aidl.srcDirs = ['../netciphertest/src']
renderscript.srcDirs = ['../netciphertest/src']
res.srcDirs = ['../netciphertest/res']
assets.srcDirs = ['../netciphertest/assets']
}
Tuttavia, il duplicato ../netciphertest
bit sono icky. Potrei definirlo come una costante per minimizzare la duplicazione, ovviamente. Sto cercando di capire se c'è un approccio migliore all'intero problema.
Ad esempio, questa non funziona:
androidTest.setRoot('../netciphertest')
androidTest {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
ho pensato che forse la roba srcDirs
e srcFile
potrebbe essere interpretato in relazione al valore setRoot()
, ma sembrano essere interpretato relativo alla propria radice del progetto .
C'è una soluzione più elegante di quella che ho lavorato?
"allora questo è meno" icky "?" - un po '. Stavo cercando una risposta più generale, però. Mentre ciò avrebbe aiutato il mio scenario specifico, abbastanza da portare lo "stallo" a livelli ragionevoli, speravo che ci fosse una soluzione migliore che non rendesse questo tipo di ipotesi semplificative. Probabilmente effettuerò questa pulizia se non emergerà un'altra opzione migliore. Grazie! – CommonsWare
Stavo leggendo su [injection] (https://docs.gradle.org/current/userguide/organizing_build_logic.html#sec:injected_configuration), quindi forse mettere un build.gradle nella cartella 'netciphertest' potrebbe funzionare, quindi "iniettare" quel sourceSet nell'altro modulo. –
@CommonsWare Ho visto che la tua richiesta pull è stata accettata su Github. Hai finito per trovare un approccio migliore? –