Contents
  1. 1. 1. 从Eclipse导出工程
  2. 2. 2. 修改Gradle配置文件
  3. 3. 3. 导入Android Studio

本篇Blog是从我在CSDN的个人博客中移植过来的,因为实在是受不了CSDN上blog的编辑和上传的速度了。正文如下:
搞了差不多一整天,终于成功把原来在Eclipse的项目移植到了Android Studio上面。其实网上关于如何做移植已经有不少文章了,而且Android Develop的官网也有介绍,但是差不多网上的版本都已经过时,因为Android StudioGradle的版本更新实在是太快了。。。(仿佛隐隐约约看到了从Swift1开始使用到Swift2之后的语法变化导致项目大面积语法修改的悲剧。。。)

好了,言归正传,详细记录一下整个过程。首先说一下大前提:

  • 我的Eclipse版本是Mars.1,不过这个Eclipse版本应该不是问题,反正导出的Gradle的几个文件还是要手动修改的。
  • 我的Android Studio的版本是1.4,目前已经有1.5了,我就装了差不多有1周,就出了1.5,还没来得及更新,这个问题也不大。建议大家先自己把Studio的环境搭好,然后自己写一个Hello World调试一下,因为后面有些东西如果你事先调试好了,可能会节省一些工作量。
  • 在导出项目前最好备份一下你的工程(就像我在之前的Blog中说过的,在进行新的尝试之前,备份一下原始的资料永远不会多余)。我的项目就是导出以后因为多了一些Gradle的文件,所以还用Eclipse编译的时候会出一些errors。如果你的也出了一些类似于“In gradle projects always user http://schemas.android.com/apk/res-auto for.....”的错误,不要慌张,你能看到你的工程里面有个绿色图标的Gradle,把那个删除,然后重启Eclipse,应该就ok了。

下面进入正式步骤:

1. 从Eclipse导出工程

  1. File –> Export

  2. 选择Generate Gradle build files,点击Next

  3. 这个是告诉我们一些关于导入Studio的Tips,可以直接Next

  4. 选中你的工程
    这里说一下,我的主项目是 zj_tzqu,然后SlidingMenuLib是一个资源项目,也就是说,在project.properties文件中是这样引入的:android.library.reference.1=../SlidingMenuLib

  5. 勾选 Force overriding of existing files
    如果不选中,就有可能会出现上面的提示。当然,这是因为我之前尝试了好多次,所以已经在文件中有相应的Gradle的文件了,保险起见,直接覆盖掉原来的文件。

  6. 点击Finish,然后就导出了。
    第一步就算完成了,其实第一步基本上没有把你的原程序做一些语法的修改,只是多了一些Gradle的配置的文件,我把他们都截了出来,就是这几个:

2. 修改Gradle配置文件

主要修改的就是上图中的两个红框标出来的。

  1. gradle –> wrapper –> gradle-wrapper.properties
    可以看到我通过Eclipse导出来的版本号是1.12,那截止到2015年11月26日,最新的gradle版本是2.9、 1.12是14年12月份的版本,可见Google对Studio的厚爱,就像Apple 对Swift一样。。。
    我就把这里改成了gradle-2.9-all.zip,当然你也可以改成官网上提供的任一一个版本(官网在此:https://services.gradle.org/distributions

  2. build.gradle

    注意图中的红框内容是我改过的了。为什么改成1.3.0 因为我看了一眼我的Studio的hello world的工程的build.gradle文件,发现里面的gradle是1.3.0,所以就改成了一样的。我没有试验如果改成比如2.9.0这样的行不行。但是既然hello world可以正常运行,那就表示这样的配置是ok的。这也是为什么在开头的时候我建议大家先搭好Studio的环境,然后跑一下hello world证实你的环境是OK的。
    别看第2步很简单,但是其实这是很关键的一步,这里也要感谢下这篇博主的文章,我也是在他的基础上自己摸索出来的~~

3. 导入Android Studio

把我们之前5个和Gradle相关的文件(夹),带上工程的两个文件夹(1.4步骤中选中的两个文件夹)一起拷贝出来,到一个新的文件夹下面。为什么要这样?1是Studio在导入的时候提示我们不要直接导入Eclipse workspace的工程;2是我的Studio是装在Mac上的,Eclipse是在Windows上面的。

  1. 我们选择Import project(Eclipse ADT, Gradle, etc.)
    我之前在网上查的都是说要选择 Import Non-Android Studio project, 但是估计是Studio的版本不同,Studio 1.4 根本就没有这一项,但是看了一眼前几项也不是,然后注意这里面有Gradle关键字,所以就试一试吧。

  2. 选择build.grade 或者settings.gradle都可以,看到界面上面的提示了吧,我选择的是build.grade,就是我们上面改动过的文件。

  3. 手动下载grade-2.9-all.zip
    其实如果你的Studio环境没问题,就是会开始正常用gradle编译项目了,但是如果你第一次使用,那你一定会出现我的问题,就是Gradle sync的时候出错。原因当时就是我们亲爱的GFW了,即便是我翻墙通过Studio下载grande,速度也是慢的1B啊,所以这里我们可以自己下载gradle版本然后再放到相应的路径下面:

    基本上网上都引用了这样一段话,为什么不推荐我们自己下载,因为其实Studio是在路径下面多了一个25位的标识码

    在gradle-2.9-all的下面,其实是有一个文件夹的,这个文件夹会根据不同用户生成不同的,你们的肯定不会是我这个。
    所以,最好的办法是先让Studio自动生成这个文件夹,也就是我们做完第2步之后,其实Studio已经在试图download我们设定的gradle版本,如果你去文件夹里面看,会发现有一个.zip.lck 和另外一个.zip.park的文件。但是一个是0k,一个是下载了一半的文件,如果没有翻墙,这个过程非常非常慢。
    所以,我们看到这个路径已经建好了以后,就可以直接去官网上下载对应的版本了。注意,如果是Mac上,Safiri会自动把zip包解压缩了,如果你重新压缩Safiri下载的文件成zip放到路径下面,会出这样的提示:

    1
    2
    Error:Gradle distribution 'https://services.gradle.org/distributions/gradle-2.9-all.zip' contains too many directories.
    Expected to find exactly 1 directory.

    所以,要不把safiri的自动解压功能关闭了,要不就换个浏览器下载,总之不要动下载下来的那个gradle-2.9-all.zip的包。
    然后把这个包放到25位唯一码的文件夹下面。
    重新试一下sync gradle,你就会发现,gradle开始build我们的工程了。之后就很顺利了,很快工程就建立好了。

到此,整个工程的导入就算全部完成了。

再附送两个小Tips:

  1. 有的同学可能习惯了Eclipse的样式布局,初次接触Studio会发现work space区域很不习惯。

    这是系统默认的布局,那我们可以通过切换到Project模式来看,这样就和Eclipse的布局非常像了。

  2. 如果你发现移植过来的代码中的注释内容全部都乱掉了,而且在Gradle初次编译的时候,你发现有很多错误提示: “编码 UTF8的不可映射字符”,但是我们的程序没有问题,是可以运行的,就是注释部分看不了。
    很简单,在右下角

    点击UTF-8 选择GB2312就ok了。
    注意,可能是这部分的代码是你从第三方拿过来直接凑上去的,很容易出现编码上的问题,只需要改变这个文件的编码格式就可以了。不要动全局的设置。

好了,好好享受Android Studio带给大家极致版的Coding 体验吧~~~

Contents
  1. 1. 1. 从Eclipse导出工程
  2. 2. 2. 修改Gradle配置文件
  3. 3. 3. 导入Android Studio