Pomagam w projekcie Guardian pod numerem NetCipher. Ze względów starszych chcą zachować dotychczasową strukturę projektu opartą na Eclipse. Jednak zamiast mieć testy w podkatalogu biblioteki tests/
, poszły z modelem projektu równorzędnego. Tak więc, z korzenia repo, libnetcipher/
jest biblioteka i netciphertest/
są testy oprzyrządowania.W jaki sposób kierujemy androidTest do projektu Peer Eclipse-Style?
Testy oprzyrządowania nigdy nie zostały ustawione dla wersji Gradle, w przeciwieństwie do samego libnetcipher/
. Dodaję więc pliki do pliku libnetcipher/build.gradle
, aby wskazywały na jego zestaw źródeł androidTest
na katalog netciphertest/
, a nie na jego normalne położenie.
to działa:
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']
}
Jednak zduplikowane ../netciphertest
bity są icky. Mogłabym to oczywiście zdefiniować jako stałą, aby zminimalizować duplikację. Próbuję ustalić, czy istnieje lepszy sposób podejścia do całego problemu.
Na przykład, to nie działa:
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']
}
Myślałam, że być może rzeczy srcDirs
i srcFile
może być interpretowane w stosunku do wartości setRoot()
, ale wydają się być interpretowane w stosunku do własnych korzeni projektu .
Czy istnieje bardziej eleganckie rozwiązanie niż to, które mam?
"Czy to jest mniej" icky "?" - nieco. Szukałem jednak bardziej ogólnej odpowiedzi. Chociaż to pomogłoby w moim konkretnym scenariuszu, wystarczającym do doprowadzenia "niskiego" poziomu do rozsądnych poziomów, miałem nadzieję, że istnieje lepsze rozwiązanie, które nie czyni tych uproszczających założeń. Prawdopodobnie wykonam to czyszczenie, jeśli nie pojawi się żadna inna lepsza opcja. Dzięki! – CommonsWare
Czytałem również o [zastrzyku] (https://docs.gradle.org/current/userguide/organizing_build_logic.html#sec:injected_configuration), więc może włożenie pliku build.gradle do folderu 'netciphertest' może działać, "wstrzykiwanie" tego zestawu źródłowego do drugiego modułu. –
@CommonsWare Widziałem, że twoje żądanie ściągnięcia zostało zaakceptowane na Github. Czy znalazłeś lepsze podejście? –