Android 图解向 Android Studio 中导入 Eclipse 工程的步骤

转载请注明本文出自 clevergump 的博客:http://blog.csdn.net/clevergump/article/details/50931664, 谢谢!html

注意:
1. 如无特殊说明, 本文中提到的 AS 都是指 Android Studio 这款 IDE.
2. 如无特殊说明, 本文中提到的 “library工程” 和 “库工程” 是相同的概念.
android


一. 前言

现在用 AS 新建的 Android 工程, 都是默认使用 Gradle 系统进行构建的. 而在早期用 Eclipse 开发时, 项目则是用其余系统构建的. 虽然如今咱们的 IDE 基本上都已经由 Eclipse 切换到了 AS, 可是, 咱们依然没法避免在项目开发中使用先前由 Eclipse 开发的工程, 尤为是一些经典的 library 工程. 因此, 熟练掌握 AS 导入 Eclipse工程的步骤是颇有必要的. git


二. Android Studio 导入 Eclipse 工程的操做步骤

下面咱们就以 Chris Banes 开发的经典的下拉刷新库 Android-PullToRefresh 为例来演示 Eclipse 工程转换为 Gradle 工程并导入到 AS 中的步骤. 这里先简要介绍一下这个著名项目的目录结构. 以下所示:github

工程名称 是否库工程 他所依赖的库
library
PullToRefreshListFragment library
PullToRefreshViewPager library
sample library, PullToRefreshListFragment, PullToRefreshViewPager


能够看到, 这个项目中包含了三个库工程: library, PullToRefreshListFragmentPullToRefreshViewPager. 然后边两个库又都分别依赖于 library 这个库, 最后, 该工程中给出的样例代码 sample 须要依赖于全部这三个库. 这个工程内部的依赖关系相对比较复杂, 但若是你掌握了这个工程导入到 AS 的步骤, 那么我相信, 其余 Eclipse 工程导入到 AS 对你来讲也将是垂手可得的事情.web

导入主要分为如下两种状况:android-studio

1. 直接将整个 Eclipse 工程导入到 AS 中.

这种状况一般是因为咱们须要学习先前由 Eclipse 开发的某个经典库的用法, 而为了学习该库的用法, 一般须要将该库所附带的样例工程连同该库一块儿导入到 AS 中进行学习. 下面以导入整个Android-PullToRefresh 项目为例来介绍这种状况的导入步骤: app

  1. 下载整个工程的代码, 下载地址在这里.
  2. 统计好该工程内, 各个子工程对于其余子工程的依赖关系. 咱们在前边已经统计好了, 这里再贴一次:eclipse

    工程名称 是否库工程 他所依赖的库
    library
    PullToRefreshListFragment library
    PullToRefreshViewPager library
    sample library, PullToRefreshListFragment, PullToRefreshViewPager


  3. 将该工程内, 每一个子工程对于其余工程的依赖关系注释掉或直接删掉, 也就是将每一个子工程的 project.properties 文件中的 “android.library.reference = …” 这样的语句注释掉或直接删掉. 根据咱们前边总结的依赖关系表, 须要作以下修改:svg

    • PullToRefreshListFragment 的 project.properties 文件, 为引用其余工程的语句添加 # 号屏蔽符从而注释掉这句代码, 添加 # 号屏蔽符后的效果以下图所示, 或者直接将红框中的代码删掉:
      这里写图片描述
      图 3-1学习

    • 将 PullToRefreshViewPager 的 project.properties 文件, 为引用其余工程的语句添加 # 号屏蔽符从而注释掉这句代码, 添加 # 号屏蔽符后的效果以下图所示, 或者直接将红框中的代码删掉:
      这里写图片描述
      图 3-2

    • 将 sample 的 project.properties 文件, 修改成以下形式, 为引用其余工程的语句添加 # 号屏蔽符从而注释掉这句代码, 添加 # 号屏蔽符后的效果以下图所示, 或者直接将红框中的代码删掉:
      这里写图片描述
      图 3-3

  4. 分别导入该工程中所包含的每个子工程, 将这每个子工程都做为一个 module 单独导入, 因为该工程一共包含四个子工程, 因此一共须要进行四次导入. 下面介绍导入的步骤:

    (1) 导入项目的主工程, 也就是能够运行的那个工程. 在本例中就是 sample 工程, 导入后会变为名称为 app 的一个可运行的 module. 导入步骤以下:

    点击以下菜单: File > New > Import Project, 如图4-1所示 (若是当前 AS 是在欢迎界面, 那么就点击 “Import project (Eclipse ADT, Gradle, etc.)”, 如图4-2所示):

    这里写图片描述
    图 4-1

    这里写图片描述
    图 4-2

    选择 sample 子工程的路径:

    这里写图片描述
    图 4-3

    选择咱们导入后的工程所存放的目标文件夹的路径, 这里我为了演示, 就选择桌面上的文件夹 Android-PullToRefresh, 在实际使用时, 能够选择 AS workspace 中的一个空文件夹.

    这里写图片描述
    图 4-4

    下面的选项所有勾选:

    这里写图片描述
    图 4-5

    而后就成功导入了这个 sample 工程, 而且已经将该工程转换为 Gradle工程了, Gradle工程一般是以 module 来表示原先 Eclipse 工程的子工程, 咱们导入的这个 sample工程就变成了名字为 app 的 module. 这时会报错是很正常的, 由于这个 sample 工程所依赖的其余工程还没被导入进来呢.

    (2) 分别导入项目中的其余子工程, 每次只导入一个工程. 在本例中就是要分三次分别导入 PullToRefreshListFragment, PullToRefreshViewPager, library 这三个工程. 导入步骤以下:

    在刚才已导入 sample 工程的那个界面内, 点击以下菜单: File > New > Import Module, 注意: 这里点击的是 “Import Module” 菜单, 而不是 “Import Project” 菜单:

    这里写图片描述
    图 4-6

    其余步骤与导入 sample 工程的剩余步骤都相似, 只是在选择了当前要导入的工程以后, 会多出一个 Module name 的设置, 能够不用管, 保持默认便可, 也就是下图红框中标出的内容:

    这里写图片描述
    图 4-7

    最终, 导入后, 整个工程的结构以下图所示:

    这里写图片描述
    图 4-8

    再次强调: 在 AS 中, 咱们将导入的每个子工程再也不称做 project(工程), 而是称做 module(模块).

  5. 根据 步骤2 中统计的各个工程 (module) 相互之间的依赖关系, 为 AS 中已导入的各个 module 添加各自的依赖. 添加步骤是: 在左边窗口中切换为 Project 视图, 而后选中该 Project 的名称, 按 F4, 在弹出的窗口中, 选择左边列出的某一个module, 选择”Dependencies” 标签, 点击最右边加号, 选择 “3 Module Dependency”, 而后选择该 module 所依赖的其余 module便可. 如图 5-1, 5-2, 5-3 所示:

    这里写图片描述
    图 5-1

    这里写图片描述
    图 5-2

    这里写图片描述
    图 5-3

    这样就能够添加各个 module 的依赖包了.

    固然, 想必你们必定会有个疑问, 那就是, 在上边图 5-2 左侧的Modules列表中, 发现只列出了 app 这一个module, 而咱们先前一共导入了4个module, 因此这里并无列出其余3个module. 而根据前边的依赖关系统计可知, 其余3个module相互之间也存在依赖关系, 这里没有展现出来, 咱们该如何为他们添加相互之间的依赖关系呢?

    其实这个问题处理起来也简单. 只须要修改一些设置, 就可让另外3个module 显示出来了. 设置步骤是:
    在 Project 视图下, 对着该 Project 名称点右键, 选择”Configure Project Subset…” 按钮 这里写图片描述, 在弹出的窗口中, 把全部 module 名称左侧的复选框都勾选, 点击肯定, 而后再选中该 Project名称, 按F4, 便可看到此时全部的 module 都显示出来了. 具体操做以下图所示:
    这里写图片描述
    这里写图片描述
    这里写图片描述

    在全部的 module 都显示出来之后, 就能够模仿前边介绍的为 app module 添加依赖关系的步骤, 为刚才新显示出来的这些 module 添加依赖关系了. 添加完全部 module 的依赖关系后, 就能够运行该工程了.

2. 为 Android Studio 中一个已有的工程添加一个 Eclipse 库工程做为原工程的依赖.

这种状况在平常开发中更为常见. 例如: 咱们在开发中须要使用下拉刷新库, 若是咱们要使用前文提到的 Chris Banes 开发的那个开源库, 那么咱们只须要将 Android-PullToRefresh 工程中的 library 库工程做为咱们当前项目的一个 module 导入便可, 导入时, 为了能见名知意, 咱们能够将这个 module 的名称改成相似于 pullToRefresh_library 之类的名称 (在前边图 4-7 的红框中能够设置这个名称). 导入后, 再将咱们工程中全部须要依赖于这个库的 module, 都分别添加这个库的 module 为他们各自的依赖. 添加步骤参见前边的图 5-1, 5-2, 5-3, 或者按照图 5-4 的方式, 直接在相应 module 文件夹内的 build.gradle文件内添加相应的依赖代码, 注意添加依赖代码时, 被依赖的 module 名称必定要与咱们在图 4-7 的红框中设置的该下拉刷新库的名称一致, 固然其实该名称最终是保存在整个工程根目录下的 settings.gradle 文件中, 咱们也能够从这个文件中获取到咱们为该下拉刷新库所设定的名称, 并据此来添加依赖代码.


三. 阅读本文的建议

本文是基于 Google 官方 Android Developers 网站上的文章 Migrating from Eclipse ADT 结合实际例子作的介绍, 文中不免有些地方描述不太清晰, 建议读者朋友仍是要阅读一下 Google 官方提供的这篇英文原文, 由于只有这篇英文原文才是最完整而且最具备权威性的介绍, 本文的介绍仅供参考.