You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
【平台环境】:windows
【Android Studio版本】:Android Studio Electric Eel | 2022.1.1 Patch 2
【编译使用Java版本】:jdk11
【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10
【gradle-plugin版本】:com.android.tools.build:gradle:7.3.0
【gradle-wrapper版本】:gradle-7.5-bin.zip
【drouter版本】:drouter-api:2.4.5
【复现步骤】:win10 电脑上
1、Drouter Plugin 配在其他 Android Gradle Plugin 后边 (例如使用 drouter 配置在 booster 后边)即,build.gradle 中配置
plugins {
id 'com.android.application'
id 'com.didiglobal.booster'
id 'com.didi.drouter'
}
2、编辑Android项目
3、clean Project ,此时会出现以下报错
Unable to delete directory 'C:\Android\workspace\TestWebView\app\build'
Failed to delete some children. This might happen because a process has files open or has its working directory set in the target directory.
【平台环境】:windows
【Android Studio版本】:Android Studio Electric Eel | 2022.1.1 Patch 2
【编译使用Java版本】:jdk11
【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10
【gradle-plugin版本】:com.android.tools.build:gradle:7.3.0
【gradle-wrapper版本】:gradle-7.5-bin.zip
【drouter版本】:drouter-api:2.4.5
【复现步骤】:win10 电脑上
1、Drouter Plugin 配在其他 Android Gradle Plugin 后边 (例如使用 drouter 配置在 booster 后边)即,build.gradle 中配置
plugins {
id 'com.android.application'
id 'com.didiglobal.booster'
id 'com.didi.drouter'
}
2、编辑Android项目
3、clean Project ,此时会出现以下报错
Unable to delete directory 'C:\Android\workspace\TestWebView\app\build'
Failed to delete some children. This might happen because a process has files open or has its working directory set in the target directory.
【期望结果】:能正常 clean Project
【日志】:如上
解决方案:
修改 Drouter 插件,在使用 javassist 之前,调用 ClassPool.cacheOpenedJarFile = false 关闭 javassist 对 jar 文件的持有
原因:
Drouter Plugin 配在其他 Android Gradle Plugin 后边,被 javassist 持有的 jar 包是在 C:\Android\workspace\TestWebView\app\build\intermediates\transforms\booster\debug\xx.jar。是build\intermediates\transforms目录下上一个 transform 的缓存文件,clean project 会去清除该文件。但是,该文件句柄被 gradle Daemon 进程持有,无法被删除。
How to release the ClassPool file handles?
#321jboss-javassist/javassist#321
InputStream may leak in JarClassPath openClassfile
#222jboss-javassist/javassist#222
【需求】
Drouter 提供 cacheOpenedJarFile 配置项,用以关闭 ClassPool.cacheOpenedJarFile = false
The text was updated successfully, but these errors were encountered: