从命令行编译时的com.android.dex.DexIndexOverflowException

时间:2016-08-07 00:29:51

标签: java android

我有一个小的Android应用程序无法从命令行编译。我可以在Android Studio中将应用程序构建和部署到模拟器而不会出现问题,但是当我尝试从命令行构建时,我会收到以下错误。

gradle clean assembleDebug
  

失败:构建因异常而失败。

     
      
  • 出了什么问题:任务执行失败':app:transformClassesWithDexForRelease'。

         
        

    com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:     java.util.concurrent.ExecutionException:     com.android.dex.DexIndexOverflowException:方法ID不在[0,     0xffff]:65536

      
  •   
  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

  •   
     

建立失败

我理解它说我已超出此处所述的Android 64k方法限制:

https://developer.android.com/studio/build/multidex.html

但是为什么Android应用程序中的应用程序编译正常?知道从命令行编译时我做错了什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

事实证明,我在我的依赖项中包含了所有 Google Play服务库,即在build.gradle中:

compile 'com.google.android.gms:play-services:9.4.0'

我删除了该依赖项并单独添加了每个Play服务库,即:

 compile 'com.google.android.gms:play-services-maps:9.4.0'

根据他们的文件:

https://developers.google.com/android/guides/setup

这样我只包括我使用的库。现在,该应用程序将在 Android Studio 和命令行中进行编译。我假设 Android Studio 将整个Play服务库替换为应用程序在编译时需要的内容,这就是我以前可以在 Android Studio 中编译但不在命令行上编译的原因,但是我无法证实这一点。希望这有助于其他人。

相关问题