Android Studio新建工程Gradle编译报错(com.android.support:appcompat-v7:16.+)

来源:互联网 发布:mysql存手机号 编辑:程序博客网 时间:2024/05/22 03:46

以前的Android开发都是在Eclipse中,其缺点是Eclipse的大而全,对Android来说不够专业,还需要加入插件才可以支持,运行速度慢,调试不方便。为此Google重新研发了针对Android开发的IDE——Android Studio(以下简称为AS),截止目前,其稳定版本是1.5.1。优缺点网上都有,在此不再赘述。通过前期版本的迭代,AS已趋于成熟,是时候将开发工作移步到AS上了!

 

学习的最好的方法是实践!在此推荐入门级书籍《Android编程权威指南 第2版》(Android Programming: The Big NerdRanch Guide  2nd Edition),此书第1版是基于Eclipse进行的实例开发,第2版则基于AS开发。其立意并不是按照国内大部分科技书籍的架构,将Android的组件、布局等一一介绍一遍,而是通过实例将这些内容融入其中,很容易上手。但一定要结合书中的实例,自己写一遍源码,才能真正的掌握精髓。

 

废话不多说了。进入正题。

 

一、环境的搭建:

首先搭建好AndroidStudio环境。我使用的是Ubuntu 12.04系统(由于此机器还要运行其他程序,为避免兼容性问题,暂未更新到最新,而继续沿用此稳定版),java和jdk都是现成的,无需配置。翻墙后从Google网站http://developer.android.com/sdk/index.htm下载最新的AndroidStudio for Linux。之后更新SDK。

 

一切顺利,将所有2.2之后的SDK下载完毕,就可以进行项目的开发了。

 

二、项目的建立

根据书中所说,创建一个全新工程。

 

 

 

 

 


 





三、问题的产生

完成后,AS会自动生成工程,且使用Gradle编译。由于我们的最低编译版本是API 16,即android 4.1,而当前的最新编译器已经达到了23,即android 6.0。所以会出现如下报错:



 

我们可以看到,报的错是“Failed to resolve: com.android.support:appcompat-v7:16.+”,也就是我们在build.gradle中最后一段中的compile项内容。


[java] view plain copy
  1. dependencies {  
  2.     compile fileTree(dir: 'libs', include: ['*.jar'])  
  3.     testCompile 'junit:junit:4.12'  
  4.     compile 'com.android.support:appcompat-v7:16.+'  
  5. }  

报错窗口提供了3个解决方案的链接,依次尝试,都无法解决问题。所以需要仔细分析该问题。


AS自动生成的“com.android.support:appcompat-v7:16.+”实际上是根据我们的最低版本16来选择16.x.x及以上编译器进行编译的,由于AS不知道具体的编译器版本是什么,所以就用了一个泛指“16.+”来代表16以上的编译器都行。这可能是之前AS的设计(未考证,只是推测,有知道的朋友可以提供说明,谢谢!),新版本中已经摒弃了这种写法。


那么我们就要找到当前AS所使用的SDK编译器版本是什么?


依次选择Tools→Android→SDK Manager,打开SDK Manager,选择SDK Tools选项卡。



 

 找到其中的“Android Support Library, rev 23.2”,其版本为23.2.0,至此,我们已经知道了,应该使用“23.2.0”代替“16.+”


真如我们所愿,这样一改就可以了呢?



 

 又是报错,看来是build tools工具的问题。

 

回到build.gradle,看我们的build tools是如何定义的:


[plain] view plain copy
  1. android {  
  2.     compileSdkVersion 16  
  3.     buildToolsVersion '19.1.0'  
  4.   
  5.     ................  
  6. }  


这就对了,build tools的版本太低。接下来,我们找找到底build tools的版本应该填入多少才合适。

依次选择Tools→Android→SDK Manager,打开SDK Manager,选择SDK Tools选项卡。记住勾选右下角的“Show Package Details”,这样才能看到所有的“Android SDK Build Tools”选项。我已经下载了所有可用的版本,第一次打开,一般只下载了19.1.0。最好下载最新的,以和最新的SDK所匹配。下载时,不要下载标注Obsolete的项,因为已经废弃,不再使用。



既然我们的appcompat-v7采用的是23,那么对应的buildToolsVersion也就选个最新的吧,于是将buildToolsVersion改为“23.0.2”。再看效果:




失败again!


别急,看报错信息......。一堆的资源找不到。再看报错文件夹,values-ldltr-v21,是API 21对之前的16版本不兼容。于是,也要把compileSdkVersion修改为23,此处为避免类似的资源问题,一步到位改到了23。


[plain] view plain copy
  1. android {  
  2.     compileSdkVersion 23  
  3.     buildToolsVersion '23.0.2'  
  4.   
  5.     ................  
  6. }  

最终,编译成功!


总结


遇到这种编译问题不是很好解决,特别是刚开始使用AS,其编译、架构都与Eclipse完全不同,需要不断的摸索与适应。一旦熟练掌握了,你会发现AS是开发Android应用的最适合的效率工具。


回到我们所遇到的这个问题,解决方法:

1、找到compile中"com.android.support:appcompat-v7"的详细版本。通过Tools→Android→SDK Manager,打开SDK Manager,选择SDK Tools选项卡。找到“Android Support Library“所对应的版本

2、找到buildToolsVersion的适合版本。通过Tools→Android→SDK Manager,打开SDK Manager,选择SDK Tools选项卡。找到“Android SDK Build Tools“,使用最新版本即可。

3、升级compileSdkVersiion与buildToolsVersion匹配的版本。

阅读全文
0 0