在我的项目中 targetSdkVersion 设置在 21 下方时,gradle build正常运行并且项目正常运行。这是build.gradle文件:
defaultConfig {
applicationId "com.air"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
但是当 targetSdkVersion 设置为 23 且启用了即时运行时,它会抛出此异常:
com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]中:65536
为什么?
Instant Run对我来说有点混乱。我不清楚它在Android Studio中是如何工作的。
答案 0 :(得分:2)
Instant Run通过执行热插拔,热交换或冷交换,将更新的代码和资源推送到连接的设备或模拟器。它会根据您所做的更改类型自动确定要执行的交换类型。
https://developer.android.com/studio/run/index.html#instant-run
答案 1 :(得分:2)
而不是构建新的APK,它只推送那些新的更改,在某些情况下,应用甚至不需要重新启动,但会立即显示这些代码更改的效果。
Instant Run通过执行热插拔,热交换或冷交换,将更新的代码和资源推送到连接的设备或模拟器。
答案 2 :(得分:1)
每次更改应用程序的代码时,都不需要完全构建和重新部署apk,从而实现快速开发。它仅推送所做的更改并立即使用它们。
有三种类型的掉期 - HOT,WARM和COLD 。 (按照增加的时间顺序反映变化)
时会触发 HOT SWAPS时会触发更改现有实例方法或静态的实现代码 方法
WARM SWAPS
时会触发更改或删除现有资源
COLD SWAPS
结构代码更改
要了解确切行为和不同情况,请参阅the official documentation