Android代码优化和项目改进

代码优化

对Bitmap的优化:

Android 提高代码质量-多种检测方案

lint

检测范围

  • 潜在的bug
  • 可优化的代码
  • 安全性
  • 性能
  • 可用性
  • 可访问性
  • 国际化

插件使用

Android Studio 自带。
通过Gradle运行lint

  • 注意:此时如果检测项目,应该把app的gradle配置,和module的gradle配置,加上如下结构,否则报错
android {
   ...
    lintOptions {
          abortOnError false
     }
    ...  
}
  • Windows
gradle lint
  • Linux 或 mac
  ./gradlew lint
  • 单独检测模块文件或者某个目录

AS工程选择module,目录或者文件,右键选择Analyze----model----Inspect Code。然后配置就好了
具体查询文档即可,或者google搜索

findBugs

检测范围

针对java代码

  • 常见的代码错误,序列化错误
  • 肯能导致错误的代码,如空指针引用
  • 国际化相关问题:如错误字符串转换
  • 可能受到恶意攻击,如访问权限修饰符的定义等
  • 多线程的正确性:如多线程编程时常见的同步,线程调度问题。
  • 运行时性能问题:如由变量定义,方法调用导致的代码抵消问题

插件使用

AS 里面插件安装FindBugs-IDEA
添加plugin apply plugin:'findbugs'
定义任务,指定输出格式

参考文章
script 代码

task findbugs(type: FindBugs) {
    ignoreFailures = false
    effort = "default"
    reportLevel = "medium"
    excludeFilter = new File("${project.rootDir}/findbugs/findbugs-filter.xml")
    classes = files("${project.rootDir}/app/build/intermediates/classes")
    source = fileTree('src/main/java/')
    classpath = files()
    reports {
        xml.enabled = false
        html.enabled = true
        xml {
            destination "$project.buildDir/findbugs/findbugs-output.xml"
        }
        html {
            destination "$project.buildDir/findbugs/findbugs-output.html"
        }
    }
}

不要忘记添加 findbugs/fingdbugs-filter.xml



    
        
        
    
    
        
    

如果报错,添加如下节点即可解决




    
        
        
    
    
        
    
    
    
    
         
    

PMD
它跟Findbugs类似,但是它不是检测字节码,它是直接检测源代码。它使用静态分析来发现错误。它们的检测方法不同,可以取到互补的作用

检测范围

  • 可能的bug——空的try/catch/finally/switch块。
  • 无用代码(Dead code):无用的本地变量,方法参数和私有方法。
  • 空的if/while语句。
  • 过度复杂的表达式——不必要的if语句,本来可以用while循环但是却用了for循环。
  • 可优化的代码:浪费性能的String/StringBuffer的使用。

插件使用与findBugs类似

task pmd(type: Pmd) {
    ruleSetFiles = files("${project.rootDir}/config/quality/pmd/pmd-ruleset.xml")
    ignoreFailures = false
    ruleSets = []

    source 'src'
    include '**/*.java'
    exclude '**/gen/**'

    reports {
        xml.enabled = false
        html.enabled = true
        xml {
            destination "$project.buildDir/reports/pmd/pmd.xml"
        }
        html {
            destination "$project.buildDir/reports/pmd/pmd.html"
        }
    }
}

参考规则xml配置

CheckStyles
这个工具用来自动检测java源码。启动之后,可以按照制定的规则对java源码进行检查,被将所有的不符合规范的地方生成报告通知给你。

检测范围

  • 注解
  • javadoc注释
  • 命名规范
  • 文件头
  • 导入包规范
  • 尺寸设置
  • 空格
  • 正则表达式
  • 修饰符
  • 代码块
  • 编码问题
  • 类设计问题
  • 重复、度量以及一些杂项

使用

导入plugin

apply plugin: 'checkstyle'

设置CheckStyle的版本

checkstyle {
    toolVersion '6.1.1'
    showViolations true
}

配置任务

task checkstyle(type: Checkstyle) {
    ruleSetFiles = files("${project.rootDir}/checkstyle/zcw-checkstyle.xml")
    ignoreFailures = false
    ruleSets = []

    source 'src'
    include '**/*.java'
    exclude '**/gen/**'
    exclude 'androidTest/**'
    exclude 'test/**'

}

未雨绸缪

  • 主动提前添加资源国际化划分(即使你的程序很小,不可能发到国外,尽量提早支持,至少从架构和需求完整性考虑好的。一般中国,韩国,英语,香港,澳门 就够了)

  • 对布局的动态管理和拆分提前做。

内存检测

工具

bugtags

LeakCanary

请求更新调优

Volley

OkHttp

Retrofit

HttpClient

待续。。。

你可能感兴趣的:(Android代码优化和项目改进)