如何将 Eclipse 项目导入 Android Studio?

60

在Android Studio中使用“导入项目”来导入Eclipse项目曾经可以更改项目结构并生成Gradle文件,但现在(我正在使用AS 0.5.3),它只会生成IDEA文件(.iml、.idea),而不是 Gradle文件,并且也不会触及文件结构。

如何将Eclipse项目导入Android Studio?

更新:尝试在Eclipse中导出Gradle文件不会将其导出到应用程序中,在Android Studio中也不会显示为模块。


这是什么类型的项目?你是如何精确地导入它的?如果你正在导入一个ADT项目,该项目通常会有Eclipse项目文件或AndroidManifest.xml文件,那么它应该会带你通过专门的导入过程,设置Gradle构建文件并修复项目的其他问题。但它不支持非Android项目的一般导入。 - Scott Barta
1
这是一个包含多个库的Android项目,我通过AS欢迎界面上的“导入项目”按钮进行导入。我知道它应该是一个专门的导入向导,因为我以前做过,但出于某种原因,这次它就是不起作用。 - Phazor
它没有给你提供专门的导入向导? - Scott Barta
11个回答

69

在较新版本的Android Studio中,将Eclipse/ADT(Android Development Tool)项目导入Android Studio的最佳方法是直接导入;我们曾经建议您先将其从Eclipse导出到Gradle,但我们没有及时更新ADT以跟上Android Studio的步伐。

无论如何,如果您选择从文件菜单或启动Android Studio时的欢迎屏幕中选择“导入项目”,它都应该通过一个专门的向导来引导您,提示您打算将文件复制到新的目录结构中,而不是在原地导入它们,并提供修复一些常见问题的选项,例如将依赖项转换为Maven样式的包含等。

看起来您没有获得这个专门的流程。我认为它可能没有将您导入的项目识别为ADT项目,并且默认使用了内置于IntelliJ中的旧行为,它不知道Gradle。要使专门的导入工作,请确保以下条件成立:

您导入的项目的根目录必须有一个名为AndroidManifest.xml的文件。
要么:
  • 根目录必须包含来自Eclipse的.project.classpath文件
或者
  • 根目录必须包含ressrc目录。
如果您的项目很复杂,可能没有将其指定为导入成功所需的根目录。

3
没错,我一开始选择的是项目根目录(就像在Eclipse中一样),而不是主项目目录。在选择了主项目目录后,我成功地获得了专门的向导。谢谢! - Phazor
2
谢谢您的解释。我试图导入根目录,其中包括几个库项目和应用程序项目。一切似乎都很好,除了它没有创建gradle文件或新的文件夹结构。因此,当它开始时,它抱怨它不是gradle构建,并且我无法弄清楚为什么它不起作用。也许在将来AS可以更清楚地说明正在发生什么。 - Greg Ennis
1
这应该在开发人员文档中全部以粗体字书写。 - Ewoks
抱歉点了踩,是误点了,现在无法撤销。 - Corey Young
我从Github上拉取的项目在根目录下有清单文件,还有src和res文件夹,但是我没有得到专门的向导。有什么线索吗?这是我正在AS中尝试运行的项目:https://github.com/DHM47/Native-Clip-Board - Srujan Barai
显示剩余4条评论

26

从Eclipse导出

  1. 更新您的Eclipse ADT插件至22.0或更高版本,然后转到File | Export。

  2. 现在转到Android然后单击生成Gradle构建文件,它将为您生成gradle文件。

    enter image description here

  3. 选择要导出的项目

    enter image description here

  4. 现在单击完成

    enter image description here

导入到Android Studio

  1. 在Android Studio中关闭当前打开的任何项目。您应该看到欢迎使用Android Studio窗口

  2. 点击Import Project。

  3. 找到您从Eclipse导出的项目,展开它,选择它并点击OK。


请等待几分钟,让Android Studio导入您的项目,这可能需要一些时间,但不用担心。 - Ajay S
我已经尝试过这个方法,但它只会为根目录生成gradle文件,却没有生成模块文件(例如build.gradle),尽管我已经选择了项目(以及所有相关的库)。 - Phazor
@Phazor,我已经更新了我的答案,请一步一步地查看它们,应该可以工作。不要尝试从文件->导出导入项目,首先在Android Studio中关闭当前打开的项目,然后您应该看到欢迎使用Android Studio窗口,在那里您将找到“导入项目”,从那里导入您从Eclipse导出的项目。 - Ajay S
请更新您的Eclipse ADT插件(必须是22.0或更高版本)。 - Ajay S
4
我们实际上没有更新文档,但这不再是将Eclipse项目导入Android Studio的最佳方法,主要是因为Studio的更新速度比我们在ADT中更新导出的频率快得多。直接导入是更好的选择,但我还不确定为什么在这种情况下它无法正常工作。 - Scott Barta
显示剩余3条评论

11

请尝试以下步骤:

1- 点击“导入项目”(Eclipse,ADT,...)

输入图像描述

2- 选择您的Eclipse项目的主目录

输入图像描述

3- 保持默认设置。前两个选项是将jar文件转换为远程库(依赖项)。这意味着在构建Android Studio时尝试在本地系统或远程存储库中查找库。最后一个选项是仅在导入后将一个文件夹显示为应用程序。

输入图像描述

4- 然后,您将看到更改摘要

输入图像描述

5- 如果看到Gradle项目同步失败,请转到项目视图(左上角)。然后,您应该转到您的项目-> app并打开build.gradle。

输入图像描述

6- 然后,您应该将compilesdkVersion和targetsdkVersion更改为当前版本,即您在buildToolsVersion中看到的版本(我的是23)。例如,在我的项目中,我应该在两个地方将17更改为23。

7- 如果你在使用依赖项时遇到错误,需要更改其版本。例如,在我的项目中,我需要检查正在使用的Android支持库版本。因此,我打开SDK管理器并滚动到底部查看版本号。然后,我应该将Android Studio版本替换为当前版本,并从右上角单击“重试”按钮。

输入图片描述 输入图片描述 输入图片描述 输入图片描述 输入图片描述

希望这能有所帮助。


8

使用Android Studio变得更加简单

  1. 选择导入项目(eclipse.....) enter image description here
  2. 然后选择你的基于eclipse的文件夹项目,就像下面这个例子 enter image description here

3.根据你使用的项目和库的类型(如ActionBarSherlock),你可能会被提示使用特殊的导入向导,所以继续点击下一步,然后完成。在这种情况下,它很简单。

enter image description here

4. 完成了。 在此输入图像描述

但有时候调试或运行选项无法使用,会出现错误消息,如下所示:

"此项目结构不基于Gradle或将其迁移到Gradle"

有一些方法可以解决这个问题,就是关闭已打开的Eclipse项目,然后按照之前导入项目的同样过程重新打开相同的项目(使用Eclipse ADT、Gradle等)。这次Android Studio将添加所有必要的Gradle文件,并且绿色的调试选项也将起作用。我有一次是偶然尝试了这个方法,结果成功了,希望对你也有用。


1
另一个开始的选择是从文件-->新建-->导入项目 - Abhijeet

6
自从提出这个问题以来,Android Studio已有所改进,最新版本的Android Studio(截至本文撰写时,我们已经到了2.1.1)具有相当好的Eclipse导入功能,因此将Eclipse项目直接导入Android Studio现在是将项目从Eclipse迁移到Android Studio的最佳方法。
我将在下面描述如何进行此操作,包括可能遇到的一些问题。我将特别介绍导入包含多个应用程序共享一个或多个项目库的Eclipse工作区(迄今为止发布的方法似乎仅限于导入单个Eclipse应用程序项目及其项目库)。虽然我没有处理每个可能的问题,但我会详细介绍其中的一些问题,希望对那些第一次进行此过程的人有所帮助。
我最近导入了一个Eclipse工作区中的项目。该工作区包含四个库项目,每个项目与最多九个其他项目共享。
一些背景信息:
Eclipse工作区包含多个项目,可以是库项目或应用程序。
Android Studio项目类似于Eclipse工作区,因为它可以包含库项目和应用程序。但是,在Android Studio中,库项目或应用程序由“模块”表示,而在Eclipse中则由“项目”表示。
因此,总结一下:Eclipse工作区最终将成为Android Studio项目,工作区内的Eclipse项目将成为Android Studio项目内的模块。
您应该通过创建Android Studio项目(File / New / New Project)开始导入过程。您可能会为此项目命名与您给Eclipse工作区命名相同(或类似)的名称。这个项目最终将包含所有模块,每个模块都代表一个要导入的Eclipse项目(包括项目库)。
只要将导入的文件放置在不同的文件夹层次结构中,导入过程就不会更改您的原始Eclipse文件,因此您应该选择一个不在原始Eclipse层次结构中的文件夹来存储此项目。例如,如果您的Eclipse项目都在名为Android的文件夹中,则可以创建一个名为AStudio的同级文件夹。
然后,您的Android Studio项目可以创建为这个新文件夹的子文件夹。新项目向导将提示您输入此顶级项目文件夹,它将在其中创建您的项目。
Android Studio的新项目向导随后会要求您在创建项目时逐个配置单个模块。这可能有点令人困惑,因为他们从未告诉您正在创建模块,但是您确实正在创建具有单个模块的项目。显然,每个项目都需要至少一个模块,因此,由于您依赖于Eclipse提供您的模块,因此您的初始模块将是一个占位符,以虚无地满足该形式要求。
因此,您可能希望为项目创建一个尽可能少的初始模块。因此,选择Phone and Tablet作为模块的类型,接受默认最小SDK(API级别8),并选择Add No Activity作为模块。
首先,在您的工作区中选择一个需要最多库的Eclipse应用程序项目作为第一个要导入的项目。这样做的好处是,当您导入该项目时,所有使用它的库项目(直接或间接地,如果您的某些库项目本身需要其他库项目)都将随着导入过程一起导入。
每个导入的项目都将在您的Android Studio项目中拥有自己的模块。所有这些模块都将是彼此的兄弟(无论是在您的项目层次结构中还是在文件层次结构中),就像您单独导入这些模块一样。但是,模块之间的依赖关系将在导入过程中为您创建(在应用程序的build.gradle文件中)。
请注意,在您完成导入、测试和调试这个“最相关”的Eclipse项目及其支持库项目后,您将继续导入第二个Eclipse应用程序项目(如果您的工作区中有第二个项目)和其库项目模块(先前导入的模块将被导入向导找到作为现有模块并被重复使用于此新模块,而不是被复制)。
因此,您永远不必直接从Eclipse导入任何库项目;它们都将间接引入,基于它们对您导入的应用程序项目的依赖关系。这是假设您工作区中的所有库项目都是为该工作区中的一个或多个应用程序项目服务而创建的。
要执行此第一个应用程序项目的导入,在Android Studio中,当您在刚创建的项目中时,请选择文件/新建/新建模块。您可能认为应该使用文件/新建/导入模块,但不,您不应该这样做,因为如果这样做,Android Studio将创建一个新项目来容纳您导入的模块,并将导入您的模块到该项目中。您实际上可以使用这种方法创建您的第一个模块,但是第二个到第N个模块仍需要使用这种其他方法(将模块导入到现有项目中),因此我认为只需从“空”项目(或者说,具有自己的虚无、无所作为的占位符模块)开始,然后将每个Eclipse项目作为新模块导入到该项目中(即我们在这里采取的方法),可能会更少混淆。
因此,您将采取几乎空的新项目,并在其中执行文件/新建/新建模块。这将调用向导,让您选择要创建的模块类型。您必须选择“导入Eclipse ADT项目”。这是访问知道如何将Eclipse项目转换为Android Studio模块(以及它所依赖的库模块)的向导。
当提示输入源文件夹时,您应该输入Eclipse项目的文件夹(即包含该项目的AndroidManifest.xml文件的文件夹)。
导入向导将显示它打算创建的模块名称(类似于原始Eclipse项目的名称,但首字母小写,因为这是区分模块名称和项目名称的约定(项目名称以大写字母开头)。通常接受此默认值效果非常好。
在模块名称下面是一个名为“Additional required modules”的部分。这将列出模块需要的每个库(或其库等)所需的所有库。由于这是您导入的第一个模块,因此这些库都不会存在于您的项目中,因此每个库的导入框默认已选中。您应该保留这些选中,因为您需要这些模块。(请注意,当您导入稍后的Eclipse应用程序项目时,如果它们需要的库已经被导入,则这些库仍将出现在此处,但会有一个注释说明“项目已经包含具有此名称的模块”,并且导入框将默认未选中。在这种情况下,您应该将框取消选中,以便导入器将您新导入的模块连接到已经导入的库模块。使用Android Studio创建模块的默认名称可能很重要,以允许IDE找到并重复使用这些库模块。
接下来,导入器将提供用Gradle依赖项替换任何jar和库源,并为任何依赖模块创建camelCase模块名称,默认情况下检查所有这些选项。您通常应该保留这些选项并继续。但请注意警告可能存在的问题。请记住,您可以随时通过“项目结构”对话框删除已导入的一个或多个模块,并重新开始导入过程。
接下来的显示(可能因人而异)声称Android支持存储库未安装在我的SDK安装中。它提供了一个按钮,以打开Android SDK Manager以进行安装。但是,该按钮对我无效。我手动打开了SDK管理器作为单独的应用程序,并发现Android支持存储库已经安装。但是,有一个更新。我安装了它,并在导入对话框中点击了“刷新”按钮,但什么也没有发生。因此,我继续进行,这个存储库的缺失似乎没有影响导入过程(尽管稍后在处理导入的代码时,我收到了关于它缺失的消息,我能够通过点击提供的链接来解决问题-至少是暂时的)。最终,当我安装存储库的更新时,这个问题消失了,因此您可能根本不会遇到它。
此时,您将单击“完成”,稍等片刻,它应该创建您的模块并构建它们。如果一切顺利,您应该在Gradle控制台中收到“BUILD SUCCESSFUL”消息。
一个奇怪的问题是,如果构建失败,则您可能无法在项目层次结构中看到导入的模块。似乎你需要先获得第一个有效的构建,在那之后新的模块才会出现在那里(至少我的经验是这样的)。如果您想要删除它们并重新开始导入,则仍然可以在“文件/项目结构”对话框中查看新模块(例如)。
请记住,因为您没有更改原始的Eclipse项目,所以您可以随时删除刚刚导入的模块(如果导入失败),并重新开始。即使在删除Android Studio模块后,您甚至可以在Eclipse端进行更改,如果这将使第二次导入变得更好(只要保留在Eclipse下构建现有源代码的替代能力即可)。如我们在下面讨论版本控制时所见,可能需要保留在Eclipse下构建的能力,因为Android Studio下的项目结构发生了变化,因此如果需要返回到移动到Android Studio之前的提交(例如进行错误修复),则希望能够在Eclipse中构建该早期提交。
要删除模块,必须选择“文件/项目结构”,然后从对话框的左侧选择模块,然后按删除键。出于某种原因,我无法直接在项目层次结构中删除模块,必须使用此“项目结构”对话框完成。
导入向导会生成一个包含任何问题的详细列表以及解决这些问题所采取的操作的import-summary.txt文件。如果您在构建或运行已导入的代码时遇到问题,应仔细阅读它,因为它可能提供有关正在发生的情况的线索。它还将帮助您找到导入器移动以适应Android Studio项目的不同结构的事物。
如果一切顺利,那么请看一下您可能遇到的这些可能问题以及这些问题的解决方案:
总的来说,我遇到了两种主要类型的问题:
1. 混淆(Proguard)问题 2. 清单(Manifest)问题
当Proguard出现问题时,库中方法的(混淆后的)名称可能与从您的应用程序调用它们时使用的名称不匹配,您将收到诸如“错误:无法找到符号类...”之类的编译器错误。
在Eclipse中,针对库项目,Proguard的东西基本上被忽略,对于您正在构建的任何应用程序项目,该应用程序的Proguard内容决定了对其依赖的所有库进行混淆等处理的方式。而这通常是您想要的。
但是,在Android Studio中,您需要做出一些更改才能获得相同的效果。基本上,在每个库项目模块的build.gradle文件中,您需要像这样:
buildTypes {
    release {
        minifyEnabled false
        consumerProguardFiles 'proguard.cfg'
    }
}

其中proguard.cfg是您的库模块自己的ProGuard配置文件。

"consumerProguardFiles"中的“consumer”一词显然指的是使用该库模块的应用程序模块。因此,来自该应用程序的ProGuard命令优先于库模块本身的命令,并且显然这会导致协调和兼容的混淆,以便从应用程序模块到其库模块的所有调用都具有匹配的符号。

这些“consumerProguardFiles”条目不会在导入过程中自动生成(至少我个人的经验如此),因此如果在导入过程中未为您创建它们,则需要确保将其编辑到库模块的build.gradle文件中。

如果您想分别分发带有混淆的库项目,则需要为它们编写单独的ProGuard文件;我自己没有这样做,因此超出了本答案的范围。

在应用程序模块中,您需要像这样:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles 'proguard.cfg'
    }
}

(顺便说一句,截至我写这篇文章时,尽管我的应用程序运行得非常好,但我还没有直接确认是否实际上正在使用这种方法混淆代码,请自行检查 - 例如,使用apktool之类的反编译工具。我稍后会检查这一点,并在获取该信息时编辑此答案)。
第二种问题是由于Eclipse在编译使用这些库项目的应用程序项目时,基本忽略了库项目的清单文件,而在Android Studio中,两者交错使用,显然并不始终将应用程序的清单文件置于其库文件之前。
我遇到这个问题是因为我的库清单列出了(仅供文档目的)抽象Activity类作为主Activity。我的应用程序中有一个从此抽象类派生而来的类,在使用该库的每个应用程序的清单文件中都声明了该类。
在Eclipse中,这从未引起过任何问题,因为库清单被忽略了。但在Android Studio中,我的应用程序最终成为了该抽象类的活动类,这在代码尝试实例化该抽象类时导致了运行时错误。
在这种情况下,您有两个选择:
  1. 使用工具语法在应用程序清单中覆盖特定的库清单内容 - 例如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.goalstate.WordGames.FullBoard.trialsuite"
       xmlns:tools="http://schemas.android.com/tools"
       .
       .
        <application
           tools:replace="android:name"

或者,

  1. 从您的库模块清除几乎所有清单中的内容,并依赖于应用程序模块的清单提供每个值。请注意,您确实需要为每个库模块拥有一个清单,但是所需的仅是标题和只包含一个包属性的基本清单元素。

我尝试了这两种方法,最终选择了上述第二种作为更简单的方法。但是,如果您希望分别分发您的库模块,则需要创建一个更有意义的清单文件,以反映每个库模块自己的独立要求。

可能有一种更“正确”的方法,它将每个库的需求(例如权限)放在库清单本身中,并允许自动交错进程将其与应用程序声明的那些组合起来。然而,因为Eclipse忽略库的清单,因此至少最初完全依赖于应用程序清单并削减库清单到最低限度似乎更安全。

请注意,您的Eclipse项目的某些项目属性以及清单属性已用于构建部分build.gradle文件。具体而言,您在build.gradle中的compileSdkVersion设置为Eclipse项目属性中的项目构建版本,applicationId是您的应用程序的清单中的包名称,minSdkVersion和targetSdkVersion也从应用程序的清单文件复制。build.gradle的依赖项部分来自您项目属性中的库项目依赖项。

请注意,这可能使您的AndroidManifest.xml值变得多余,并且很可能是残留的(即未使用的)。这可能会导致混淆。我的理解是,build.gradle值是实际产生影响的值,例如targetSdkVersion的清单值不再用于构建目的。但是,它们仍然可能由应用商店(例如Google Play)使用;我无法确定其中任何一种,因此在此时只是保持它们同步。

除了上述两种问题外,还有更常规的事情,比如导入一个具有22个项目构建级别的项目,而您只在Android Studio中安装了SDK级别23。在这种情况下,更好的方法可能是将compileSdkVersion从22(导入的值)移动到23,而不是安装SDK以获得级别22,但是任何一种方法都可以起作用。

在整个过程中,如果某些内容无法正确构建并且你做了一些更改来解决它,你可能想尝试“Build / Rebuild Project”和/或“Tools / Android / Sync Project with Gradle Files”,以及/或“File / Invalidate Caches/Restart”,以确保你的更改已经完全被纳入。我不确定这些什么时候真正必要,因为我不知道在没有成功构建的情况下有多少是增量完成的,但是我经常执行它们(作为一种迷信的仪式),我相当肯定这有帮助。例如,当我遇到Resources$NotFound运行时错误时,看起来是由于找不到启动图标资源而引起的,我尝试了这三个功能,问题得到修复。
当您第一个Eclipse项目执行此操作并获得成功的构建之后,然后就可以选择位于Android Studio显示屏幕顶部下拉菜单中的应用程序模块,在播放按钮左侧,然后单击播放按钮本身,然后选择设备或Android虚拟设备,该应用程序应加载并运行。
同样,您应该能够使用“Build/Generate Signed APK”功能创建应用程序的签名副本。请注意,运行签名副本时可能会出现某些与导入相关的错误,这些错误在使用播放按钮时不会出现,因此您需要确认两者都可以正常工作,然后才能确定您的导入已完成。
随后,您可能需要打开版本控制。我自己正在使用git,但还有许多其他可用选项。
版本控制大多超出了此答案的范围,但导入过程会受到一些影响。首先,在Eclipse中,您可能会将各个项目放置在各种文件夹中,但是当您导入Android Studio时,所有模块都将创建为主项目文件夹的直接子文件夹。因此,如果您在Eclipse中为每个项目或每个组织项目的父文件夹下组织的相关组中有单独的git文件夹(就像我所做的那样),那么这不会很好地转换为Android Studio。
由于我尚未在Android Studio中使用版本控制,因此我的知识有限,因此可能有解决此问题的方法,但似乎Android Studio中的所有版本控制都在项目级别统一,因此所有模块都将在单个git归档中。
这意味着您可能需要放弃旧的git归档,并开始使用导入的源代码的新归档。这意味着您要保留旧git存档,以便它可以与Eclipse一起执行任何必要的错误修复等,至少一段时间内。并且您还需要保留它以保留项目的历史记录。
如果你很幸运,所有的项目都在一个Eclipse工作空间下,并且如果你使用了单个git归档文件来管理这些项目,那么你可以将旧的git归档文件从Eclipse工作空间文件夹中复制到Android Studio项目文件夹中。然后,你可以将任何仍然相关的.gitignore项从Eclipse项目中编辑到自动生成的Android Studio项目的.gitignore文件中,让git在导入过程中找出已经发生了哪些变化(某些东西确实会被移动 - 例如,清单文件不再位于模块的顶层)。其他人报告说,git非常善于找出发生了什么变化;我自己没有尝试过。
但即使你这样做了,在回到先于从Eclipse切换到Android Studio的提交时,你将处理一组只能从Eclipse内部理解的文件。因此,这听起来很“困难”。特别是因为Eclipse仍将指向其原始的项目文件夹。
我个人有多个git归档文件用于我的各种相关项目集,所以我决定在Android Studio中重新开始git并进行干净的断裂。如果你必须这样做,它可能会影响你的计划,因为在这种情况下,您需要处于代码开发的非常稳定的阶段,因为一旦您切换到Android Studio,就会失去与版本控制系统中旧代码的某些可访问性(例如,与导入后的代码合并的能力)。
这个答案中涉及git的部分在一定程度上是推测性的,因为我还没有在导入的项目文件中实际使用过版本控制,但我想加入它以给出一些挑战的想法,并计划在我更多地在Android Studio内部使用版本控制之后更新我的答案。

1
感谢您对Android Studio项目结构和Eclipse工作区结构之间差异的详细讨论 - 这对于理解过渡过程中发生的情况特别有帮助,尤其是关于将库项目合并到应用程序中的部分。您在Git方面的经验有任何更新吗?我处于与使用Eclipse项目结构建立代码库相同的位置,并希望能够以某种便捷的方式访问早期版本的源文件。 - jsevy
@jsevy:最终我使用了独立的 git 安装,而不是使用 Android Studio 集成的 git。我在 Android Studio 项目级别上设置了一个单一的 git 存档。文件的颜色编码仍然有效,因为 Android Studio 理解我正在使用的 git 存档(它是由 gitHub 分发的,我从 posh git 命令 shell 中使用)。我依赖 gitk 来显示提交链,所有操作都在 Android Studio 外部完成。我并不是说从 Android Studio 内部使用 git 是一个坏主意;我只是决定采用使用外部安装的方法。 - Carl
@jsevy:关于Eclipse版本,我只是将旧的git存档留在了旧的文件夹层次结构中。如果我需要回到代码的Eclipse版本,我会使用那个存档,并使用Eclipse进行更新的构建。我已经失去了从Eclipse“时代”的提交与来自Android Studio“时代”的提交合并的能力,但幸运的是这还没有必要。如果我必须对旧代码进行这样的更改,我只需在Android Studio代码中并行进行即可。 - Carl

3
根据http://tools.android.com/tech-docs/new-build-system/migrating-from-eclipse-projects,您有几个选择:
- 直接导入
- 先从Eclipse预导出。

如果您的项目包含许多仅适用于Eclipse的关系,则从Eclipse预导出可能是更好的选择。 A.S.无法“翻译”Eclipse可以生成的所有内容。如果您想在此项目代码上继续使用Eclipse和A.S.,则这是更好的选择。如果选择此方法,请阅读上面的链接,其中有一些重要的先决条件。

直接导入到AS将允许AS“翻译”和重新排列项目,并且是推荐的方法,特别是如果您没有返回Eclipse的意图。在这种情况下,您让A.S.向导完成所有操作,不需要手动生成gradle文件。

1

这里有一个更简单的迁移方式:

首先,使用一个示例Android Studio项目开始。 打开Android Studio并创建一个新项目(或)只需在此处下载“示例”工作室项目:https://github.com/AppLozic/eclipse-to-android-studio-migration。 现在,按照以下说明在Android Studio中打开已下载的项目。

将Eclipse项目模块导入到Android Studio中。 选择文件 -> 新建 -> 导入模块 图像标题

接下来,选择Eclipse项目的路径并导入模块。如果您看到“同步Gradle项目失败”的消息,则单击“安装构建工具并同步项目...”

现在,按照以下简单步骤删除示例项目模块:

打开settings.gradle并删除“include ‘:app’” 右键单击“app”模块并“删除”它。 现在,我们在Android Studio中打开了带有Gradle构建的Eclipse项目。

这里还有一些其他可能对您有所帮助的链接:

http://developer.android.com/sdk/installing/migrate.html 来源:http://www.applozic.com/blog/migrating-project-from-eclipse-to-studio/


1
除了Scott Barta上面的答案,如果存在对Eclipse工作区库文件的引用,例如,您仍可能遇到导入问题。
/workspace/android-support-v7-appcompat

这是一个常见的情况。在这种情况下,导入操作将会停止,直到您提供一个引用(如果您从git存储库克隆,可能不会有该引用),即使指向您自己的安装路径(例如/android-sdk-macosx/extras/android/m2repository/com/android/support/appcompat-v7),也无法被识别并且将停止导入,让您处于无人区。

为了解决这个问题,请查找来自Eclipse项目的project.properties或.classpath文件中的引用并将其删除/注释掉,例如:

<classpathentry combineaccessrules="false" kind="src" path="/android-support-v7-appcompat"/>

那样就可以在导入阶段通过,然后可以像Android教程中所示,在build.gradle(Module: app)中添加这些引用,如下所示:
dependencies {
    compile 'com.android.support:appcompat-v7:22.2.0'
}

0

简单步骤: 1.打开Android Studio。 2.如果有任何项目处于打开状态,请先关闭它们。 3.你会看到一个选项,上面写着“导入非Android Studio项目(Eclipse等)。” 4.点击它,并选择你的项目。 就这样,享受吧!


0
将Eclipse/ADT项目导入Android Studio的最佳方法是直接导入。首先,进入Eclipse项目并删除project.properties文件。之后,打开Android Studio工具并导入Eclipse项目(Eclipse ADT、Gradle等)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接