先说明一下总体须要注意的地方html
1在Android studio创建项目的时候,要注意包名和原来的彻底一致,否则会有不少须要改动.java
2依赖的jar必定必定要找齐,否则新建项目引用不到,要么从新找包,严重的话,那部分代码要重写,影响很恶劣...android
3Android studio的编译器有点蠢.引用了多余的包编译会经过,可是debug会报错.此事要重点排查android.support:appcompat-v7和com.android.support:support-v4包.这2个包颇有多是多余的,lib那里记得删了.api
而后,我建议的迁移顺序是android-studio
对于图片文件,文件夹名从drawable-XX改成mipmap-XXapp
//之前的写法 <item android:drawable= "@drawable/actionsheet_bottom_pressed" android:state_focused="true"></item> //如今的写法 <item android:drawable="@mipmap/actionsheet_bottom_pressed" android:state_focused="true"></item>
不照作的话预览视图那里就会提示eclipse
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
另外.奇葩文件的命名要改ide
好比我以前发现有这样的图片actionsheet_bottom_pressed.9.png.在Android studio引用@mipmap/actionsheet_bottom_pressed"的话引用不到...gradle
为了图快速解决问题我就只能改文件名,而后批量替换(replace )了.ui
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那边会自动同步
drawable→_→mipmap
2015-11-20更新:
关于依赖项的引入,第三个参考连接里面就写的至关好,可是不全面.要结合他的例子去看.这里我除了复述他的观点,我会再补充一些更具体的内容.
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')
代码引用的包没有出错,即说明引入成功.
我也是拖入libs里面.而后在模块的build.gradle中android里面插入
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
本来在eclipse中,能够直接新建一个Android工程,而后别的项目以library的方式引用它.但到了Android studio,这种工程换了一种更精确的说法,叫module/模块.
因而本来在eclipse中A项目引用B项目的场景,在Android studio中会被描述为A模块依赖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' }
在个人场景中为A项目里面import B module.
(见第四个连接,这里直接复制他写的过程)
1
|
compile project(':Volley')
|
这个过程完成以后,
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个连接)
体会:暂时遇到这些问题,我想,既然迁移这么蛋疼,那么这破事我之后能不作就不作,必须作,就等我整理强迫症发做后再作好了.......