Android Studio 使用Support.v7和support.v4包遇到的各种问题

如果在Android Studio中打开项目时,发现了如下Error:
Failed to resolve: com.android.support:appcompat-v7:25.0.2(下图中红色框部分)

上述问题通常是由于compileSdkVersion和buildToolsVersion对应的版本和导入的v7包要求的版本不一样。解决方法如下:

第一步,明确compileSdkVersion版本

在下图红色框部分,描述的即是我们需要确认的compileSdkVersion版本。

第二步,compileSdkVersion版本修改appcompat-v7包的版本

在上图黄色框部分,明显可见红色波浪线,这就提示我们此处有错误。将光标移过去,可见提醒如下图:

这是指当前我们设置的support包版本与compileSdkVersion版本不一致,只有设置成一致能能让APP成功运行。所以我们需要进行修改,结果如下图红色框部分:

其他需要注意的版本设置

(1)minSDK VS targetSDK:

这两者相当于一个区间,你可以用到targetSDK中最新的API和最酷的新功能,但你又不得不向下兼容到minSDK,保证这个区间内的设备都可以正常的运行你的app。换句话说,你想使用Android刚刚推出的新特性,但这对于你的app又不是必须的,你就可以将targetSDK设置为你想使用新特性的SDK版本,minSDK设置成低版本保证所有人都可以使用你的app。

例子1:假如你想给你的app加入大量的手势操作(sdk 7才引入的),然而这些手势操作可以被Button或menu等代替,在这种情况下,手势操作就是一个额外的加分功能,而不是一个必须的功能,因此你就需要把targetSDK设置为7,把minSDK设置为3(这是举个例子,现在没人还在用这么老的设备了)这样即使是使用老设备的用户也可以用你的app了。然后你所要做的就是要在代码里判断版本,如果是大于等于7的版本中就使用手势操作,小于7的版本中就使用button等代替,这样使用了新手机的用户就可以体验到你app中酷炫的新功能了。

例子2:如果你想给你的项目加入Android 5.0的Material Design,有一些用户可能会升级到5.0而使用到你的新特性,而有一部分用户的手机硬件太老,不支持升级到5.0,除非他们换新手机,那么你就要为他们进行向下兼容,不至于损失这部分用户,这样你的targetSDK设置为21,minSDK可以设置为8。

(2)buildToolsVersion VS compileSdkVersion

  • CompileSdkVersion是你SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等。
  • buildeToolVersion是你构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于..your_sdk_path/build-tools/XX.XX.XX。例如最新的build-tool的版本就是25.0.2。
  • 在android studio中是必须在build.gradle中设置buildToolsVersion。例如上图中的:

    1
    2
    compileSdkVersion 22
    buildToolsVersion "25.0.2"
  • 你可以用高版本的build-tool去构建一个低版本的sdk工程,例如build-tool的版本为20,去构建一个sdk版本为18的。

另外需要注意的是,正如光标提示的错误信息中讲到,我们有时候为了能体验到最新的Android系统,需要保持最新的SDK更新,这会同时把build-Tools也进行更新,如下二图所示(AS2.3之后的版本中将不再提供独立的SDK Manager程序):