即时运行掷DexIndexOverflowException(Instant Run throw D

2019-09-26 06:50发布

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中。

Answer 1:

即时运行通过执行热插拔,温暖的交换,或冷交换推送更新的代码和资源连接的设备或模拟器。 它会自动确定交换的类型进行基于变化所做的类型。

https://developer.android.com/studio/run/index.html#instant-run



Answer 2:

相反,建立一个新的APK的,它推动只是那些新的变化,在某些情况下,应用程序甚至不需要重启,但会立即显示这些代码变化的影响。

即时运行通过执行热插拔,温暖的交换,或冷交换推送更新的代码和资源连接的设备或模拟器。

https://developer.android.com/studio/run/index.html



Answer 3:

它能够快速发展由于不需要APK的每一个你做出改变你的应用程序的代码时,完全构建和重新部署。 它推动只有所做的更改,使他们即时可用。

有三种类型的掉期-热,温,寒 。 (在时间递增顺序截取,以反映改变)

热插拔被触发时,

现有的实例方法或静态方法的变更执行代码

WARM掉期是触发时

更改或删除现有的资源

冷掉期是触发时

结构代码更改

要了解准确的行为和不同的场景参考官方文档



文章来源: Instant Run throw DexIndexOverflowException