¿Cómo apuntamos androidTest a un Peer Eclipse-Style Project?
Estoy ayudando al Proyecto Guardian en NetCipher . Por motivos legados, quieren mantener su estructura de proyecto existente, basada en Eclipse. Sin embargo, en lugar de tener las pruebas en una tests/
subdirectorio de la biblioteca, fueron con un modelo de proyecto de iguales. Así, fuera de la raíz de repo, libnetcipher/
es la biblioteca y netciphertest/
son las pruebas de instrumentación.
Las pruebas de instrumentación nunca fueron configuradas para las compilaciones de Gradle, a diferencia de libnetcipher/
sí mismo. Por lo tanto, estoy añadiendo cosas al archivo libnetcipher/build.gradle
para que apunte su androidTest
sourceset al directorio netciphertest/
, en lugar de su ubicación normal.
- Heredar JavaDoc desde Android SDK con Gradle
- Uso de la función gradleReference en cordova plugin.xml
- Doloroso Unity proyecto de exportación a Android cada construcción (estoy haciendo algo mal)
- Error: (3, 0) Causa: org / apache / commons / lang3 / StringUtils
- Generar JavaDocs con el complemento Android Gradle
Esto funciona:
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'] }
Sin embargo, los bits duplicados ../netciphertest
son icky. Podría definir eso como una constante para minimizar la duplicación, por supuesto. Estoy tratando de averiguar si hay un enfoque mejor a todo el problema.
Por ejemplo, esto no funciona:
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'] }
Pensé que quizás el srcDirs
y el srcFile
podrían ser interpretados relativo al valor setRoot()
, pero parecen ser interpretados relativo a la raíz del proyecto.
¿Hay una solución más elegante que lo que tengo trabajando?
- Gradle "manifiesto requiere un sustituto de posición" error, pero manifestPlaceholders suministra un valor
- Error de OpenCV Library con AndroidStudio
- Gradle: Android Studio hereda buildtype
- Gradle Método DSL no encontrado: 'apt ()'
- Prueba de prueba de Espresso en CircleCI
- AndroidStudio - No se pudo actualizar Gradle
- ¿Cómo vuelvo a empaquetar un AAR para la fusión del manifiesto gradle de Android?
- ¿Cómo veo las advertencias de Gradle en Android Studio?
Leyendo sobre la documentación de Gradle, no pude encontrar nada acerca de las vías absolutas relativas para los srcDirs
, pero parece que si acaba de dar src
que asumirá ./src
independientemente de la raíz que se estableció. Tal vez esto podría ser una solicitud de característica Gradle o podría funcionar como se esperaba en las versiones posteriores de Gradle? No estoy seguro, no mirar en él.
Dicho esto, asumiendo que usted no necesita aidl
, renderscripts
, o resources
(ya que no aparecen utilizados en el proyecto), entonces esto es menos "icky"?
androidTest { setRoot '../netciphertest' java.srcDirs = ['../netciphertest/src'] }
Todos los demás se configurará automáticamente de esta manera si no los anula y simplemente establece la raíz.
androidTest.manifest.srcFile = /NetCipher/netciphertest/AndroidManifest.xml androidTest.res.srcDirs = [/NetCipher/netciphertest/res] androidTest.assets.srcDirs = [/NetCipher/netciphertest/assets] // Override these, if you wish androidTest.resources.srcDirs = [/NetCipher/netciphertest/resources] androidTest.aidl.srcDirs = [/NetCipher/netciphertest/aidl] androidTest.renderscript.srcDirs = [/NetCipher/netciphertest/rs]
Puede imprimir las rutas dentro de Gradle y jugar con ella más si lo desea, incluyendo esta sección dentro del bloque sourceSets
.
println "androidTest.manifest.srcFile = ${androidTest.manifest.srcFile}" println "androidTest.java.srcDirs = ${androidTest.java.srcDirs}" println "androidTest.resources.srcDirs = ${androidTest.resources.srcDirs}" println "androidTest.aidl.srcDirs = ${androidTest.aidl.srcDirs}" println "androidTest.renderscript.srcDirs = ${androidTest.renderscript.srcDirs}" println "androidTest.res.srcDirs = ${androidTest.res.srcDirs}" println "androidTest.assets.srcDirs = ${androidTest.assets.srcDirs}"