Ich helfe das Guardian Project unter NetCipher aus. Aus alten Gründen möchten sie ihre bestehende Projektstruktur beibehalten, die auf Eclipse basiert. Anstatt jedoch die Tests in einem tests/
Unterverzeichnis der Bibliothek durchzuführen, gingen sie mit einem Peer-Projektmodell. Also, von der Repo-Wurzel, libnetcipher/
ist die Bibliothek und netciphertest/
sind die Instrumentierungstests.Wie weisen wir androidTest auf ein Peer-Eclipse-Projekt hin?
Die Instrumentierung Tests wurden eingestellt nie bis zum Gradle, sich im Gegensatz zu libnetcipher/
baut. Also, ich bin Hinzufügen von Material zu der libnetcipher/build.gradle
Datei, um es seine androidTest
sourceSet in das Verzeichnis netciphertest/
verweisen, anstatt seine normale Lage.
Dies funktioniert:
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']
}
jedoch die doppelten ../netciphertest
Bits Icky sind. Ich könnte das natürlich als Konstante definieren, um die Duplizierung zu minimieren. Ich versuche herauszufinden, ob es eine bessere Lösung für das ganze Problem gibt.
Zum Beispiel funktioniert das nicht:
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']
}
Ich dachte, dass vielleicht die srcDirs
und srcFile
Zeug zum setRoot()
Wert relativ interpretiert werden könnte, aber sie scheinen auf die eigene Wurzel des Projekts interpretiert relativ zu werden .
Gibt es eine elegantere Lösung als das, was ich habe zu arbeiten?
"dann ist das weniger" icky "?" - Etwas. Ich suchte jedoch eine allgemeinere Antwort. Während dies meinem spezifischen Szenario helfen würde, genug, um das "ick" auf ein vernünftiges Niveau zu senken, hoffte ich, dass es eine bessere Lösung gab, die solche vereinfachenden Annahmen nicht machte. Ich werde diese Säuberung wahrscheinlich tun, wenn keine andere bessere Option entsteht. Vielen Dank! – CommonsWare
Ich las über [Injektion] (https://docs.gradle.org/current/userguide/organizing_build_logic.html#sec:injected_configuration) auch, vielleicht könnte eine build.gradle in den 'netciphertest' Ordner setzen arbeiten, dann "injection" dieses SourceSet in das andere Modul. –
@CommonsWare Ich habe gesehen, dass Ihre Pull-Anfrage auf Github akzeptiert wurde. Hast du am Ende einen besseren Ansatz gefunden? –