在Android Studio中使用“导入项目”来导入Eclipse项目曾经可以更改项目结构并生成Gradle文件,但现在(我正在使用AS 0.5.3),它只会生成IDEA文件(.iml、.idea),而不是 Gradle文件,并且也不会触及文件结构。
如何将Eclipse项目导入Android Studio?
更新:尝试在Eclipse中导出Gradle文件不会将其导出到应用程序中,在Android Studio中也不会显示为模块。
在Android Studio中使用“导入项目”来导入Eclipse项目曾经可以更改项目结构并生成Gradle文件,但现在(我正在使用AS 0.5.3),它只会生成IDEA文件(.iml、.idea),而不是 Gradle文件,并且也不会触及文件结构。
如何将Eclipse项目导入Android Studio?
更新:尝试在Eclipse中导出Gradle文件不会将其导出到应用程序中,在Android Studio中也不会显示为模块。
在较新版本的Android Studio中,将Eclipse/ADT(Android Development Tool)项目导入Android Studio的最佳方法是直接导入;我们曾经建议您先将其从Eclipse导出到Gradle,但我们没有及时更新ADT以跟上Android Studio的步伐。
无论如何,如果您选择从文件菜单或启动Android Studio时的欢迎屏幕中选择“导入项目”,它都应该通过一个专门的向导来引导您,提示您打算将文件复制到新的目录结构中,而不是在原地导入它们,并提供修复一些常见问题的选项,例如将依赖项转换为Maven样式的包含等。
看起来您没有获得这个专门的流程。我认为它可能没有将您导入的项目识别为ADT项目,并且默认使用了内置于IntelliJ中的旧行为,它不知道Gradle。要使专门的导入工作,请确保以下条件成立:
您导入的项目的根目录必须有一个名为AndroidManifest.xml的文件。更新您的Eclipse ADT插件至22.0或更高版本,然后转到File | Export。
现在转到Android然后单击生成Gradle构建文件
,它将为您生成gradle文件。
选择要导出的项目
现在单击完成
在Android Studio中关闭当前打开的任何项目。您应该看到欢迎使用Android Studio窗口。
点击Import Project。
找到您从Eclipse导出的项目,展开它,选择它并点击OK。
请尝试以下步骤:
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版本替换为当前版本,并从右上角单击“重试”按钮。
希望这能有所帮助。
使用Android Studio变得更加简单
3.根据你使用的项目和库的类型(如ActionBarSherlock),你可能会被提示使用特殊的导入向导,所以继续点击下一步,然后完成。在这种情况下,它很简单。
但有时候调试或运行选项无法使用,会出现错误消息,如下所示:
"此项目结构不基于Gradle或将其迁移到Gradle"
有一些方法可以解决这个问题,就是关闭已打开的Eclipse项目,然后按照之前导入项目的同样过程重新打开相同的项目(使用Eclipse ADT、Gradle等)。这次Android Studio将添加所有必要的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'
}
}
<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"
或者,
我尝试了这两种方法,最终选择了上述第二种作为更简单的方法。但是,如果您希望分别分发您的库模块,则需要创建一个更有意义的清单文件,以反映每个库模块自己的独立要求。
可能有一种更“正确”的方法,它将每个库的需求(例如权限)放在库清单本身中,并允许自动交错进程将其与应用程序声明的那些组合起来。然而,因为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运行时错误时,看起来是由于找不到启动图标资源而引起的,我尝试了这三个功能,问题得到修复。这里有一个更简单的迁移方式:
首先,使用一个示例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/
/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"/>
dependencies {
compile 'com.android.support:appcompat-v7:22.2.0'
}
简单步骤: 1.打开Android Studio。 2.如果有任何项目处于打开状态,请先关闭它们。 3.你会看到一个选项,上面写着“导入非Android Studio项目(Eclipse等)。” 4.点击它,并选择你的项目。 就这样,享受吧!