# CloudDataStoreRetryLint **Repository Path**: nky/CloudDataStoreRetryLint ## Basic Information - **Project Name**: CloudDataStoreRetryLint - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-10-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 目的 === 在项目里面的一个数据仓库类`DataRepository`要用到 > 当发生特定的网络错误时, 要发起重新登录, 并在登录成功后继续发送之前的业务请求 这个逻辑, 刚刚好可以通过`Rx#retryWhen`来实现,同时实现起来也比较的简单, 有一个缺点 **每一个网络请求都要知道是否要做这个逻辑**, 作为一个解决方案, 使用自定义的lint来确保该行为的必然发生. ---- 实现 ==== 1. `./gradlew --info` 会将生成好的`lint rules`放到`~/.android/lint/`目录下面 2. 项目目录里面可以直接`./gradlew lintDevDebug --info`来执行该`lint rules` 过程 === 由于要在`CI`里面运行, 需要在运行该`rules`的项目中增加如下带代码 ``` //gradlew ANDROID_LINT_JARS="$APP_HOME/libs/lint/CloudDataStoreRetryLint.jar" exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" ``` ``` //gradlew.bat set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar set ANDROID_LINT_JARS=%APP_HOME%\libs\lint\CloudDataStoreRetryLint.jar ``` 未完成的任务 === 1. 现在只能在Terminal里面进行执行该`Lint Rules`, 目标项目的`Inspect Code`执行该`Lint Rules`结果错误的 没有找到很好的调试方法, 待找到合适的方法再进行调试优化 2. 该项目的`TestCase`只能在`Terminal`里面执行, 在AndroidStudio里面一直运行失败.