当targetSdkVersion在我的项目设置为低于21,gradle这个构建工作正常,工程运行正常。 这里的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
为什么?
即时运行是有点混乱给我。 我不清楚它是如何工作Android Studio中。
即时运行通过执行热插拔,温暖的交换,或冷交换推送更新的代码和资源连接的设备或模拟器。 它会自动确定交换的类型进行基于变化所做的类型。
https://developer.android.com/studio/run/index.html#instant-run
相反,建立一个新的APK的,它推动只是那些新的变化,在某些情况下,应用程序甚至不需要重启,但会立即显示这些代码变化的影响。
即时运行通过执行热插拔,温暖的交换,或冷交换推送更新的代码和资源连接的设备或模拟器。
https://developer.android.com/studio/run/index.html
它能够快速发展由于不需要APK的每一个你做出改变你的应用程序的代码时,完全构建和重新部署。 它推动只有所做的更改,使他们即时可用。
有三种类型的掉期-热,温,寒 。 (在时间递增顺序截取,以反映改变)
热插拔被触发时,
现有的实例方法或静态方法的变更执行代码
WARM掉期是触发时
更改或删除现有的资源
冷掉期是触发时
结构代码更改
要了解准确的行为和不同的场景参考官方文档