这个新功能 Instant Run 并不总是像描述的那样工作。我只是在文本中修改了油漆颜色并立即运行,它会重新启动活动!但是在修改了一些其他代码之后,Instant Run 运行良好。我错过了什么吗?
3 回答
Instant Run在我们的武器库中看起来像是一个很棒的工具,请记住它是 Android Studio 2.0 的新增功能,它仍处于预览版(Canary 频道),因此可能会有一些问题。正如谷歌所说,他们计划在未来几个月内对其进行改进。在撰写本文时,以下是支持的内容:
+--------------------------------------+-----------------------------------------+
| Code Change | Instant Run Support |
+--------------------------------------+-----------------------------------------+
| Change instance method implementation| Supported |
| Change static method implementation | |
| Add or remove a class | |
|--------------------------------------|-----------------------------------------|
| Add, remove, or change | Supported but requires an Activity |
| a string resource | restart. |
+--------------------------------------+-----------------------------------------+
以下是 Instant Run目前不支持的一些代码更改:
- 添加/删除/更改注释
- 添加/删除/更改实例字段
- 添加/删除/更改静态字段
- 添加/删除静态方法签名
- 更改静态方法签名
- 添加/删除实例方法
- 更改实例方法签名
- 更改当前类从哪个父类继承
- 更改已实现接口的列表
- 更改类的静态初始化程序
我在测试 Instant Run 时也有过类似的经验,但在现阶段这是可以预料的。嘿,在 Android 开发者峰会期间,它甚至没有为 Dave Burke 工作几次;)
gradle apt 的用法怎么样apply plugin: 'com.neenbedankt.android-apt'
?使用 apt 会阻止 Android Studio Instant Run 热交换代码吗?
就我而言,我使用 Dagger 2 并且 Instant Run 似乎不起作用....我错过了什么吗?
编辑:不 - 它没有!:) 我的安装显然缺少一些东西——就像在 Dave 的演示中一样。Instant Run 在 2.0 预览版 3b 上似乎仍然不稳定...
即时运行功能需要一些规则;
- gradle 版本的 Android 插件必须是 2.0.0 或更高版本
minSdkVersion
必须为 15 岁或更高- 同时,如果你的应用使用了multidex support(
multiDexEnabled true
),minSdkVersion
必须是21或更高。否则,android studio 会禁用 Instant Run。
参考:
https://developer.android.com/studio/run/index.html#instant-run https://developer.android.com/studio/build/multidex.html#about
但是我仍然可以在我的项目中使用即时运行的热插拔功能,即使它的最小 sdk 版本是 14。