Ash*_*elu 3 android gradle android-build android-studio
启用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
Run Code Online (Sandbox Code Playgroud)
最后一项任务:app:transformClassesWithDexForDevelopmentDebug
是gradle控制台停止的任务。任何帮助,将不胜感激。我还需要在棒棒糖之前的设备中测试该应用。
编辑
仅当我在棒棒糖测试前的设备中测试我的应用程序时,才会出现此问题。构建主要测试设备似乎正常。建立Nexus 6P需时8.12秒。但是我也想测试棒棒糖之前的设备。
编辑2
按照@Gillis的建议,我要附加我的stacktrace
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.
Run Code Online (Sandbox Code Playgroud)
我也尝试过删除/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)
Run Code Online (Sandbox Code Playgroud)
请参考此pastebin获取完整的日志。
多谢您的协助。我解决了这个问题。显然,问题是因为(我想)JaCoCo正在与我的班级一起进行异化并且正在发出锁。我通过删除testCoverageEnabled=true
应用程序的build.gradle中的行来解决此问题。
万一你们遇到类似的问题。创建两个构建风格(prod和development),并testCoverageEnable=true
仅添加针对开发风格的行,并将其设置为false else where。还要确保您的开发minSdkVersion
设置为21(棒棒糖),因为对ART进行了分批处理,基本上您不会遇到此问题。
归档时间: |
|
查看次数: |
3622 次 |
最近记录: |