【发布时间】:2016-10-04 10:28:50
【问题描述】:
在启用 MultiDex 后,Gradle 构建现在需要很长时间(实际上它在运行大约 1 小时后无法完成构建)。我按照https://developer.android.com/studio/build/multidex.html 站点给出的步骤在应用程序中配置 MultiDex。
以下是我的 gradle 控制台的摘录。
:app:compileDevelopmentDebugNdk UP-TO-DATE
:app:compileDevelopmentDebugSources
:app:mergeDevelopmentDebugShaders UP-TO-DATE
:app:compileDevelopmentDebugShaders UP-TO-DATE
:app:generateDevelopmentDebugAssets UP-TO-DATE
:app:mergeDevelopmentDebugAssets UP-TO-DATE
:app:unzipJacocoAgent UP-TO-DATE
:app:transformClassesWithJacocoForDevelopmentDebug UP-TO-DATE
:app:transformClassesWithDexForDevelopmentDebug
最后一个任务:app:transformClassesWithDexForDevelopmentDebug 是 gradle 控制台停止的那个。任何帮助,将不胜感激。我还需要在棒棒糖之前的设备中测试该应用程序。
编辑
仅当我在棒棒糖前测试设备中测试我的应用程序时才会出现此问题。为主要测试设备构建似乎工作正常。为 Nexus 6P 构建需要 8.12 秒。但我也想测试棒棒糖之前的设备。
编辑 2
根据@Gillis 的建议,我附上了我的堆栈跟踪
10:19:10.558 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
10:19:10.558 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:19:10.559 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
10:19:10.559 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
10:19:10.559 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:19:10.559 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
10:19:10.559 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
10:19:20.555 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
10:19:20.560 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:19:20.560 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
10:19:20.561 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
10:19:20.561 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
10:19:20.561 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
10:19:20.561 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
我也尝试过删除我的/home/.gradle 文件夹,但仍然没有成功。显然在获取锁的过程中有一个循环。
我也附上了我的 jstacktrace
"File lock request listener" #27 prio=5 os_prio=31 tid=0x00007fb9b2c20800 nid=0x5d07 runnable [0x0000700001961000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
- locked <0x00000006c026d670> (a java.net.PlainDatagramSocketImpl)
at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143)
- locked <0x00000006c026d670> (a java.net.PlainDatagramSocketImpl)
at java.net.DatagramSocket.receive(DatagramSocket.java:812)
- locked <0x00000006c0bc5df0> (a java.net.DatagramPacket)
- locked <0x00000006c026d630> (a java.net.DatagramSocket)
at org.gradle.cache.internal.FileLockCommunicator.receive(FileLockCommunicator.java:60)
at org.gradle.cache.internal.locklistener.DefaultFileLockContentionHandler$1.doRun(DefaultFileLockContentionHandler.java:67)
at org.gradle.cache.internal.locklistener.DefaultFileLockContentionHandler$1.run(DefaultFileLockContentionHandler.java:54)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
完整的日志请参考this pastebin。
【问题讨论】:
-
对于像编译时间太长这样的问题,答案很简单......购买更好的PC/Mac
-
iMac(27 英寸,2012 年末)3.2 GHz Intel Core i5,8 GB 1600 MHz DDR3,NVIDIA GeForce GTX 675MX 1024 MB
-
正如@Selvin 所说,如果您的电脑配置较低,那么通常需要花费时间,但我认为即使在我的双核中完成构建也需要花费数小时,它在 1 或 2 内完成分钟
-
@androidXP 我明确表示我尝试使用 MultiDex,因为我之前遇到过 dex 溢出错误,方法数量超过 65k。我使用了大量的库。
-
信不信由你,问题在于您的互联网连接检查设置中的离线工作->Buildtools->Gradle 并重试。
标签: android android-studio gradle android-build