迁移至 Android Studio
将项目迁移至 Android Studio 需要适应新的项目结构、构建系统和 IDE 功能。 如果您要从 Eclipse 迁移至 Android 项目,Android Studio 会提供导入工具,以便您可以将现有代码快速移至 Android Studio 项目和基于 Gradle 的构建文件。如需了解详细信息,请参阅从 Eclipse 迁移。
如果您要从 IntelliJ 进行迁移,而且您的项目已经使用 Gradle,则只需从 Android Studio 打开现有项目。 如果您正在使用 IntelliJ,但项目尚未使用 Gradle,则需要先执行一些手动准备工作才能将项目导入 Android Studio。如需了解详细信息,请参阅从 IntelliJ 迁移。
Android Studio 基础知识
在准备迁移至 Android Studio 时您需要了解以下关键区别。
项目和模块组织
Android Studio 基于 IntelliJ IDEA IDE。 如需了解 IDE 基础知识,例如导航、代码自动完成和键盘快捷键,请参阅探索 Android Studio。
Android Studio 不使用工作区,因此各个项目在单独的 Android Studio 窗口中打开。 Android Studio 将代码组织到项目中,其中包含从应用源代码到构建配置和测试代码等定义 Android 应用的所有信息。每个项目包含一个或多个模块,您可以将项目分成独立的功能单元。 模块可独立构建、测试和调试。
如需了解有关 Android Studio 项目和模块的详细信息,请参阅项目概览。
基于 Gradle 的构建系统
Android Studio 的构建系统基于 Gradle,并使用以 Groovy 语法编写的构建配置文件,以便于扩展和自定义。
基于 Gradle 的项目提供适用于 Android 开发的重要功能,包括:
- 支持二进制文件库 (AAR)。 无需再将库源代码复制到您自己的项目中,您只需声明依赖关系,即可自动下载库并将其合并到您的项目中。这包括在构建时自动合并到资源、清单条目、ProGuard 排除规则和自定义 Lint 规则等。
- 支持构建变体。 例如,构建变体允许您从同一项目中构建应用的不同版本(如免费版和专业版)。
- 构建配置 和自定义很简单。 例如,您可以从 Git 标记中提取版本名称和版本代码作为构建的一部分。
- 可以从 IDE、命令行 和 Jenkins 等持续集成服务器中使用 Gradle,随时随地提供相同的构建。
如需了解有关使用和配置 Gradle 的详细信息,请参阅配置构建。
依赖关系
在 Android Studio 中,库依赖关系使用依赖关系声明,对于具有 Maven 坐标的已知本地源代码和二进制库,则使用 Maven 依赖关系。如需了解详细信息,请参阅配置构建变体。
测试代码
通过使用 Eclipse ADT,可在不同的项目中编写仪器测试,并通过清单文件中的 <instrumentation>
元素进行集成。Android Studio 在项目的主源代码集中提供 androidTest/
目录,因此您可以在同一项目视图中轻松添加和维护仪器测试代码。Android Studio 在项目的主源代码集中还提供了 test/
目录,用于本地 JVM 测试。
从 Eclipse 迁移
Android Studio 为使用 Eclipse 创建的现有 Android 项目提供自动导入工具。
迁移先决条件
在将您的应用从 Eclipse 迁移到 Android Studio 前,请查看以下步骤,确保您的项目已做好转换的准备,同时确认 Android Studio 中有您需要的工具配置:
在 Eclipse ADT 中:
- 确保 Eclipse ADT 根目录包含
AndroidManifest.xml
文件。此外,根目录必须包含 Eclipse 的.project
和.classpath
文件或res/
和src/
目录。 - 构建您的项目,以确保导入时保存并包含了最新的工作区和项目更新。
- 在需要导入的
project.properties
或.classpath
文件中注释掉对 Eclipse ADT 工作区库文件的任何引用。您可以在导入后在build.gradle
文件中添加这些引用。如需了解详细信息,请参阅配置构建。 - 记录工作区目录、路径变量和任何实际路径映射可能会有所帮助,这些内容可用于指定任何未解析的相对路径、路径变量和链接的资源引用。Android Studio 允许您在导入过程中手动指定任何未解析的路径。
在 Android Studio 中:
- 如果您尚未安装,点击此处下载 Android Studio。 如果您已经安装了 Android Studio,请点击 Help > Check for Updates(在 Mac 上,点击 Android Studio > Check for Updates),验证其是否是最新的稳定版本。
- 因为 Android Studio 无法迁移任何第三方 Eclipse ADT 插件,请记下您在 Eclipse 中使用的任何第三方插件。您可以查看 Android Studio 中的相同功能,或在 IntelliJ Android Studio 插件存储库中搜索兼容的插件。使用 File > Settings > Plugins 菜单选项管理 Android Studio 中的插件。
- 如果您计划在防火墙后面运行 Android Studio,则必须为 Android Studio 和 SDK 管理器设置代理。Android Studio 设置向导同步、第三方库访问、访问远程存储库、Gradle 初始化和同步以及 Android Studio 版本更新需要互联网连接。如需了解详细信息,请参阅代理设置。
将 Eclipse 项目导入 Android Studio
您应根据现有 Eclipse ADT 项目的结构确定其导入方式:
- 如果您在 Eclipse ADT 中有多个关联项目共享同一个工作区,请将第一个项目作为项目导入,然后添加随后的关联项目作为该项目中的模块。
- 如果您的 Eclipse ADT 项目在同一个工作区中共享依赖关系,但并不关联,请将每个 Eclipse ADT 项目作为独立的项目逐个导入 Android Studio。在导入过程中 Android Studio 将在新创建的项目之间维持这些共享的依赖关系。
作为项目导入:
- 启动 Android Studio,并关闭任何打开的 Android Studio 项目。
- 在 Android Studio 菜单中点击 File > New > Import Project。
- 或在“Welcome”屏幕中点击 Import project (Eclipse ADT, Gradle, etc.)。
选择包含
AndroidManifest.xml
文件的 Eclipse ADT 项目文件夹,并点击 Ok。选择目标文件夹,然后点击 Next。
选择导入选项,然后点击 Finish。
- 导入过程中会提示您将任何库和项目依赖关系迁移到 Android Studio,并将依赖关系声明添加到
build.gradle
文件。如需了解有关此过程的详细信息,请参阅创建 Android 库。
导入过程中还将用 Maven 依赖关系替换具有已知 Maven 坐标的任何已知源代码库、二进制库和 JAR 文件,因此您无需手动保留这些依赖关系。
导入选项还允许您输入工作区目录和任何实际路径映射,以处理任何未解析的相对路径、路径变量和链接的资源引用。
- Android Studio 导入应用并显示项目导入摘要。查看摘要,了解项目重组和导入过程的详细信息。
将项目从 Eclipse ADT 导入 Android Studio 后,Android Studio 中的每个应用模块文件夹都包含该模块的完整源代码集,包括 src/main/
和 src/androidTest/
目录、资源、构建文件以及 Android 清单。在开始应用开发前,您应解决项目导入摘要中显示的所有问题,确保项目重组和导入过程成功完成。
作为模块导入:
- 启动 Android Studio,并打开想要添加模块的项目。
- 在 Android Studio 菜单中点击 File > New > Import Module。
- 选择包含
AndroidManifest.xml
文件的 Eclipse ADT 项目文件夹,并点击 Ok。 - 如果需要,可修改模块名称,并点击 Next。
- 导入过程中会提示您将任何库和项目依赖关系迁移到 Android Studio,并将依赖关系声明添加到
build.gradle
文件。如需了解有关迁移库和项目依赖关系的详细信息,请参阅创建 Android 库。导入过程中还将用 Maven 依赖关系替换具有已知 Maven 坐标的任何已知源代码库、二进制库和 JAR 文件,因此您无需手动保留这些依赖关系。导入选项还允许您输入工作区目录和任何实际路径映射,以处理任何未解析的相对路径、路径变量和链接的资源引用。 - 点击 Finish。
验证导入的项目
完成导入过程后,使用 Android Studio 的 Build 和 Run 菜单选项构建您的项目,并验证输出。 若项目未正确构建,请检查以下设置:
打开 SDK 管理器(点击 Android Studio 中的“Android SDK Manager”按钮或 Tools > Android > SDK Manager),验证您安装的工具版本是否匹配 Eclipse 项目的设置。Android Studio 从您导入的 Eclipse 项目继承 SDK 管理器和 JDK 设置。
要验证其他 Android Studio 设置,请点击 File > Project Structure 并检查以下设置:
在 SDK Location 项下,验证 Android Studio 是否可以访问正确的 SDK、NDK 和 JDK 位置和版本。
注:如果您使用了默认设置,则 Eclipse ADT 会在User\user-name\android-sdks\
(对于 Windows)和Users/user-name/Library/Android/sdk/
(对于 Mac)中安装 Android SDK。在 Project 项下,验证 Gradle 版本、Android 插件版本和相关存储库。
- 在 Modules 项下,验证应用和模块设置,例如签署配置和库依赖关系。
- 如果您的项目依赖另一个项目,则确保在应用模块文件夹中的
build.gradle
文件中正确定义该依赖关系。如需了解有关定义依赖关系的详细信息,请参阅配置构建变体。
如果在检查这些设置后,在 Android Studio 中构建和运行项目时仍出现异常问题,请考虑修改 Eclipse ADT 项目并重新开始导入过程。
注: 将 Eclipse ADT 项目导入 Android Studio 将创建一个新的 Android Studio 项目,不会影响现有 Eclipse ADT 项目。
从 IntelliJ 迁移
如果您的 IntelliJ 项目使用 Gradle 构建系统,则可以将项目直接自动导入到 Android Studio 中。 如果您的 IntelliJ 项目使用 Maven 或其他构建系统,则需要先将其设置为使用 Gradle,然后才能迁移至 Android Studio。
导入基于 Gradle 的 IntelliJ 项目
如果您已经将 Gradle 与 IntelliJ 项目配合使用,则可以按照以下步骤在 Android Studio 中将其打开:
导入非 Gradle IntelliJ 项目
如果您的 IntelliJ 项目尚未使用 Gradle 构建系统,您可以选择两种方式将项目导入到 Android Studio 中:
- 新建一个空的 Android Studio 项目,然后将现有源代码复制到与新项目关联的目录中。 如需了解详细信息,请参阅通过新建空项目进行迁移。
- 为项目手动新建一个 Gradle 构建文件,然后将项目和新的构建文件导入到 Android Studio 中。 如需了解详细信息,请参阅通过创建自定义 Gradle 构建文件进行迁移。
通过新建空项目进行迁移
要通过新建空项目,然后将源文件复制到新目录,从而将项目迁移至 Android Studio,请继续执行以下操作:
- 打开 Android Studio,然后点击 File > New > New Project。
- 为应用项目输入名称,指定应该创建项目的位置,然后点击 Next。
- 选择将运行应用的机型,然后点击 Next。
- 点击 Add No Activity,然后点击 Finish。
- 在 Project 工具窗口中,点击箭头以打开视图下拉列表,然后选择 Project 视图以查看并探索新 Android Studio 项目的结构。如需了解有关更改视图以及 Android Studio 如何构建项目的详细信息,请参阅项目文件。
- 导航至为新项目选择的位置,然后将代码、单元测试、仪器测试和资源从旧的项目目录移至新项目结构中的正确位置。
- 在 Android Studio 中,点击 File > Project Structure 以打开 Project Structure 对话框。 确保已在左侧窗格中选定应用的模块。
- 在项目的 Properties 选项卡中进行必要的修改(例如,修改
minSdkVersion
或targetSdkVersion
)。 - 点击 Dependencies 并将项目依赖的任何库添加为 Gradle 依赖项。 要添加新的依赖项,请点击 Add,然后选择要添加的依赖项类型并按提示操作。
- 点击 OK 保存所做的修改。
- 点击 Build > Make Project 测试构建项目,并解决任何未解决的错误。
通过创建自定义 Gradle 构建文件进行迁移
要通过新建指向现有源文件的 Gradle 构建文件将项目迁移至 Android Studio,请继续执行以下操作:
- 在开始前,确保将项目文件备份到单独位置,因为迁移流程将修改已部署的项目的内容。
- 接下来,在项目目录中创建一个名为
build.gradle
的文件。build.gradle
文件将包含 Gradle 运行构建所需的所有信息。
默认情况下,Android Studio 期望项目的结构如图 1 所示。
图 1. Android 应用模块的默认项目结构。
由于您的 IntelliJ 项目不使用相同结构,因此build.gradle
文件需要将构建的源目录指向您的现有文件夹(例如,res/
和src/
),而不是默认的新目录结构。 以下示例build.gradle
文件包括 Gradle 构建的基本设置以及android{}
块内部的sourceSets{}
块,用于定义正确的源目录并移动测试和构建类型以避免命名冲突。将下面的代码块复制到您的build.gradle
文件,然后执行使用现有项目设置所需的任何更改。例如,您可能还有其他要包括的依赖项,请务必使用其他目标 SDK 版本或者需要为您的源目录指定其他位置。
- // This buildscript{} block configures the code driving the build
- buildscript {
- /**
- * The nested repositories{} block declares that this build uses the
- * jcenter repository.
- */
- repositories {
- jcenter()
- }
- /**
- * This block declares a dependency on the 3.4.0 version
- * of the Gradle plugin for the buildscript.
- */
- dependencies {
- classpath 'com.android.tools.build:gradle:3.4.0'
- }
- }
- /**
- * This line applies the com.android.application plugin. Note that you should
- * only apply the com.android.application plugin. Applying the Java plugin as
- * well will result in a build error.
- */
- apply plugin: 'com.android.application'
- /**
- * This dependencies block includes any dependencies for the project itself. The
- * following line includes all the JAR files in the libs directory.
- */
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- // Add other library dependencies here (see the next step)
- }
- /**
- * The android{} block configures all of the parameters for the Android build.
- * You must provide values for at least the build tools version and the
- * compilation target.
- */
- android {
- compileSdkVersion 28
- buildToolsVersion "28.0.3"
- /**
- * This nested sourceSets block points the source code directories to the
- * existing folders in the project, instead of using the default new
- * organization.
- */
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- resources.srcDirs = ['src']
- aidl.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- res.srcDirs = ['res']
- assets.srcDirs = ['assets']
- }
- // Move the tests to tests/java, tests/res, etc...
- instrumentTest.setRoot('tests')
- /**
- * Move the build types to build-types/<type>
- * For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
- * This moves them out of them default location under src/<type>/... which would
- * conflict with src/ being used by the main source set.
- * Adding new build types or product flavors should be accompanied
- * by a similar customization.
- */
- debug.setRoot('build-types/debug')
- release.setRoot('build-types/release')
- }
- }
如需了解有关设置和自定义 Gradle 构建文件的详细信息,请参阅配置构建。
- 接下来,确定您要使用的库项目。 有了 Gradle,您不再需要添加这些库作为源代码项目,相反,您可以在构建文件的
dependencies{}
块中参考它们。然后,构建系统会为您处理这些库,包括下载库、合并到资源和合并清单条目。以下示例将 Google Play Services 的声明语句和许多支持库添加到上面的示例构建文件中显示的dependencies{}
块中。
- ...
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- // Google Play Services
- compile 'com.google.android.gms:play-services:9.8.0'
- // Support Libraries
- compile 'com.android.support:appcompat-v7:28.0.0'
- compile 'com.android.support:cardview-v7:28.0.0'
- compile 'com.android.support:design:28.0.0'
- compile 'com.android.support:gridlayout-v7:28.0.0'
- compile 'com.android.support:leanback-v17:28.0.0'
- compile 'com.android.support:mediarouter-v7:28.0.0'
- compile 'com.android.support:palette-v7:28.0.0'
- compile 'com.android.support:recyclerview-v7:28.0.0'
- compile 'com.android.support:support-annotations:28.0.0'
- compile 'com.android.support:support-v13:28.0.0'
- compile 'com.android.support:support-v4:28.0.0'
- // Note: these libraries require the "Google Repository" and "Android Repository"
- // to be installed via the SDK manager.
- }
如需在确定库的正确声明语句方面获得帮助Gradle, please 可以根据 Maven Central 为您提供正确的声明语句。
- 保存您的
build.gradle
文件,然后关闭 IntelliJ 中的项目。 导航至您的项目目录,然后删除.idea
目录以及项目内的任何.iml
文件。 - 启动 Android Studio,然后点击 File > New > Import Project。
- 找到项目目录,点击上面创建的
build.gradle
文件以将其选定,然后点击 OK 导入项目。 - 点击 Build > Make Project,以通过构建项目并解决找到的任何错误来测试构建文件。
后续步骤
将项目迁移至 Android Studio 后,阅读构建和运行您的应用,详细了解关于使用 Gradle 进行构建以及在 Android Studio 中运行应用的信息。
根据您的项目和工作流程,您可能还想要阅读更多有关使用版本控制、管理依赖关系、签署和打包应用或配置和更新 Android Studio 的信息。若要开始使用 Android Studio,请阅读探索 Android Studio。
配置版本控制
Android Studio 支持多个版本控制系统,包括 Git、GitHub、CVS、Mercurial、Subversion 和 Google Cloud Source Repositories。
在将您的应用导入 Android Studio 后,使用 Android Studio VCS 菜单选项启用对所需版本控制系统的 VCS 支持、创建存储库、导入新文件至版本控制以及执行其他版本控制操作:
- 在 Android Studio VCS 菜单中点击 Enable Version Control Integration。
- 从下拉菜单中选择要与项目根目录关联的版本控制系统,然后点击 OK。此时,VCS 菜单将根据您选择的系统显示多个版本控制选项。
注: 您还可以使用 File > Settings > Version Control 菜单选项设置和修改版本控制设置。
如需了解有关使用版本控制的详细信息,请参阅 IntelliJ 版本控制参考。
Android 支持存储库和 Google Play 服务存储库
虽然 Eclipse ADT 使用 Android 支持库和 Google Play 服务库,但在导入过程中 Android Studio 会用 Android 支持存储库和 Google 存储库替换这些库,以便继续使用兼容的功能并支持新的 Android 功能。Android Studio 使用已知的 Maven 坐标将这些依赖关系添加为 Maven 依赖关系,因此不需要手动更新这些依赖关系。
在 Eclipse 中,要使用支持库,您必须针对想要使用的每个支持库在开发环境中修改项目的类路径依赖关系。在 Android Studio 中,无需将库源代码复制到您自己的项目中,您只需声明依赖关系,即可自动下载库并将其合并到您的项目中。这包括在构建时自动合并到资源、清单条目、ProGuard 排除规则和自定义 Lint 规则。如需了解有关依赖关系的详细信息,请参阅配置构建变体。
应用签署
如果您的应用在 Eclipse ADT 中使用调试证书,Android Studio 将继续引用该证书。 或者,调试配置使用 Android Studio 生成的一个调试密钥库和一个默认密钥,二者密码均已知,调试密钥库位于 $HOME/.android/debug.keystore
中。当您从 Android Studio 运行或调试您的项目时,调试构建类型将自动使用此调试配置。
在构建用于发布的应用时,Android Studio 会应用在 Eclipse ADT 中使用的发布证书。 如果在导入过程中未找到发布证书,则将发布签署配置添加到 build.gradle
文件,或使用 Build > Generate Signed APK 菜单选项打开 Generate Signed APK Wizard。如需了解签署应用的详细信息,请参阅签署您的应用。
调整 Android Studio 的最大堆内存
默认情况下,Android Studio 的最大堆内存为 1280MB。 如果您要处理较大的项目,或您的系统有大量 RAM 可用,您可以通过在 Android Studio 的 VM 选项中增加最大堆内存来提高性能。
如需了解有关配置 Android Studio 设置的详细信息,请参阅配置 Android Studio 和配置 Android Studio。
针对 Instant Run 优化您的项目
Android Studio 2.0 中引入的 Instant Run 是 Run 和 Debug 命令的行为,可以大幅缩短应用更新的间隔时间。尽管首次构建可能需要花费较长的时间,Instant Run 在向应用推送后续更新时则无需构建新的 APK,因此,这样可以更快地看到更改。您可以通过更改一些 Android Studio 设置来改进 Instant Run 的构建流程。
有关针对 Instant Run 性能配置项目的详细信息,请参阅针对 Instant Run 配置和优化您的项目。
软件更新
Android Studio 与 Gradle 插件、构建工具和 SDK 工具分开更新。 您可以指定想要使用的 Android Studio 版本。
默认情况下,在有新稳定版本发布时 Android Studio 将自动更新,但您可以选择更频繁地进行更新,也可以接收预览版或测试版。
如需了解有关更新 Android Studio 以及使用预览版和测试版的详细信息,请参阅保持更新。