AndroidSDK工具详解

本文详细介绍了Android SDK的各个组成部分,包括SDK概述、lint工具的使用、以及如何在Android Studio和命令行中使用lint进行代码检查。此外,还提到了lint检查的常见问题和优化建议,如图片资源的优化、布局性能改进等。
摘要由CSDN通过智能技术生成

AndroidSDK工具详解

SDK概述

SDK:(software development kit) 软件开发工具包。一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

Android SDK提供了你的API函数库和开发工具,建立,测试和调试Android应用程序。
Android SDK目录下有很多文件夹,主要都是干什么的呢?(斜体的表示新版本的sdk找不到该目录,或者该目录下没有内容)

  *1. add-ons 这里面保存着附加库,比如Google Maps,当然你如果安装了Ophone SDK,这里也会有一些类库在里面。
  2. docs 这里面是Android SDK API参考文档,所有的API都可以在这里查到。*

  3. market_licensing(licenses) 作为Android Market版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。

  4. platforms 是每个平台的SDK真正的文件,里面会根据API Level划分的SDK版本, 这里就以Android 2.2来说,进入后有一个android-8的文件夹,android-8进入后是Android 2.2 SDK的主要文件,其中ant为ant编译脚本,data保存着一些系统资源,images是模拟器映像文件,fastboot是刷机工具

  5. skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则是该版本的主要framework文件,tools目录里面包含了重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。

  6. platform-tools 保存着一些Android平台相关通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和 build-tools文件夹有些重复,主要是从android 2.3开始这些工具被划分为通用了。

  7. samples 是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主题开发Home则是android m5时代的主题设计原理。

  8. tools 作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库,而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是android模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。

  9. usb_driver 顾名思义,保存着android平台google官方机型的驱动如nexus one、nexus s,同时也有一些老机型驱动的支持,比如说htc dream、htc magic和motorola的droid。
  
  10. build-tools 保存着一些Android平台相关通用工具,比如adb、和aapt、aidl、dx等文件。
aapt即Android Asset Packaging Tool , 在SDK的build-tools目录下. 该工具可以查看, 创建, 更新ZIP格式的文档附件(zip, jar, apk). 也可将资源文件编译成二进制文件.
Adb 即android debug bridge 管理模拟器和真机的万能工具,ddms 调试环境
AIDL 即 Android Interface definition language 它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口
Emulator即android 的模拟器
dx:转化.class中间代码为dvlik中间代码,所有经过java编译的生成.class文件都需要此工具进行转换,最后打包进apk文件中.
Dexdump 即Android Emulator中可以找到一个名为dexdump的程序,通过dexdump可以查看出apk文件中的dex执行情况,粗略分析出原始java代码是什 么样的和Dot Net中的Reflector很像。

注意:这里会涉及到一个问题,就是build-tools后边会有不同的api版本号!

①buildeToolVersion是你构建工具的版本,这个版本号一般是API-LEVEL.0.0。 例如I/O2014大会上发布了API20对应的build-tool的版本就是20.0.0,在这之间可能有小版本,例如20.0.1等等。

②在ecplise的project.properties中可以设置sdk.buildtools=20.0.0。也可以不设置,不设置的话就是指定最新版本。而在android studio中是必须在build.gradle中设置。

③Android都是向下兼容的,你可以用高版本的build-tool去构建一个低版本的sdk工程,例如build-tool的版本为20,去构建一个sdk版本为18的工程!

https://developer.android.com/guide/topics/manifest/uses-sdk-element.html 平台版本对应的API级别

lint工具

  • sdk 16下layoutopt.bat改名为lint.bat了

什么是lint?

  • lint是android 16之后提供的新工具,它是一个代码扫描工具,能够帮助我们识别代码结构存在的问题。之前是layouttopt命令。两种形式,一种是命令行工具,另一个集成于Eclipse或者androidstudio中。

  • lint检查范围主要包括:

    • 布局性能(无用布局、嵌套布局、布局太多)

    • 未使用的资源

    • 不一致的数组大小

    • 国际化问题(硬编码)

    • 图标问题(重复的图标,错误的大小)

    • manefest文件的错误

lint有什么特点?

  • 这是一款使用起来非常简单的布局优化工具。他是android sdk带来的一个工具,自动分析你的布局,发现可能并不需要的布局元素,以降低布局复杂度

1、在as中使用lint

  • Android Studio使用Lint进行代码检查 找到Analyze目录下的Inspect Code检查代码选项点击(演示,如图2),还有建议修改的提示
  • 可在setting-inspections修改lint提示的级别,如图1

2、在命令行中使用lint

(演示项目位置 F:\eclipse_wp\zhaixiuuser)

  • lint指令集

lint –help 显示所有的指令及其含义

lint –help (eg:lint –help “suppress”) 查找指定主题的帮助文档

lint –list 列出所有的问题类别、具体id,及对应的解释 (比如下面的例子类别Usability:Icons 具体id:IconDuplicates)

lint –version 查看lint版本号

lint –exitcode ??如果找到错误,则将退出代码设置为1??

lint –html 将检测出的的报告到处在report file path下,如果存在则覆盖。(eg.lint –html D:\Users\4399-1126\Desktop\report2.htmlF:\eclipse_wp\zhaixiuuser)

lint –show 显示所有的问题及对应的解释

lint –show 显示指定的问题或指定类型下的所有问题的完整解释(eg lint –show Usability:Icons 列出这一类型下的所有问题id及对应的解释lint –show IconDuplicates,IconDuplicatesConfig:指定id )

lint –disable 禁用类别或特定问题的列表,列表用逗号隔开 eg:lint –disable HardcodedText F:\eclipse_wp\zhaixiuuser

lint –enable 启用特定问题的列表。默认检查所有问题,加上这个特别启用的,列表用逗号隔开

lint –check 只检查这里指定的问题,逗号隔开(只检查国际中文字编码的问题:lint –check HardcodedText F:\gitlab\m4399-opreate-sdk2 –html D:\Users\4399-1126\Desktop\report444.html)

lint -w或者lint –noworn 只检查错误,不检查警告

lint -Wall 检查所有的警告,包括那些默认关闭的

lint -Werror 将所有的警告视为错误

lint –config 使用给定的配置文件,以确定是否启用或禁用的问题。如果一个项目包含一个lint.xml文件,则默认就按照该文件去检测,无需用该指令。eg:lint –config D:\Users\4399-1126\Desktop\lint.xml F:\eclipe_wp\zhaixiuuser

lint –quiet 不显示检测过程 (eg:lint –quiet –html D:\Users\4399-1126\Desktop\report3.html F:\eclipse_wp\zhaixiuuser)

lint –fullpath 检测报告显示的文件路径使用全路径

lint –showall 不截取长信息列出可选的位置等等。。(跟lint xxx一样)

–nolines 不输出源代码行
–url filepath=url 用url取代本地html链接。、、
–simplehtml 跟–html一样。。。
–xml 导出xml文件。。
–resources

:只检测src,不检测res(dir什么作用???)
–sources :只检测res,不检测src
–lib :res、src都检测,lib不检测
–classpath:。。。。暂时不懂~~

HTML报告

命令行工具也能生成 HTML报告.它有如下优势:
a.每个错误的代码都有更详细的解释,还有提供更多信息属性的超链接
b.能指出错误代码的所在的行数
c.它能直接定位到源码的链接
d.对于图标的错误, 图标本身就显示在报告中,方便对比

lint检查出的一些问题描述

  • Set android:baselineAligned=”false” on this element for better performance
    如果LinearLayout被用于嵌套的layout空间计算,它的android:baselineAligned属性应该设置成false,以加速layout计算
    android:baselineAligned=”false”

  • This LinearLayout layout or its RelativeLayout parent is useless;
    多余的Linearlayout或者RelativeLayout
    删除即可

  • This tag and its children can be replaced by one and a compound drawable
    有时候我们可能会用image+textview组合,但其实image是没必要的,textview提供了一个属性来给它设置image
    android:drawable=”@drawable/resource”(这个不敢苟同,很多时候确实只设置这个,无法达到预期的布局效果)

  • Use a layout_height of 0dip instead of wrap_content for better performance
    当在一个linearlayout布局中为一个控件设置weight属性时,这个组件会默认填充剩余空间
    去掉weight属性或者修改wrap_content为0dp

lint检测出的图片相关的问题 (所属类别:Usability:Icons)

  1. IconDuplicatesConfig: Identical bitmaps across various configurations
    The ic_launcher.png icon has identical contents in the following configuration folders: drawable-xhdpi, drawable-xxhdpi
    两张一模一样的图片放在不同分辨率的drawable文件夹下

  2. IconDipSize: Icon density-independent size validation (lint –show IconDipSize)大致意思是
    检查不同分辨率的文件夹下所有计算起来大致相同dp大小的图标,这个可以捕获图片放在错误文件夹的错误,或者将图标更改为新的尺寸。但是一些文件夹会被忽略。

  3. IconDuplicates: Duplicated icons under different names
    一模一样的图标取不同的名字

  4. IconMissingDensityFolder: Missing density folder
    如果为各个分辨率的屏幕定义指定的分辨率的图标,效果是最好的。

  5. IconDensities: Icon densities validation
    要在不同分辨率的文件夹下放对应的图片。低分辨率的比较少,不考虑,检测自动忽略低分辨率的情况。如果要加上的话, 设置这个ANDROID_LINT_INCLUDE_LDPI=true

html报告中 Suppressing Warnings and Errors

  • 不对此类问题进行lint检查的几种方式

    1. With a @SuppressLint annotation in the Java code
      (在java代码中增加@SuppressLint标注,如图3)
    2. With a tools:ignore attribute in the XML file
      (在xml文件中增加tools:ignore属性,如下代码)

    3. With ignore flags specified in the build.gradle file, as explained below
      (在build.gradle文件中描述)

    4. With a lint.xml configuration file in the project

    5. With a lint.xml configuration file passed to lint via the –config flag
    6. With the –ignore flag passed to lint.

欢迎使用Markdown编辑器写博客1111222

本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:

  • Markdown和扩展Markdown简洁的语法
  • 代码块高亮
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值