从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项
整体要注意的地方
先说明一下整体需要注意的地方
1在Android studio建立项目的时候,要注意包名和原来的完全一致,不然会有很多需要改动.
2依赖的jar一定一定要找齐,不然新建项目引用不到,要么重新找包,严重的话,那部分代码要重写,影响很恶劣...
3Android studio的编译器有点蠢.引用了多余的包编译会通过,但是debug会报错.此事要重点排查android.support:appcompat-v7和com.android.support:support-v4包.这2个包很有可能是多余的,lib那里记得删了.
然后,我建议的迁移顺序是
资源的引用(res)
values下string,id,等XML
res下其他目录的XML.
对于图片文件,文件夹名从drawable-XX改为mipmap-XX
//以前的写法
<item android:drawable= "@drawable/actionsheet_bottom_pressed" android:state_focused="true"></item>
//现在的写法
<item android:drawable="@mipmap/actionsheet_bottom_pressed" android:state_focused="true"></item>
不照做的话预览视图那里就会提示
Couldn't resolve resource @drawable/actionsheet_bottom_pressed Failed to convert @drawable/actionsheet_bottom_pressed into a drawable <item> tag requires a 'drawable' attribute or child tag defining a drawable
另外.奇葩文件的命名要改
比如我之前发现有这样的图片actionsheet_bottom_pressed.9.png.在Android studio引用@mipmap/actionsheet_bottom_pressed"的话引用不到...
为了图快速解决问题我就只能改文件名,然后批量替换(replace )了.
color也是
@color/white → @android:color/white
代码的迁移
文件的编码
万恶的傻逼eclipse用的ansi(window-1252)编码.要改成无bom 的UTF-8(我用notepad++转的,命令行批量处理,我不会...).不然Android studio无法识别其中的中文,我再说几遍,无bom 的UTF-8,无bom 的UTF-8,无bom 的UTF-8,无bom 的UTF-8......
强调无bom是因为不照做会有这个错误
非法字符: '\ufeff'

Android studio是基于文件目录的管理.在外部打开对文件CRUD,过一段时间之后,IDE那边会自动同步
java代码中资源的引用
drawable→_→mipmap
2015-11-20更新:
依赖项的迁移
关于依赖项的引入,第三个参考链接里面就写的相当好,但是不全面.要结合他的例子去看.这里我除了复述他的观点,我会再补充一些更具体的内容.
jar的迁移
jar比较简单.
以最新版的Android studio(1.5)为例.把eclipse里libs里的jar包拖到Android studio模块里面的libs文件夹.待Android studio同步过来后,全选这些*,jar.然后点击add as library.
正常情况下.在该模块的build.gradle文件中,dependencies下面会有刚刚添加过的包的编译文件指令.
比如
compile files('libs/baidumapapi_v3_5_0.jar')
compile files('libs/com.umeng.fb.5.4.0.jar')
compile files('libs/gson-2.3.1.jar')
compile files('libs/locSDK_5.2.jar')
compile files('libs/nineoldandroids-2.2.0.jar')
compile files('libs/umeng-analytics-v5.5.3.jar')
代码引用的包没有出错,即说明引入成功.
二进制文件(so)的迁移
我也是拖入libs里面.然后在模块的build.gradle中android里面插入
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
project/modules的迁移
原本在eclipse中,可以直接新建一个Android工程,然后别的项目以library的方式引用它.但到了Android studio,这种工程换了一种更精确的说法,叫module/模块.
于是原本在eclipse中A项目引用B项目的场景,在Android studio中会被描述为A模块依赖B模块.
我再描述一下整个过程
处理被依赖项目B
项目B的build.gradle里面,要改3个地方
1.apply plugin: 'com.android.application'改为apply plugin: 'com.android.library'
代表B是一个类库
2.去掉applicationId
直接注释(// applicationId "com.XXXXXX")即可
否则会出现这个错误
Error:Library projects cannot set applicationId. applicationId is set to 'com.XXXXXX' in default config.
3.(可选项)排除一些文件
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/ASL2.0'
}
import moudule
在我的场景中为A项目里面import B module.
(见第四个链接,这里直接复制他写的过程)
- Goto File -> New -> Import Module.

- Source Directory -> Browse the project path.
- Specify the Module Name – it is used for internal project reference.

- Let Android Studio build the project.
- Open build.gradle (Module:app) file.
- Add the following line with your module name in place of “Volley” in the dependencies block:
1compile project(':Volley')
- It should look something like this:

这个过程完成之后,
1.在A module里的build.gradle里面会多出 compile project('moduleB')
2.setting.gradle里面会自动include模块B
3.项目里面多出一个我们新建的模块的目录,把导入的模块的内容都导入过来
处理冲突的节点
由于A和B项目里面都有AndroidManifest.xml文件.
并且在application里面的android:name节点内容不一致,导致合并的时候产生了冲突,这个时候.我们需要对A项目里的节点进行冲突处理.它同步的时候有个提示的.
<application
android:name="com.xxxx" tools:replace="android:name"
>
在A项目的AndroidManifest.xml文件里面对节点进行替换即可.也就是上面的tools:place=''android:name'.
关于迁移,可以参照官方的指导(第8个链接)
体会:暂时遇到这些问题,我想,既然迁移这么蛋疼,那么这破事我以后能不做就不做,必须做,就等我整理强迫症发作后再做好了.......
参考链接:
- Android Studio drawable下的XML文件如何调用mipmap图片资源?
- Android studio R文件找不到
- Android Studio Jar、so、library项目依赖
- Android Studio | How To Add A Library Project?
- How to import android project as library and NOT compile it as apk (Android studio 1.0)
- Error:Library projects cannot set applicationId. applicationId is set to 'com.gdtel.eshore.anroidframework' in default config.
- Android studio Gradle icon error, Manifest Merger
- Manifest Merger
从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项的更多相关文章
- Android Studio(七):项目从Eclipse到Android Studio迁移
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- 从 Eclipse 导入项目到 Android Studio
ADT已经有些过时了,现在比较流行的安卓开发工具是Android Studio,毕竟是谷歌一直在推广的. 最近装了as,从之前的adt迁移项目到as上,遇到了不少坎. 主要注意以下两点: (1)文件路 ...
- (转)Android Studio系列教程一下载与安装 背景Android Studio VS Eclipse准备下载创建HelloWorld项目
背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Goo ...
- 【Android Studio安装部署系列】四十二、Android Studio使用Eclipse中的keystore为App签名
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 从eclipse迁移到AndroidStudio,要用原Eclipse的签名文件,这样才能保证转到AndroidStudio后更新的 ...
- Android studio导入eclipse项目且不改变目录结构
Android studio的安装与配置论坛当中已经有很多在此就不在细说了,现在开始说下如何在Android studio当中导入eclipse的项目且不改变其目录结构和配置,让使用eclipse的同 ...
- Android开发环境--eclipse和Android Studio
一.eclipse下载.安装.配置 因为eclipse是之前就下载过的,现在只能大概说一下eclipse的下载安装过程. 1.下载jdk,配置java环境变量 (1)在官网(http://www.o ...
- Android Studio导入Eclipse项目和一些常见的问题
Android Studio版本 Eclipse项目工程:一个主工程,一个Emojicon依赖库. 有两种方式导入Eclipse工程: 1.兼容Eclipse 2.全新的Android Gradle ...
- 关于Android studio 相对 eclipse 优点
优点:说法一 1.Google推出的,这个是它的最大优势,Android Stuido是Google推出,专门为Android"量身订做"的 2.速度更快,Eclipse的启动速度 ...
- Android Studio导入Eclipse项目
随着Google 对新Android编辑器Android Studio(以下简称AS)的版本不断更新,越来越多的人开始由熟悉的编辑器Eclipse转向AS,而Eclipse开发团队也坦言将放弃对Ecl ...
随机推荐
- MySQL主备停机步骤与注意事项
双十一马上到了,一堆的事情,今天登录mysql数据库服务器的时候突然发现服务器时间戳不对,比北京时间快了几分钟,我的天...随后检查了其他的几台数据库服务器发现同样都存在不同的偏差,最小的比北京时间快 ...
- 【读书笔记】读《编写高质量代码—Web前端开发修炼之道》 - JavaScript原型继承与面向对象
JavaScript是基于原型的语言,通过new实例化出来的对象,其属性和行为来自于两部分,一部分来自于构造函数,另一部分是来自于原型.构造函数中定义的属性和行为的优先级比原型中定义的属性和优先级高, ...
- struts2 标签问题----日期显示
对于要显示按照自己的意愿进行显示的话: <s:date name="date" format="yyyy-MM-dd HH:mm:ss.SSS" /> ...
- 修改stb_image.c以让Duilib直接支持Ico格式的图标显示
duilib不支持ico格式的图标资源, 但是我要想显示ico格式的图标... 发现网上那些转换ico为bmp或其它格式的都不是一个好办法, 也还是不能让duilib直接显示ico... 昨晚稍微研究 ...
- a个人经验总结
个人经验总结 js中事件有个 on前缀 比如 onclick onmousemove jq中事件省略 on 如 click mousemove html引入其他页面 <iframe src= ...
- wp8 入门到精通 LINQ to SQL
http://msdn.microsoft.com/zh-cn/library/bb397924.aspx LINQ 查询操作中的类型关系 (C#) 使用一个人类发明快速检索的方法 // Northw ...
- poj 2195 二分图带权匹配+最小费用最大流
题意:有一个矩阵,某些格有人,某些格有房子,每个人可以上下左右移动,问给每个人进一个房子,所有人需要走的距离之和最小是多少. 貌似以前见过很多这样类似的题,都不会,现在知道是用KM算法做了 KM算法目 ...
- kinect学习笔记(四)——各种数据流
一.kinect开发的一个流程图 1.我们可以知道一个简单的框架就是几部分 (1)选择使用的kinect传感器 KinectSensor.KinectSensors[] (2)打开需要的数据流 _ki ...
- Hark的数据结构与算法练习之煎饼排序
算法说明 假设煎锅里边有N个煎饼摞在了一起,它们大小不一并且顺序不一致,我们需要通过拿铲子将它们不停的翻个,进行排序,最终得到一个底下是大的煎饼,上边是小的煎饼的序列.这个排序的过程就是煎饼排序. 这 ...
- 利用crontab定时备份数据库为sql文件
测试: 每1分钟执行1次,利用crontab */1 * * * * /opt/nginx/db_bak.sh 每天的0点0分把数据库备份为日期格式 0 0 * * * /opt/nginx/db_b ...