今天好不容易有兴致写了一下午代码,但是到最后准备扔到模拟器上运行的时候,出问题了,android studio提示错误:Failure [INSTALL_FAILED_OLDER_SDK]

这个问题我百度了很久,发现其根本原因在于编译(compile)的SDK版本高于运行时的SDK版本造成兼容性问题。可是,以前在用Eclipse的时候也没遇到过这种情况啊,而且,按理说只要运行的SDK版本高于最低要求(Minimun require)SDK版本就应该是没有问题的。

在网上找了好大一圈,很多都是很早以前的帖子,让删除Manifest.xml里的标签,但最新版本的android studio里生成的Manifest根本没有这个标签,这让人着实伤脑筋,好在翻了几页百度之后,终于找到了解决办法:

http://blog.csdn.net/lori_xj/article/details/38589983

总的来说,就是android studio V0.8这个版本默认的最新SDK——android L的问题。只要是用android L(API 20)编译的程序,怎么也不能在其他版本的环境里运行。

最直接的解决办法就是像上面那个链接里说的,进入AndroidStudioProject/ProjectName/app文件夹,用文本打开build.gradle,做如下略微的修改:

apply plugin: ‘com.android.application’

android {
compileSdkVersion 19
buildToolsVersion “19.1.0”

defaultConfig {
applicationId “com.example.ray.myapplication”
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName “1.0”
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
}
}

dependencies {
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
}

没错,就是改了一下编译的SDK版本而已,改成以前的任何一个API版本号都可以。然后再重新编译,就没问题了。

如果你觉得每次新建个Module都需要改一次配置太麻烦的话,还有个最直接、有效、彻底的办法,打开SDK Manager,卸载一切android L(API 20)的东西……毕竟目前这还只是个preview的预览版,不够完善,所以碰到问题是难免的,保守起见,用稍微旧一点的版本,会更好一点。