您只需点击几下,即可让 Android Studio 设置好要部署至 Android 模拟器或已连接设备的新项目。安装应用后,您可以使用 Apply Changes 功能来部署某些代码和资源变更,无需构建新的 APK。
如需构建和运行您的应用,请按以下步骤操作:
- 在工具栏中,从运行配置下拉菜单中选择您的应用。
从目标设备下拉菜单中,选择要用来运行应用的设备。
如果您未配置任何设备,则需要通过 USB 连接设备或创建 AVD,才能使用 Android 模拟器。
点击 Run 按钮
。
更改运行/调试配置
当您首次运行应用时,Android Studio 会使用默认运行配置。运行配置用于指定要通过 APK 还是 Android App Bundle 部署您的应用、要运行的模块、要部署的软件包、要启动的 Activity、目标设备、模拟器设置、logcat 选项,等等。
默认运行/调试配置会构建 APK,启动默认项目 Activity,并使用 Select Deployment Target 对话框选择目标设备。如果默认设置不适合您的项目或模块,您可以自定义运行/调试配置,也可以在项目、默认和模块级别创建新配置。如要修改运行/调试配置,请依次选择 Run > Edit Configurations。如需了解详情,请参阅创建和修改运行/调试配置。
更改构建变体
默认情况下,在您点击 Run 后,Android Studio 会构建应用的调试版本,不过这仅供在开发期间使用。
如要更改 Android Studio 使用的构建变体,请在菜单栏中依次选择 Build > Select Build Variant。
对于不含原生/C++ 代码的项目,Build Variants 面板有两列:Module 和 Active Build Variant。模块的 Active Build Variant 值决定了 IDE 部署到连接的设备并显示在编辑器中的构建变体。
图 1. 对于不含原生/C++ 代码的项目,Build Variants 面板有两列
如需在变体之间切换,请点击模块的 Active Build Variant 单元格,然后从列表字段中选择所需的变体。
对于含有原生/C++ 代码的项目,Build Variants 面板包含三列:Module、Active Build Variant 和 Active ABI。模块的 Active Build Variant 值决定了 IDE 部署到设备并显示在编辑器中的构建变体。对于原生模块,Active ABI 值决定了编辑器使用的 ABI,但不会影响部署的内容。
图 2. 对于含有原生/C++ 代码的项目,Build Variants 面板增加了 Active ABI 列
如要更改构建变体或 ABI,请点击 Active Build Variant 或 Active ABI 列的单元格,然后从列表中选择所需的变体或 ABI。您更改选择后,IDE 会自动同步您的项目。 更改应用或库模块的任一列都会将更改应用于所有相关行。
默认情况下,新项目设置有两个构建变体:调试变体和发布变体。您需要构建发布变体来为应用的公开发布做好准备。
如需构建应用的其他变体(每个变体具有不同的功能或设备要求),您可以定义其他构建变体。
构建您的项目
Run 按钮 用于构建应用并将其部署到设备。不过,要构建应用以共享或上传到 Google Play,您需要使用 Build 菜单中的某个选项来编译项目的部分或全部代码。在选择表 1 中列出的任意构建选项之前,请务必先选择要使用的构建变体。
表 1. Build 菜单中的构建选项。
菜单项 | 说明 |
---|---|
Make Module | 编译自上次构建以来已修改的所选模块中的所有源文件,以及所选模块以递归方式依赖的所有模块。编译包括相关源文件和所有关联的构建任务。您可以通过在 Project 窗口中选择模块名称或模块的某个文件来选择要构建的模块。此命令不会生成 APK。 |
Make Project | 生成所有模块。 |
Clean Project | 删除所有中间/缓存的构建文件。 |
Rebuild Project | 针对所选构建变体运行 Clean Project 并生成 APK。 |
Build Bundle(s)/APK(s) > Build APK(s) |
构建包含当前项目中所有模块的 APK(使用模块的选定变体进行构建)。构建完成后,系统将显示确认通知,提供指向该 APK 文件的链接以及用于在 APK 分析器中分析该文件的链接。 如果您选择的构建变体是调试构建类型,则系统会使用调试密钥为该 APK 签名,然后您就可以安装该 APK 了。如果您选择了发布变体,则默认情况下,APK 处于未签名状态,您必须手动为 APK 签名。 或者,您也可以从菜单栏中依次选择 Build > Generate Signed Bundle/APK。 Android Studio 会将您构建的 APK 保存在 |
Build Bundle(s)/APK(s) > Build Bundle(s) |
构建包含当前项目中所有模块的 Android App Bundle(使用模块的选定变体进行构建)。构建完成后,系统将显示确认通知,提供指向该 App Bundle 的链接以及用于在 APK 分析器中分析该 App Bundle 的链接。 如果您选择的构建变体是调试构建类型,则系统会使用调试密钥为该 App Bundle 签名,然后您就可以使用 Android Studio 会将您构建的 APK 保存在 |
弹出一个包含向导的对话框,用于设置新的签名配置,以及构建签名的 App Bundle 或 APK。您需要先使用发布密钥为您的应用签名,然后才能将其上传到 Play 管理中心。如需详细了解应用签名,请参阅为您的应用签名。 |
注意:Run 按钮 可以在设置了
testOnly="true"
的情况下构建 APK,这意味着,只能通过 Android Studio 使用的 adb
安装 APK。如需获得无需 adb 即可安装的可调试 APK,请选择您的调试变体,然后依次点击 Build Bundle(s)/APK(s) > Build APK(s)。
如需详细了解 Gradle 针对每个命令执行的任务,请按照下一部分中的说明打开 Build 窗口。如需详细了解 Gradle 和构建流程,请参阅配置构建。
监控构建流程
您可以通过依次点击 View > Tool Windows > Build(或点击工具窗口栏中的 Build 图标 ),查看有关构建流程的详细信息。该窗口显示 Gradle 为构建应用而执行的任务,如图 3 所示。
图 3. Android Studio 中的“Build Output”窗口
- “Build”标签页:以树状显示 Gradle 执行的任务,其中每个节点表示一个构建阶段或一组任务依赖项。如果您收到构建时错误或编译时错误,可以检查该树并选择一个元素来查看错误输出,如图 4 所示。
图 4. 在“Build Output”窗口中检查错误消息
- “Sync”标签页:显示 Gradle 为与项目文件同步而执行的任务。与 Build 标签页类似,如果您遇到同步错误,可以在树中选择元素来查找有关错误的更多信息。
- Restart:通过为项目中的所有模块生成中间构建文件,执行与依次选择 Build > Make Project 相同的操作。
- Toggle view:在以图形树形式显示任务执行情况与显示 Gradle 中更详细的文本输出(这与在 Android Studio 3.0 及更低版本上的 Gradle Console
窗口中显示的输出相同)之间切换。
如果您的构建变体使用产品变种,Gradle 也会调用任务来构建这些产品变种。如需查看所有可用构建任务的列表,请依次点击 View > Tool Windows > Gradle(或点击工具窗口栏中的 Gradle 图标 )。
如果在构建流程中出现错误,Gradle 可能会向您推荐一些命令行选项来帮助您解决问题,如 --stacktrace
或 --debug
。如需在构建流程中使用命令行选项,请执行以下操作:
- 打开 Settings 或 Preferences 对话框:
- 在 Windows 或 Linux 上,从菜单栏中依次选择 File > Settings。
- 在 Mac OSX 上,从菜单栏中依次选择 Android Studio > Preferences。
- 依次转到 Build, Execution, Deployment > Compiler。
- 在“Command-line Options”旁边的文本字段中,输入您的命令行选项。
- 点击 OK 保存,然后退出。
当您下次尝试构建应用时,Gradle 会应用这些命令行选项。
Apply Changes
在 Android Studio 3.5 及更高版本中,Apply Changes 可让您将代码和资源更改推送给正在运行的应用,而无需重启应用(在某些情况下,甚至无需重启当前的 Activity)。当您要部署和测试小范围的增量更改,同时保持设备的当前状态时,这种灵活性可帮助您控制应用的重启范围。Apply Changes 使用搭载 Android 8.0(API 级别 26)或更高版本的设备上支持的 Android JVMTI 实现中的功能。如需详细了解 Apply Changes 的工作原理,请参阅 Android Studio Project Marble:Apply Changes。
要求
Apply Changes 操作仅在满足以下条件时可用:
- 您使用调试构建变体来构建应用的 APK。
- 您将应用部署到搭载 Android 8.0(API 级别 26)或更高版本的目标设备或模拟器上。
使用 Apply Changes
如果要将更改部署到兼容设备,请使用以下选项:
- “Apply Changes and Restart Activity”图标
尝试通过重启 Activity 但不重启应用来应用资源和代码更改。通常,如果您修改了方法正文中的代码或修改了现有资源,则可以使用此选项。
您也可以按
Ctrl+Alt+F10
(或者,在 macOS 上,按Control+Shift+Command+R
)来执行此操作。- “Apply Code Changes”图标
尝试仅应用代码更改而不重启任何内容。 通常,如果您修改了方法正文中的代码,但没有修改任何资源,则可以使用此选项。如果您既修改了代码,又修改了资源,则应改用 Apply Changes and Restart Activity。
您也可以按
Ctrl+F10
(或者,在 macOS 上,按Control+Command+R
)来执行此操作。- 运行
部署所有更改并重启应用。如果使用哪个 Apply Changes 选项都无法应用您所做的更改,请使用此选项。如需详细了解需要重启应用的更改类型,请参阅 Apply Changes 的限制。
为 Apply Changes 启用 Run 回退机制
在您点击 Apply Changes and Restart Activity 或 Apply Code Changes 后,Android Studio 会构建新 APK 并确定是否可以应用更改。如果无法应用更改并且会导致 Apply Changes 失败,则 Android Studio 会改为提示您重新运行您的应用(通过点击“Run”图标 )。不过,如果您不想在每次发生这种情况时都收到提示,则可以将 Android Studio 配置为在无法应用更改时自动重新运行您的应用。
如需启用此行为,请按以下步骤操作:
打开 Settings 或 Preferences 对话框:
- 在 Windows 或 Linux 上,从菜单栏中依次选择 File > Settings。
- 在 macOS 上,从菜单栏中依次选择 Android Studio > Preferences。
依次转到 Build, Execution, Deployment > Deployment。
选中复选框以针对任一 Apply Changes 操作启用自动 Run fallback。
点击 OK。
依赖于平台的更改
Apply Changes 的某些功能依赖于 Android 平台的特定版本。如要应用这些类型的更改,您的应用必须部署到搭载相应 Android 版本(或更高版本)的设备上。
更改类型 | 最低平台版本 |
---|---|
添加方法 | Android 11 |
Apply Changes 的限制
Apply Changes 旨在加快应用部署流程。不过,它的使用时机存在一些限制。如果您在使用 Apply Changes 时遇到任何问题,请提交错误。
需要重启应用才能实现的代码更改
某些代码和资源更改必须在重启应用之后才能应用,其中包括以下更改:
- 添加或移除字段
- 移除方法
- 更改方法签名
- 更改方法或类的修饰符
- 更改类继承行为
- 更改枚举中的值
- 添加或移除资源
- 更改应用清单
- 更改原生库(SO 文件)
库和插件
某些库和插件会自动更改应用的清单文件或清单中引用的资源。这些自动更新可能会通过以下方式干扰 Apply Changes:
- 如果库或插件更改应用的清单,您不能使用 Apply Code Changes 图标
或 Apply Changes and Restart Activity 图标
,而必须重启应用,然后才能看到相应更改。
- 如果库或插件更改应用的资源文件,您不能使用 Apply Code Changes 图标
,而必须使用 Apply Changes and Restart Activity 图标
来查看相应更改。
您可以通过为调试构建变体停用所有自动更新来避免这些限制。
例如,Crashlytics 在每次构建过程中使用唯一的构建 ID 更新应用资源,这会阻止您使用 Apply Code Changes 图标 ,并需要您重启应用的 Activity 才能看到相应更改。您可以停用此行为,以便能将 Apply Code Changes 与 Crashlytics 一起用于调试 build。
直接引用已安装 APK 中的内容的代码
如果您的代码直接引用已在设备上安装的应用 APK 中的内容,在您点击 Apply Code Changes 图标 后,该代码可能会导致崩溃或出现异常。
发生此行为的原因是,当您点击 Apply Code Changes 时,设备上的底层 APK 会在安装过程中被替换。在这些情况下,您可以改为点击 Apply Changes and Restart Activity 图标
或 Run 图标
。