我有一个小的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应用程序中的应用程序编译正常?知道从命令行编译时我做错了什么吗?提前谢谢。
答案 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 中编译但不在命令行上编译的原因,但是我无法证实这一点。希望这有助于其他人。