我通过 gradle 使用以下设置:

compileSdkVersion 21 
ANDROID_BUILD_MIN_SDK_VERSION=14 
ANDROID_BUILD_TARGET_SDK_VERSION=21 
ANDROID_BUILD_TOOLS_VERSION=21.0.2 
ANDROID_BUILD_SDK_VERSION=21 

我的 gradle 文件中还有以下设置:

compile 'com.android.support:support-annotations:21.0.0' 
compile 'com.android.support:appcompat-v7:21.0.0' 
compile 'com.android.support:support-v4:21.0.0' 

我总是收到错误UNEXPECTED TOP LEVEL EXCEPTION
但是当我将 21.0.0 更改为 20.0.0 时,它工作正常......但我无法访问任何 Android API 21 选项。我在这里做错了什么吗?如何让它编译而不出现此异常?除了其他年级项目(facebook 等)之外,我在其他任何地方都没有支持 jar。

这是完整的堆栈跟踪:

UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502) 
    at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:283) 
    at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491) 
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168) 
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302) 
    at com.android.dx.command.dexer.Main.run(Main.java:245) 
    at com.android.dx.command.dexer.Main.main(Main.java:214) 
    at com.android.dx.command.Main.main(Main.java:106) 

请您参考如下方法:

此消息听起来您的项目太大。

你的方法太多了。 dex 只能有65536 个方法

从 gradle 插件 0.14.0 和 Build Tools 21.1.0 开始,您可以使用 multidex support

只需在 build.gradle 中添加这些行:

android { 
 
    defaultConfig { 
        ... 
 
        // Enabling multidex support. 
        multiDexEnabled true 
    } 
    ... 
} 
 
dependencies { 
  compile 'com.android.support:multidex:1.0.1' 
} 

另外,在您的 Manifest 中,将 MultiDex 支持库中的 MultiDexApplication 类添加到应用程序元素

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.multidex.myapplication"> 
    <application 
        ... 
        android:name="android.support.multidex.MultiDexApplication">  
        ... 
    </application> 
</manifest> 

如果您使用自己的 Application 类,请将父类从 Application 更改为 MultiDexApplication


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!