Android 环境搭建与Android SDK目录介绍

Android SDK下载和安装

  本地已有合适版本Android SDK,则无需再下载,或者可以使用SDK Manager更新SDK;

  没有SDK,则需要下载。

  这里说一下使用SDK Manager下载/更新SDK:

  (1)如果没有安装SDK Manager,可以下载安装,地址 https://github.com/inferjay/AndroidDevTools#sdk-tools,下载完毕,直接运行安装就可以,安装过程中会自动匹配本机环境下的jdk;

进入到安装目录下:

  (2)启动SDK Manager.exe,如下图:

    

  (3)更新时间比较长,也有可能更新不了,就得需要配个代理了。

  (4)注意不要下载过新的API, 目前使用量最大的API还是23,24 

Android Studio的下载和安装(新建工程和调试运行)

     官方网站下载: http://www.androiddevtools.cn/

   注意直接用浏览器下载,不要用迅雷,避免类似XCodeGhost的事件!

        下载完之后,如果是安装包,可以直接安装即可;如果是解压包,可以解压后,直接运行(安装目录下的studio.exe文件)。

        安装过程中,由于之前已经下载过SDK,所以跳过SDK的安装,一直next知道finish,运行打开Android studio,然后手动配置SDK,点击SDK Manager,配置已经下载好的SDK所在路径即可,如下图:

   配置好SDK之后就可以新建工程了,如以下系列图:

  (1)file-->new-->new Project:

  (2)next-->可以选择创建的工程的版本-->如果对版不了解,可以点击help me choose:

 

  (3)点击help me choose 后即可显示当前的Android系统各版本信息,还有什么不明了的呢!(只看界面UI做的就很棒)

  (4)选择版本后next-->进入选择主Activity样式界面,下面只是列出几种,样式很多:

  (5)继续next-->直到finish,则完成了该工程的创建,创建过程会稍长一些,需等待。

  (6)以下就是创建完毕的工程界面,点击上面工具栏中的运行图标运行,下面的logcat中有日志信息,使用起来也会很顺手,就不再过多说明。

        

SDK目录

  1. SDK目录
    1. add-ons
    2. docs
    3. extras
    4. platforms
    5. samples
  2. 下面重点介绍这3个
    1. platform-tools
    2. tools
    3. build-tools
  3. mincompiletarget版本的区别
    1. compileSdkVersion
    2. minSdkVersion
    3. targetSdkVersion
    4. Gradle 和 SDK 版本
 

现在对SDK目录做一下总结阐述!

add-ons

这里面保存着附加库,第三方公司为android 平台开发的附加功能系统。比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。

docs

这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。

extras

该文件夹下存放了Android support v4,v7,v13,v17包;
还有google提供额USB驱动、Intel提供的硬件加速等附加工具包,
和market_licensing作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。

platforms

是每个平台的SDK真正的文件,存放了不同版本的android系统。里面会根据APILevel划分的SDK版本,这里就以Android2.2来说,进入后有 一个android-8的文件夹,android-8进入后是Android2.2SDK的主要文件,其中ant为ant编译脚本,data保存着一些系 统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则 是该版本的主要framework文件,tools目录里面包含了重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。

samples

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

下面重点介绍这3个!!!!

platform-tools

保存着一些Android平台相关通用工具,比如adb、和aapt、aidl、dx等文件,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。Fastboot 刷机工具。

tools(测试看这里)

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

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的工程!

说到这,就不得不提一下,项目中minsdkversion、compilesdkversion、targetsdkversion的区别!!

min、compile、target版本的区别

这里参考一下谷歌开发者的一篇推送文章!讲的很详细
compileSdkVersion, minSdkVersion 和 targetSdkVersion 的作用:他们分别控制可以使用哪些 API ,要求的 API 级别是什么,以及应用的兼容模式。

compileSdkVersion

compileSdkVersion 告诉 Gradle 用哪个 Android SDK 版本编译你的应用。使用任何新添加的 API 就需要使用对应等级的 Android SDK。
需要强调的是修改 compileSdkVersion 不会改变运行时的行为。当你修改了 compileSdkVersion 的时候,可能会出现新的编译警告、编译错误,但新的 compileSdkVersion 不会被包含到 APK 中:它纯粹只是在编译的时候使用。(你真的应该修复这些警告,他们的出现一定是有原因的!)
因此我们强烈推荐你总是使用最新的 SDK 进行编译。在现有代码上使用新的编译检查可以获得很多好处,避免新弃用的 API ,并且为使用新的 API 做好准备。
注意,如果使用 Support Library ,那么使用最新发布的 Support Library 就需要使用最新的 SDK 编译。例如,要使用 23.1.1 版本的 Support Library,compileSdkVersion 就必需至少是 23 (大版本号要一致!)。

minSdkVersion

如果 compileSdkVersion 设置为可用的最新 API,那么 minSdkVersion 则是应用可以运行的最低要求。minSdkVersion 是 Google Play 商店用来判断用户设备是否可以安装某个应用的标志之一。
请记住,你所使用的库,如 Support Library 或 Google Play services,可能有他们自己的 minSdkVersion 。你的应用设置的 minSdkVersion 必须大于等于这些库的 minSdkVersion 。例如有三个库,它们的 minSdkVersion 分别是 4, 7 和 9 ,那么你的 minSdkVersion 必需至少是 9 才能使用它们。在少数情况下,你仍然想用一个比你应用的 minSdkVersion 还高的库(处理所有的边缘情况,确保它只在较新的平台上使用),你可以使用 tools:overrideLibrary 标记,但请做彻底的测试!

targetSdkVersion

三个版本号中最有趣的就是 targetSdkVersion 了。 targetSdkVersion 是 Android 提供向前兼容的主要依据,在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化。这允许你在适应新的行为变化之前就可以使用新的 API (因为你已经更新了 compileSdkVersion 不是吗?)。
targetSdkVersion 所暗示的许多行为变化都记录在 VERSION_CODES 文档中了,但是所有恐怖的细节也都列在每次发布的平台亮点中了,在 API Level 表中可以方便地找到相应的链接。

请一定在更新 targetSdkVersion 之前做测试!你的用户会感谢你的

Gradle 和 SDK 版本

所以设置正确的 compileSdkVersion, minSdkVersion 和 targetSdkVersion 很重要。如你所想,Gradle 和 Android Studio 都在构建系统中集成了它们。在你的模块的 build.gradle 文件中(也可以在 Android Studio 的项目结构选项中)设置:

  1. <span style="font-size:14px"><code class="hljs bash">    android {  
  2.       compileSdkVersion 23  
  3.       buildToolsVersion "23.0.1"  
  4.   
  5.       defaultConfig {  
  6.         applicationId "com.example.checkyourtargetsdk"  
  7.         minSdkVersion 7  
  8.         targetSdkVersion 23  
  9.         versionCode 1  
  10.         versionName “1.0”  
  11.       }  
  12.     }</span>  

编译时用到的 compileSdkVersion 是和构建工具版本一起设置的 Android 设置之一。其他两个稍有不同,他们在构建变体(build variant)的那里声明。defaultConfig 是所有构建变体的基础,也是设置这些默认值的地方。你可以想象在一个更复杂的系统中,应用的某些版本可能会有不同的 minSdkVersion 。
minSdkVersion 和 targetSdkVersion 与 compileSdkVersion 的另一个不同之处是它们会被包含进最终的 APK 文件中,如果你查看生成的 AndroidManifest.xml 文件,你会看到类似下面这样的标签:

  1. <span style="font-size:14px"><code class="hljs xml"></span>  

如果你在 manifest 文件中手工设置,你会发现 Gradle 在构建时会忽略它们(尽管其它构建系统可能会明确依赖它们)。

 

这种直觉是合理的,如果 compileSdkVersion 是你的最大值,minSdkVersion 是最小值,那么最大值必需至少和最小值一样大且 target 必需在二者之间。
理想上,在稳定状态下三者的关系应该更像这样:

  1. <span style="font-size:14px"><code class="hljs erlang">minSdkVersion (lowest possible) <= targetSdkVersion == compileSdkVersion (latest SDK)</span>  

用较低的 minSdkVersion 来覆盖最大的人群,用最新的 SDK 设置 target 和 compile 来获得最好的外观和行为。

          ok!关于SDK的目录结构就阐述到这里。
原文地址:https://www.cnblogs.com/Ronaldo-HD/p/9287621.html