android studio module添加最新的com.android.support:appcompat-v7:21.0.0依赖报错

我的开发平台是Mac,测试机是MX3(API 19 android 4.4.4),我不确定其他平台是否出现该问题,所以提前说明一下,免得误人子弟。

今天再使用自定义ActionBar的时候,出现了一个很奇葩的错误,就是我为自己的module添加了最新的com.android.support:appcompat-v7:21.0.0依赖后,在Activity中使用
final ActionBar actionBar = getActionBar();
actionBar.show();
来获取ActionBar时,抛出了NullPointerException异常,这让我百思不得其解。这在之前使用一直没用问题啊。。。。。于是,各种百度google,但是并未发现类似问题(我用了最新的support包)。最后,人品爆发,在StackOverFlow上找到了类似的问题,后来我意识到可能是     com.android.support:appcompat-v7:21.0.0版本太高,导致在android 5.0以下的sdk导致不兼容问题。估计,google的脑袋是被枪打了把,话说support包本就是用来做兼容的吧,在这个版本竟然成了导致不兼容的原因。。。。。

错误原因分析如下:

在module的build.gradle文件里,如果用默认的自动依赖处理方式,如下所示:

dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
compile project(‘:Library‘)
compile ‘com.android.support:support-v4:21.0.0‘
compile ‘com.android.support:appcompat-v7:21.0.0‘
}

编译时系统就会去依赖最新版的support:appcompat-v7:21.0.0 。按照之前的经验来说是不因该有问题的,但是据我的理解,目前appcompat-v7:21.0.0须使用android 5.0版本的build tool,而且build出来的程序只能在Android 5.0下运行,真屌啊。。。。我们4.4.4的用户混不下去了么???

所以解决方法也很简单:就是把appcompat-v7:21.0.0改为appcompat-v7:19.+

如下所示:

dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
compile project(‘:Library‘)
compile ‘com.android.support:support-v4:21.0.0‘
compile ‘com.android.support:appcompat-v7:19.+‘
}

PS: 发现国内论坛并未有人记载过此问题,所以我来记录一下,权当备忘录了。其中发了很多牢骚,还请见谅,因为这个问题耽误了我三个多小时。毕竟自己实力太菜啊,哈哈,菜鸟的高手养成计划已经开始了。

时间: 2024-10-11 05:26:11

android studio module添加最新的com.android.support:appcompat-v7:21.0.0依赖报错的相关文章

android studio怎么添加.so文件?android studio加载so文件的方法

android studio 中 添加.so 文件,Android Studio中添加.jar文件和.so文件无疑是一件很重要也是很头疼的问题! 1.在src/main中添加 jniLibs文件夹 ,把.so复制进去 2.在build.gradle中就添加这么几行  ,  看图 复制内容到剪贴板 sourceSets { main { jniLibs.srcDirs = ['libs'] } } 3.然后make project 4.切换到android结构下,你会看到 jniLibs 中.so

【Android Studio探索之路系列】之六:Android Studio添加依赖

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 本文主要讲解如何在Android Studio中添加JAR包.Module和SO库. 一 JAR包的依赖配置 首先使用快捷键Ctrl+Alt+Shift+S打开当前项目的配置,如下图所示: 1.1 直接搜索法 点击 +->Library dependency,如下图所示搜索选择

Android Studio下添加assets目录

在Android Studio中添加assets目录,目录的位置在 XXX\src\main\assets XXX代表你的项目的路径,assets放在src\main目录下. 这个位置可以通过XXX.iml  XXX代表自己的项目名,其中有设置assets的目录,设置如下 <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />

Android Studio如何添加override

而Android Studio如何添加呢?方法如下: 右键(或者Alt + Insert) ---  Generate... ---- Override Method...  或者 Implement Method...

在Android Studio中添加assets目录

在Android Studio中添加assets目录,目录的位置在 XXX\src\main\assets XXX代表你的项目的路径,assets放在src\main目录下. 这个位置可以通过XXX.iml  XXX代表自己的项目名,其中有设置assets的目录,设置如下 <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> 结果如图所示: 参考:http://blo

Android Studio编译运行Fresco Sample。Android缓存新境界。 (a problem occurred start process &#39;command &#39;ndk-build&#39;&#39;)

今天闲逛知乎,偶遇一篇“Android应用开发难点”,作为安卓程序猿,本能点进去,想看看究竟能有什么难点自己不知道的(夜郎自大..面壁中). 插件化,H5容器优化,网络.图片缓存..感觉都还好.直到看到“Fresco出来之前,你是不是觉得图片缓存已经到头了?” Fresco究竟是何方神圣!! 询问度娘得知,2015.3.27日之前就已经发布了(度娘的结果最早是3.27).通过查看GitHub: Version 0.1.0  tyronen released this 16 days ago · 

Android studio: Gradle DSL method found: &#39;android()&#39;!及Gradle DSL method not found: &#39;runProguard()&#39;错误

Gradle DSL method not found: 'runProguard()'错误 出现这个错误是因为在新版本的Gradle中runProguard()方法已经被废弃,取而代之的是minifyEnabled,因此只要将每个module下的build.gradlew文件中的runProguard改成minifyEmabled即可.如下图: Gradle DSL method found: 'android()'错误 和上个错误一样这个也是因为在新版本的Gradle中android()方法

【Android Studio探索之路系列】之六:Android Studio加入依赖

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [Android Studio探索之路系列]章节列表 [Android Studio探索之路系列]之中的一个:Android Studio开篇 [Android Studio探索之路系列]之二:Android Studio软件安装 [Android Studio探索之路系列]之

android studio学习----添加项目库

Library Project(库项目) compile project(':library') 引用名称为 library 的 module .需要注意的是,被引用的 module 需要在 {@projectName}/settings.gradle 文件中进行注册. 我们可以观察到,library/build.gradle 中使用的 apply plugin 为 'com.android.library'.用以标记这是一个Android Library Project . 当然,你也可以依赖