您的位置:首页 > 移动开发 > Android开发

关于Android SDK更新之后引发的一系列错误及其解决办法——DIY Android SDK 的体验

2015-03-28 20:32 483 查看
现在时间是2015-03-28, 官网 SDK 的最新版本是 24.1.2,ADT 的最高版本是23.0.6。





     众所周知,安装新版本的Android SDK 之后会使新建Android项目时出现 appcompat_7 项目文件(用途就不在此解释了),貌似是从版本22.6.x之后开始有的,然而创建完项目一片红x…… 网上有很多解决方案,clean
project或者在“is library”下面打钩等等,我尝试过,但是myeclipse依然报错。不是R文件没有生成就是某个theme的各种style找不到。。。只有最低只支持到Android 4.0 版本的项目才不会出现这个问题,鉴于本人的手机系统为Android2.3.6,以上做法纯属找不自在。而为了创建支持我手机的应用程序同时又不生成 appcompat_7 项目文件的唯一方法貌似只有安装早期版本的SDK了。在尝试安装的过程中,各种麻烦便接踵而来,反复安装和卸载SDK的过程也是格外痛苦。在此提醒提醒一下,如果你也想更新SDK的话,还是先找地方把SDK需要的安装包下载好,再直接解压到对应的文件夹中,因为在线安装的速度......

下面进入正题

     我卸载了最新版的ADT和SDK,然后选了 21.1版本的SDK,并离线安装了21.1.0 版本的ADT,期间无意中发现离线ADT无法安装是因为myeclipse会自动联网检查最新版本,如果你的版本比较低,它居然故意不显示安装列表!发现这个的原因是因为我第一次加载zip文件的时候列表闪过了一下随后消失,然后无论怎么加载也没有显示,直到我断开网络重新安装。 所以离线安装ADT最好断网安装,后来试了好几个版本都是这么安装上的,至于网上的其它直接解压等方法我都没有尝试了。

       而比离线ADT更让人无语的是SDK也强制限制,必须升级到最新版本,否则extras文件夹下的文件统统消失(某些版本连platforms的更新列表都没有了),缺少了extras文件夹下android/support目录里的文件,你的Android项目压根儿就别想创建。折腾来折腾去差点陷入死胡同。

      于是我想到了文件替换的方法,既然缺少extras,platforms等文件目录,不妨自己新建,然后采取自己组装零件补全需要的文件。(ps:下载的各个组件最好和ADK的版本配套或者稍低一些,否则会无法识别。部分组件要求版本必须一致,ADT和SDK互相要求对方升级你信不信?)

      关于android SDK目录下各个文件夹的作用可以参考这篇文章

      经过探索,以下几个文件目录是必须的:extras,platforms,platforms-tools,tools

      至于这几个文件夹目录里都需要哪些东西,以及到哪里去下载,可以参考此处:安卓应用开发相关下载资源:http://blog.csdn.net/gyming/article/details/8168166/

以下是SDK所包含的各个文件及其组成结构,重点是红线标识的几个文件夹(其中tools会在安装sdk之后自动创建,与相应的SDK版本对应):









      前面说道,为了防止SDK提示ADT版本过低和ADT提示SDK版本过低这类蛋疼的问题再出现,我下载的是配套的SDK21.1 和ADT21.1.0,安装后先不启动SDK,直接新建Android项目发现"compile with"选项下是空的,查找发现这一项取决于SDK安装的开发包,这些包放在SDK根目录下platforms文件夹中,也就是更新时提示需要安装的各个安卓版本,用来编译项目文件,如2.3.3,4.2.2,4,4,4,5.0等等。你想用哪个平台的包编译就下载对应的包解压到里面去即可。其次,在eclipse上的界面渲染也需要用到这些文件。否则会出现“This
version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in”的错误,这个提示说你的ADT的渲染方法太低级,必须升级ADT插件才能用!!更新的下场早已领教,此处我发现了或许是引发这个错误的另一个原因:没有使用项目要求的最低支持的SDK版本的方式来渲染。



      如图,如果你的项目最低支持的SDK版本( Minimum required SDK)为2.3.3,那么就要使用2.3.3版本的渲染方式来显示,你如果选择高版本的就会出现这个错误。(必须在platforms文件夹下安装有该版本的SDK才可以使用该方式显示,而且你会发现这个列表的表项和新建项目时"compile with"的表项是一样的)。



然后,你就可以看到渲染界面了。

下面是在新建项目中遇到的另外一些错误和解决的方法(包括一些疑难杂症):

打开myeclipse,新建项目到最后一步会有“This template depends on Android Support library.......required version:8 Instralled version :0”的问题,后面也有可能是"Installed:not installed":



解决方法是在Android SDK  Manager 中将最下面的“Android Suport Library ”(如果有的话)卸载,然后重新将你下载的support_r18.zip或者support_r**.zip文件解压到extras/android/目录下,没有目录可以自己新建(DIY就是这么任性!),重启myeclipse,新建项目,最后一步时点击Install/Upgrade,就行了。

新建完成之后Eclipse可能还会出现“  SecurityException: Unable to find field for dex.jar ”的提示

这是由于安装的platforms-tools版本与SDK版本不对应造成的。下载与SDK版本对应的platforms-tools覆盖更新,例如22.1版本的SDK应该使用 platform-tools_r21-windows.zip 中的文件夹覆盖,我一开始使用的是platform-tools_r19-windows.zip,所以造成这个问题。

解决这个问题后还会遇到“Unable to build: the file dx.jar was not loaded from the SDK folder!”的问题,解决这个问题的过程差点让人崩溃。几乎所有的解决方案都指向升级SDK和ADT这一条路,无论是更换workspace 还是clean,还是各种重启都无效。我甚至尝试过在没有卸载21.1 版SDK的情况下覆盖安装了24.1.2(是在备份了tools文件夹和AVD
Manager.exe和SDK Manager.exe以及uninstall.exe之后才覆盖的),然后又把21.1版本的SDK盖了回去,结果除了新建工程时多了几个可选主题之外并没有什么变化。。。

幸运的是,最终还是找到了解决办法!在stackoverflow 社区有人给出了如下方案:



翻译一下(渣译勿怪):

这是由于升级到最新版本的过程没有完成造成 dx.jar
文件从 {Android SDK dir}\platform-tools\lib
中丢失

解决方法:

在 {Android SDK dir}\platforms\*
找到你最新版本的 dx.jar

然后复制到:

{Android SDK dir}\platform-tools\lib

重启eclipse,然后 clean 你的项目,一切都会恢复正常了.

(如果 platform-tools\lib
目录完全丢失,你必须用SDK manager 重新安装 "Android 

SDK platform-tools"(ps:各位DIY的时候不需要这么做)。重装后就不需要再执行上面的复制操作了)

如果在 {Android SDK dir}\platforms\*
的任何子目录中都找不到 dx.jar
文件,你就需要打开 SDK manager 安装 Android 1.6 SDK(ps:这是因为对应的build-tools文件没有下载,后面会提到)

例如在我的机器上最新的(版本)是在 {Android SDK dir}\platforms\android-4\tools\lib
中(我没有找到更新的版本了 2012-01-22 Android SDK R15)

我真心希望这个回答能对有些人有用因为我已经浪费了半天的时间研究并寻找这个没什么价值的bug的解决方法了... :-(
(ps:感谢作者,俺浪费了不止一天了-_-... )

注意,这里面的方法确实能够解决问题,但是我一开始试了几次都没有成功,也有一些提问者也失败了。关键点在于首先你的platforms/android-*.*.*目录下必须有tools文件夹,这个dx.jar就存在于platfroms/android-*.*.*/tools/lib/目录下,这个android-*.*.*/tools文件夹其实是来自于与 android-*.*.* 对应的build-tools文件,例如你在android-19_r04.zip文件中解压会得到android-4.4.2文件夹,把它放到SDK的platforms文件夹下,然后你会发现里面缺少tools文件夹,所以你需要下载对应的build-tools_r19.1-windows.zip文件,将build-tools_r19.1-windows.zip里面的android-4.4.2文件夹改名为tools,然后放到刚才的platforms/android-4.4.2文件夹下,这样你的文件夹就完整了,可以找到 platfroms/android-4.4.2/tools/lib/dx.jar这个文件。

过程是不是有点绕?配个图吧:



另外,如果你的项目是“compile with”的是android-4.4.2,那么将上述dx.jar文件拷贝到platforms-tools/lib文件夹下,你就有 platforms-tools/lib/dx.jar文件了。注意,如果你是从别处拷来的dx.jar文件,那么必须保证这两个dx.jar是同一个版本(最好是和compile with 的版本保持一致,不一定非得是最新版本的),否则错误仍然无法得到解决,你就会以为上述方法没有作用。

还有就是项目中的drawable-xxhdpi文件夹报错导致R.java文件无法生成(R cannot be resolved to a variable.)的问题

这个文件夹下就一张图片,貌似是2.3.3不支持,直接删掉这个文件夹即可,如果没恢复再clean一下。

如果在运行程序时出现:

The connection to adb is down, and a severe error has occured.

You must restart adb and Eclipse.

 Please ensure that adb is correctly located at '*****\platform-tools\adb.exe' and can be executed.

的问题,可以先打开模拟器(如果没有先新建一个)再尝试,或者在cmd中进入adb的根目录,键入adb kill-server,然后键入adb -startserver,再重启Eclipse。或参考:http://www.cnblogs.com/hejing-swust/archive/2012/09/22/2698453.html

最后,附上两个下载地址:

一个是 Android SDK 国内镜像站点(大连东软信息学院),几乎所有安卓版本的开发包和配套工具都能找到,你只需要挑选正确的版本即可。推荐用迅雷下载,否则速度和直接从国外有一拼。。。

另一个是本次DIY成功所必须的包文件(我已经下载好的),祝你们也能顺利安装成功!百度网盘下载

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息