引言:进入新公司,项目使用的是eclipse ,当时差点就哭了.因为我深知eclipse的坑.但是没法,提前安装好了最新的eclipse,忘记了Android ADT插件,在公司下载的最新的ADT 插件来安装的,幸亏网速很快,一会儿装好了.
导入项目--项目为一个主APP项目和4个library,很快导入好,哇,满心欢喜的点了一下RUN AS Android Application,下面就是见证奇迹的时刻....
啥啥啥,这都是啥,当时腿都软了,eclipse 果然不负众望,接连着报了N多的错,SDK 也一直在载入,什么contains some error ,please fix it,各种错,好的各种fix ,最后就停留在这个错无法解决,错误的大概意思是adb 连接段卡,你必须要重启adb 和eclipse ,请确认adb 在以下路径正确配置.然后...就没有然后了.....没法了,只有向Android Studio迁移了,虽然在以后的工作中,依然要使用某版本管理软件(基于eclipse插件),类似GIT和SVN,只有把eclipse当做一个版本管理软件来使用了.代码还是在Android Studio上来写
eclipse error.png
下面就来看看迁移中出现的错吧
1.PNG相关的错误,因为eclipse下不会检测图片格式,而Android Studio AAPT会默认检测图片格式
错误大概记不清了,反正就是当前的图片不是PNG 格式的,却又是PNG后缀名,应该是懒惰的程序员(背锅侠)或者UI直接把JPG或者其他格式的图片改了下后缀名就变成了PNG了吧.开始的话,只报了一张错,那简单,拷贝出来一张用图片预览软件打开,另存为PNG格式,BING 搞定...可是....接下来报了很多这样的错....没办法,开始想的是批量转换,可以mac下的转换命令又不会用....
解决办法:

2. .9文件的错,错误日志大概是说.9文件每个边只能有一条黑线,或者没有,这次UI必须背锅,因为.9文件没有黑线或者每个边有多条线肯定是UI的问题.
解决办法:
- 1.使用上面的方法,屏幕Android Studio 主动监测
- 2.打开Android Studio 编辑器,按住CTRL/SHIFT 其中的某一个键,然后用鼠标划线,这里有个问题,画出红色的先是错误的,必须画出黑线才可以
3.httpclient包找不到,老坑了,在5.0还是什么版本之后,Android 内部已经采用OkHttp 为默认的网络库,移除了httpclient包
解决办法: gradle 文件中添加 useLibrary 'org.apache.http.legacy'
此方法好像只支持target sdk 23以下,以上的话,要使用gradle compile 引入
4.报一些lisence 文件重复,也是老坑了.
解决办法:
gradle 配置中添加排除这些文件
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
5.BaseAdapter 报错..?WTF
这个真是不知道什么错,搜也搜不到,反正就报这个错,当时这个是这样的一个情况,一个activity里面写了一个内部类继承BaseAdapter,然后就始终报错,说找不到方法,重载参数列表有问题等等...当时以为support 包的问题,当时一想不可能啊,这个BaseAdapter 在widget 包里面啊,当时还怀疑是target sdk 是最新的28还是27,反正是基于8.0的问题,想的是在8.0移除这个类,想想也不可能啊?
解决办法:最好把这个类提出去单独弄了一个类就好了...就好了....
6.manifest里面的一些错
gradle打包manifest里面报的一些错
- 1.action 里面的name 不能为空,加上解决
- 2.application 标签里面allowBackup ,直接去掉
- 3.找不到activity,原来是以前在eclipse已经删除了activity class文件,但是manifest没有移除,给跪了哦
7.6K方法数问题,老坑了
解决办法:如图error.png 加入multDexEnabled即可
8.史诗级SO文件的巨坑
项目也好了,也能编译了,也能打包了,也能运行了,可是在application 初始化百度的地图的时候给报错了.....一缺少看就是缺少SO文件,赶快配置好sourceSets

然后就换了一个错,这次不是找不到了,是载入出错,当时就反应过来就是SO 架构文件不够的问题,因为只有arm 架构的,没有X86,想想genymotion 是基于X86的吧,找到兼容包,flash 到genymotion,还是报错啊.我的哥...没办法只能想办法下载百度地图的SDK包,可是百度地图的历史版本里面没有4.2.1,真的没有....这可就难住我了....想想默认的模拟器有没有基于ARM 版本的呢,很真有,开始刷出来了.下载卡死,应该是没科学上网,又开一遍,怎么都载入不了了......泪崩...然后又开网易MOUMOU 模拟器,装上去还是Crash ,后来看到genymotion 有5.1和5.0以下的兼容包之分,搞个5.1 ARM兼容包试试呗.flash 进去还是Crash ,垃圾,垃圾...吗的智障,没法,下载一个genymotion的4.4版本试试吧....还是Crash .....没办法只能屏蔽百度地图初始化那段代码了....然后又运行.......初始化的时候,还在载入其他的SO 动态库......给跪了.......然后想想我的手机不是ARM 架构的吗....赶快拿出数据线.......嘟嘟嘟嘟嘟嘟嘟........垃圾ZUK ,数据线质量太差了......连接,断开,连接断开,一直就这样,重复......根本没法安装......然后又试了各种办法各种办法....
我都怀疑是SO 文件的问题.......还是不行,无奈下班,回去用一根新买的数据线插上...安装......咦不是那个错了......说明载入成功了,说找不到其他SO 文件,赶快把其他的library里面的so 文件依次导入... 然后....终于成功了........
结尾:除了上面的一些错,当然还有其他一些这样那样的小错和细节地方,比如新建的包名必须和eclipse里面的包名一模一样啊(不然copy过来的代码必须各种重构,想想都害怕),还有各个library之间和主app之间的依赖关系啊,这些都是需要注意的.
再谈谈eclipse和Android Studio 之间的选择
个人觉得eclipse已经是淘汰的产品,因为谷歌官方已经在2015/06宣布不再支持ADT的更新和对eclipse的支持,而且Android studio 是基于 IDEA 产品的架构,而且是官方支持,况且目前百分之99.9的 GitHub 开源库都使用 gradle工具构建,eclipse是没法用的.
其他的各种优势自行百度,反正一句话eclipse能做的,Android studio 一定能做,Android studio能做的,eclipse 不一定能做....
网友评论