metodos - que es android studio
Custom linting lib en android (2)
Mi equipo y yo desarrollamos aplicaciones de Android y decidimos las pautas de codificación que todos deberían seguir. Por lo tanto, comencé a implementar reglas de pelusa personalizadas según los siguientes enlaces:
El problema que estoy teniendo es implementar estas reglas de pelusa en base a un proyecto. Cuando ejecuto ./gradlew clean build test install
, como se especifica, se aplican las reglas y todo está bien. Sin embargo, cuando construyo la biblioteca aar con ./gradlew aarWrapper:assemble
y agregarlo a mi carpeta libs
las salpicaduras no funcionan.
build.gradle
siguiente a mi archivo build.gradle
para agregar la biblioteca
repositories {
flatDir {
dirs ''libs''
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
compile(name: ''aarWrapper-debug'', ext: ''aar'')
}
No estoy seguro de lo que me estoy perdiendo, pero cuando corro ./gradlew lint
ejecuta el linter pero no con mis reglas personalizadas ... Cualquier ayuda, consejo o sugerencia es muy apreciada.
EDIT 1
Aquí está la salida del terminal cuando se ejecuta gradle.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareAarWrapperDebugLibrary UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2421Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72421Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2421Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUi2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUtils2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportFragment2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportMediaCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportVectorDrawable2421Library UP-TO-DATE
:app:prepareComAndroidVolleyVolley100Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidAnswers138Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidBeta121Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlytics261Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2310Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesLocation961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMaps961Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesTasks961Library UP-TO-DATE
:app:prepareIoFabricSdkAndroidFabric1312Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:incrementalDebugJavaCompilationSafeguard UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:mergeDebugShaders UP-TO-DATE
:app:compileDebugShaders UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:transformClassesWithDexForDebug UP-TO-DATE
:app:mergeDebugJniLibFolders UP-TO-DATE
:app:transformNative_libsWithMergeJniLibsForDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
:app:validateSigningDebug
:app:packageDebug
:app:assembleDebug
BUILD SUCCESSFUL
Total time: 7.881 secs
EDIT 2
Proyecto bifurcado: https://github.com/apertomove/linette
build.gradle: https://github.com/apertomove/linette/blob/apertomove-linette/build.gradle
EDIT 3 Además de los enlaces de arriba, encontré esta post escrita por Jason Atwood. Nosotros también tenemos un servidor de CI ejecutando jenkins en el que podemos ejecutar nuestros controles e informar a los desarrolladores sobre errores basados en nuestras reglas de uso de pelusa. Esto funciona muy bien, sin embargo, está a un paso de distancia. Sería mucho más valioso y ahorraría tiempo ejecutar comprobaciones de pelusa desde la biblioteca cuando ejecutamos nuestros proyectos desde Android Studio, en lugar de comprometer nuestro código solo para descubrir que nuestro proyecto rompe las reglas.
@hopeman copie el archivo jar en la carpeta /.android/lint. Android seleccionará sus reglas de pelusa personalizadas.
He escrito una publicación sobre cómo agregar e integrar reglas de pelusa personalizadas en su aplicación de Android, puede echar un vistazo. También tiene enlaces a los repos de github que muestran cómo se hace en un proyecto de Android. Enlace a la publicación
La forma más fácil para mí era establecer la ruta ANDROID_LINT_JARS en el archivo gradlew y apuntarla al frasco de pelusas personalizado que está registrado en el sistema VCS, para que pueda ejecutarlo localmente también antes de presionar el código. Espero eso ayude.