整体要注意的地方

先说明一下整体需要注意的地方

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

  除了目录变更之外.
  引用资源的方式也有所改变.
  1. //以前的写法
  2. <item android:drawable= "@drawable/actionsheet_bottom_pressed" android:state_focused="true"></item>
  3. //现在的写法
  4. <item android:drawable="@mipmap/actionsheet_bottom_pressed" android:state_focused="true"></item>

  不照做的话预览视图那里就会提示

  1. 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是因为不照做会有这个错误

  1. 非法字符: '\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下面会有刚刚添加过的包的编译文件指令.

比如

  1. compile files('libs/baidumapapi_v3_5_0.jar')
  2. compile files('libs/com.umeng.fb.5.4.0.jar')
  3. compile files('libs/gson-2.3.1.jar')
  4. compile files('libs/locSDK_5.2.jar')
  5. compile files('libs/nineoldandroids-2.2.0.jar')
  6. compile files('libs/umeng-analytics-v5.5.3.jar')

 代码引用的包没有出错,即说明引入成功. 

二进制文件(so)的迁移

我也是拖入libs里面.然后在模块的build.gradle中android里面插入

  1. sourceSets {
  2. main {
  3. jniLibs.srcDirs = ['libs']
  4. }
  5. }

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")即可

否则会出现这个错误

  1. Error:Library projects cannot set applicationId. applicationId is set to 'com.XXXXXX' in default config.

3.(可选项)排除一些文件

  1. packagingOptions {
  2. exclude 'META-INF/LICENSE.txt'
  3. exclude 'META-INF/license.txt'
  4. exclude 'META-INF/LICENSE'
  5. exclude 'META-INF/DEPENDENCIES.txt'
  6. exclude 'META-INF/NOTICE.txt'
  7. exclude 'META-INF/NOTICE'
  8. exclude 'META-INF/DEPENDENCIES'
  9. exclude 'META-INF/notice.txt'
  10. exclude 'META-INF/dependencies.txt'
  11. exclude 'META-INF/LGPL2.1'
  12. exclude 'META-INF/ASL2.0'
  13. }

import moudule

在我的场景中为A项目里面import B module.

(见第四个链接,这里直接复制他写的过程)

    1. Goto File -> New -> Import Module.
    2. Source Directory -> Browse the project path.
    3. Specify the Module Name – it is used for internal project reference.
    4. Let Android Studio build the project.
    5. Open build.gradle (Module:app) file.
    6. Add the following line with your module name in place of “Volley” in the dependencies block:
       
       
      1
      compile project(':Volley')
    7. It should look something like this:

这个过程完成之后,

1.在A module里的build.gradle里面会多出 compile project('moduleB')

2.setting.gradle里面会自动include模块B

3.项目里面多出一个我们新建的模块的目录,把导入的模块的内容都导入过来

处理冲突的节点

  1. 由于AB项目里面都有AndroidManifest.xml文件.
    并且在application里面的android:name节点内容不一致,导致合并的时候产生了冲突,这个时候.我们需要对A项目里的节点进行冲突处理.它同步的时候有个提示的.
  1. <application
  2. android:name="com.xxxx" tools:replace="android:name"
  3. >

在A项目的AndroidManifest.xml文件里面对节点进行替换即可.也就是上面的tools:place=''android:name'.

  1. 关于迁移,可以参照官方的指导(第8个链接)
  2.  
  1.  
  1.  

体会:暂时遇到这些问题,我想,既然迁移这么蛋疼,那么这破事我以后能不做就不做,必须做,就等我整理强迫症发作后再做好了.......

参考链接:

  1. Android Studio drawable下的XML文件如何调用mipmap图片资源?
  2. Android studio R文件找不到
  3. Android Studio Jar、so、library项目依赖
  4. Android Studio | How To Add A Library Project?
  5. How to import android project as library and NOT compile it as apk (Android studio 1.0)
  6. Error:Library projects cannot set applicationId. applicationId is set to 'com.gdtel.eshore.anroidframework' in default config.
  7. Android studio Gradle icon error, Manifest Merger
  8. Manifest Merger

从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项的更多相关文章

  1. Android Studio(七):项目从Eclipse到Android Studio迁移

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  2. 从 Eclipse 导入项目到 Android Studio

    ADT已经有些过时了,现在比较流行的安卓开发工具是Android Studio,毕竟是谷歌一直在推广的. 最近装了as,从之前的adt迁移项目到as上,遇到了不少坎. 主要注意以下两点: (1)文件路 ...

  3. (转)Android Studio系列教程一下载与安装 背景Android Studio VS Eclipse准备下载创建HelloWorld项目

    背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Goo ...

  4. 【Android Studio安装部署系列】四十二、Android Studio使用Eclipse中的keystore为App签名

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 从eclipse迁移到AndroidStudio,要用原Eclipse的签名文件,这样才能保证转到AndroidStudio后更新的 ...

  5. Android studio导入eclipse项目且不改变目录结构

    Android studio的安装与配置论坛当中已经有很多在此就不在细说了,现在开始说下如何在Android studio当中导入eclipse的项目且不改变其目录结构和配置,让使用eclipse的同 ...

  6. Android开发环境--eclipse和Android Studio

    一.eclipse下载.安装.配置 因为eclipse是之前就下载过的,现在只能大概说一下eclipse的下载安装过程. 1.下载jdk,配置java环境变量  (1)在官网(http://www.o ...

  7. Android Studio导入Eclipse项目和一些常见的问题

    Android Studio版本 Eclipse项目工程:一个主工程,一个Emojicon依赖库. 有两种方式导入Eclipse工程: 1.兼容Eclipse 2.全新的Android Gradle ...

  8. 关于Android studio 相对 eclipse 优点

    优点:说法一 1.Google推出的,这个是它的最大优势,Android Stuido是Google推出,专门为Android"量身订做"的 2.速度更快,Eclipse的启动速度 ...

  9. Android Studio导入Eclipse项目

    随着Google 对新Android编辑器Android Studio(以下简称AS)的版本不断更新,越来越多的人开始由熟悉的编辑器Eclipse转向AS,而Eclipse开发团队也坦言将放弃对Ecl ...

随机推荐

  1. (转)SQL SERVER的锁机制(一)——概述(锁的种类与范围)

    锁定:通俗的讲就是加锁.锁定是 Microsoft SQL Server 数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制. 定义:当有事务操作时,数据库引擎会要求不同类型的锁定,如相关数 ...

  2. ACdream 1195 Sudoku Checker (数独)

    Sudoku Checker Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit ...

  3. 虚拟机下安装ubuntu后root密码设置

    ctrl+alt+t:调出命令行. 问题描述: 在虚拟机下安装了ubuntu中要输入用户名,一般情况下大家都会输入一个自己的网名或绰号之类的,密码也在这时设置过了. 但是当安装成功之后,使用命令#su ...

  4. Android自定义progressBar

    通过继承系统ProgressBar实现 效果图 实现 HorizontalProgressBarWithNumber 自定义属性 <?xml version="1.0" en ...

  5. javamail实现邮箱验证功能

    javamail是基于SMTP协议和POP3协议的邮件发送与接收系统,在用户注册与登陆的过程中,常需要用到邮箱验证功能,下面是基于javamail的一个简单实现 用户注册后通过servlet得到邮箱地 ...

  6. exit()与_exit()函数的区别(Linux系统中)

    注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXI ...

  7. MySQL错误:Every derived table must have its own alias

    Every derived table must have its own alias 派生表都必须有自己的别名 一般在多表查询时,会出现此错误. 因为,进行嵌套查询的时候子查询出来的的结果是作为一个 ...

  8. ***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权

    本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息, ...

  9. mac上安装gradle

    首先,先download最新版本的gradle,网址如下:http://www.gradle.org/get-started然后将下载下来的zip包放在你要安装的路径上,我安装在/usr/local/ ...

  10. Theano在CentOS 6 下的安装及GPU加速

    系统版本:Red Hat 4.4.6-4 一. 未联网情况下,选择本地安装. 首先安装theano的依赖库,包括:scipy-0.16.1numpy-1.9.2nose-1.3.7 (optional ...