Giter Site home page Giter Site logo

didi / booster Goto Github PK

View Code? Open in Web Editor NEW
4.8K 118.0 577.0 11.61 MB

🚀Optimizer for mobile applications

Home Page: https://booster.johnsonlee.io

License: Apache License 2.0

Java 26.33% Kotlin 73.33% JavaScript 0.34%
optimizer android gradle-plugin bytecode-manipulation static-analysis

booster's Introduction

Booster

GitHub Build Status GitHub Release

Overview | 概览

Booster is an easy-to-use, lightweight, powerful and extensible quality optimization toolkit designed specially for mobile applications. The primary goal is to solve quality problems with the increase of APP complexity, such as performance, stability, and package size, etc.

Booster provides a collection of modules for performance detection, multithreading optimization, resources index inline, redundant resources reduction, resources compression, system bug fixing, etc. Using booster, the stability of application can be increased by 15% ~ 25%, and the package size can be reduced by 1MB ~ 10MB.

Booster 是一款专门为移动应用设计的易用、轻量级且可扩展的质量优化框架,其目标主要是为了解决随着 APP 复杂度的提升而带来的性能、稳定性、包体积等一系列质量问题。

Booster 提供了性能检测、多线程优化、资源索引内联、资源去冗余、资源压缩、系统 Bug 修复等一系列功能模块,可以使得稳定性能够提升 15% ~ 25%,包体积可以减小 1MB ~ 10MB。

What can Booster be used for? | Booster 能做什么?

  • Performance detection | 性能检测

    Potential performance issues could be found by using Booster, for example, calling APIs that may block the UI thread or main thread, such as I/O APIs. About the details, please see booster-task-analyser.

    使用 Booster 可以发现潜在的性能问题,例如,在应用中调用可能阻塞 UI 线程或者主线程的 API,如:I/O API 等。详情请参见: booster-task-analyser

  • Performance optimization | 性能优化

    Thread management has always been a problem for developers, especially the threads started by third-party SDKs, starting too many threads may cause OOM, fortunately, these issues can be solved by Booster. About the details, please see booster-transform-thread

    对于开发者来说,线程管理一直是个头疼的问题,特别是第三方 SDK 中的线程,过多的线程可能会导致内存不足,然而幸运的是,这些问题都能通过 Booster 来解决。

  • System bugs fix | 系统问题修复

    Such as fixing the crash caused by Toast globally on Android API 25. About the details, please see booster-transform-toast and booster-transform-shared-preferences.

    例如全局性地修复 Android API 25 版本中 Toast 导致的崩溃。详情请参见:booster-transform-toastbooster-transform-shared-preferences.

  • Package size reduction | 应用瘦身

    Such as image resources compression, r inline, etc.

    如:资源压缩及冗余资源删除资源索引内联

  • Other things you can imagine | 其它你能想像得到的

Prerequisite | 先决条件

  • JDK (minimum version required is JDK 1.8, JDK 11 is recommended)
  • Gradle version 4.10+
  • Android Gradle Plugin version 3.3+

The following table lists which version of Gradle is required for each version of the Android Gradle plugin. For the best performance, please use the latest possible version of both Gradle and the plugin.

下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本。要获得最佳性能,请使用 Gradle 和插件这两者的最新版本。

Android Gradle Plugin Gradle
3.3.0 - 3.3.3 4.10.1+
3.4.0 - 3.4.3 5.1.1+
3.5.0 - 3.5.4 5.4.1+
3.6.0 - 3.6.4 5.6.4+
4.0.0+ 6.1.1+
4.1.0+ 6.5+
4.2.0+ 6.7.1+
7.0 7.0+
7.1 7.1+
7.2 7.3.3+
7.3 7.4+
7.4 7.5+

Best Practise | 最佳实践

The best practise of using Booster is integrating the specific module to solve the problems you have encountered as following:

集成 Booster 的最佳方式是集成真正需要的模块来解决项目中遇到的特定问题。

buildscript {
    ext.booster_version = '4.16.3'
    repositories {
        google()
        mavenCentral()

        // OPTIONAL If you want to use SNAPSHOT version, sonatype repository is required.
        maven { url 'https://oss.sonatype.org/content/repositories/public' }
    }
    dependencies {
        classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version" //
        // ② figure out the features you really need, then choose the right module for integration
        // ② 弄清楚真正需要的特性,然后从下面的模块列表中选择正确的模块进行集成
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()

        // OPTIONAL If you want to use SNAPSHOT version, sonatype repository is required.
        maven { url 'https://oss.sonatype.org/content/repositories/public' }
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.didiglobal.booster' //

Then using the following command in terminal to check if Booster enabled

然后在终端用如下命令来确认 Booster 是否启用:

./gradlew assembleDebug --dry-run

If transformClassesWithBoosterForDebug can be found in the output, it means Booster is enabled. Congratulations! 🎉🎉🎉

如果在命令行输出中能搜到 transformClassesWithBoosterForDebug 说明 Booster 已经启用了,那么恭喜你! 🎉🎉🎉

The plugins DSL also supported since Booster 3.0.0

Booster3.0.0 开始支持 plugins DSL 的方式来启用

plugins {
    id 'com.didiglobal.booster' version '4.16.3'
}

Here are all the modules of Booster:

Common

  • booster-aapt2 - AAPT2 相关 API

    implementation "com.didiglobal.booster:booster-aapt2:$booster_version"
  • booster-api - Booster 插件开发 API

    this module contains both booster-transform-spi and booster-task-spi

    implementation "com.didiglobal.booster:booster-api:$booster_version"
  • booster-cha - Class Hierarchy Analysis API

    implementation "com.didiglobal.booster:booster-cha:$booster_version"
  • booster-command - SPI for external command discovery

    implementation "com.didiglobal.booster:booster-command:$booster_version"

Performance

Package Size

  • booster-task-compression-cwebp - 采用 cwebp 对资源进行压缩

    classpath "com.didiglobal.booster:booster-task-compression-cwebp:$booster_version"

    The option android.precompileDependenciesResources need to be set on Android Gradle Plugin 3.6 and higher

    android.precompileDependenciesResources=false
  • booster-task-compression-pngquant - 采用 pngquant 对资源进行压缩

    classpath "com.didiglobal.booster:booster-task-compression-pngquant:$booster_version"

    The option android.precompileDependenciesResources need to be set on Android Gradle Plugin 3.6 and higher

    android.precompileDependenciesResources=false

    booster-pngquant-provider could be used for image compressing by pngquant without installation

  • booster-task-compression-processed-res - ap_ 文件压缩

    classpath "com.didiglobal.booster:booster-task-compression-processed-res:$booster_version"
  • booster-task-resource-deredundancy - 去冗余资源

    classpath "com.didiglobal.booster:booster-task-resource-deredundancy:$booster_version"

    The option android.precompileDependenciesResources need to be set on Android Gradle Plugin 3.6 and higher

    android.precompileDependenciesResources=false
  • booster-transform-r-inline - 资源索引内联

    classpath "com.didiglobal.booster:booster-transform-r-inline:$booster_version"
  • booster-transform-br-inline - DataBinding BR索引内联

    classpath "com.didiglobal.booster:booster-transform-br-inline:$booster_version"

System Bug

  • booster-transform-finalizer-watchdog-daemon - 修复 finalizer 导致的 TimeoutException

    classpath "com.didiglobal.booster:booster-transform-finalizer-watchdog-daemon:$booster_version"
  • booster-transform-media-player - 修复 MediaPlayer 崩溃

    classpath "com.didiglobal.booster:booster-transform-media-player:$booster_version"
  • booster-transform-res-check - 检查覆盖安装导致的 ResourcesAssets 未加载的 Bug

    classpath "com.didiglobal.booster:booster-transform-res-check:$booster_version"
  • booster-transform-toast - 修复 Toast 在 Android 7.1 上的 Bug

    classpath "com.didiglobal.booster:booster-transform-toast:$booster_version"
  • booster-transform-activity-thread - 处理系统 Crash

    classpath "com.didiglobal.booster:booster-transform-activity-thread:$booster_version"

Utility

  • booster-task-check-snapshot - 检查 SNAPSHOT 版本

    classpath "com.didiglobal.booster:booster-task-check-snapshot:$booster_version"
  • booster-task-list-permission - 显示 AAR 使用的权限清单

    classpath "com.didiglobal.booster:booster-task-list-permission:$booster_version"
  • booster-task-list-shared-library - 显示 AAR 包含的动态库清单

    classpath "com.didiglobal.booster:booster-task-list-shared-library:$booster_version"

Unit Test

  • booster-test-asm - Support running unit test with ASM based transformer

    classpath "com.didiglobal.booster:booster-task-asm:$booster_version"
  • booster-test-javassist - Support running unit test with Javassist based transformer

    classpath "com.didiglobal.booster:booster-task-javassist:$booster_version"

Samples | 示例

Documentation | 文档

About the details, please see Booster Inside(深入理解 Booster)

API Reference

About the API reference, please see Booster API Reference

Contributing

Welcome to contribute by creating issues or sending pull requests. See Contributing Guideline.

欢迎大家以 issue 或者 pull request 的形式为本项目作贡献。详见 Contributing Guideline

Community

Booster交流群

License

Booster is licensed under the Apache License 2.0.

booster's People

Contributors

codeideal avatar hellovass avatar hollowman6 avatar johnsonlee avatar lihenair avatar lpw14 avatar neighbwang avatar punkisnotdead3 avatar whataa avatar xwc95 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

booster's Issues

Build WARNING: API 'variant.getJavaCompiler()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.

WARNING: API 'variant.getJavaCompiler()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variant.getJavaCompiler(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
Affected Modules: app

关于booster-transform-shrink移除常量的问题

  • 首先我接入 booster后,发现greenDao 不能正常运行,error log如下
Caused by: de.greenrobot.dao.DaoException: Could not init DAOConfig
        at de.greenrobot.dao.internal.DaoConfig.<init>(DaoConfig.java:94)
        at de.greenrobot.dao.AbstractDaoMaster.registerDaoClass(AbstractDaoMaster.java:44)
     Caused by: java.lang.NoSuchFieldException: TABLENAME
        at java.lang.Class.getField(Class.java:1601)
        at de.greenrobot.dao.internal.DaoConfig.<init>(DaoConfig.java:56)
  • 查看 错误的代码 发现反射拿TABLENAME

      `    this.tablename = (String) daoClass.getField("TABLENAME").get(null);`
    
  • 这个实体如下

public class NoteDao extends AbstractDao<Note, Long> {
    public static final String TABLENAME = "NOTE";
}
  • 查看你们的booster-transform-shrink 忽略配置属性
    booster.transform.shrink.ignores=android/,androidx/

  • 添加我的配置属性
    booster.transform.shrink.ignores={packagename}.dao.NoteDao

未生效
并问一下,移除产量的时候,配置可以采用混淆配置文件去默认配置吗?当然R文件除外

请教一个问题

用kotlin编写gradle插件,你们编译后的class文件去哪里找的,我发现我这边编译后的class文件里面的方法都变成空的了

xargs: ./dot: Permission denied

void@Void-office:/mnt/c/Develop/Projects/GitRepo/erwin/build/erwin/app$ mkdir ./dot
void@Void-office:/mnt/c/Develop/Projects/GitRepo/erwin/build/erwin/app$ find ./reports/ -name '*.dot' | xargs -I{} dot -O -Tpng {}
xargs: dot: No such file or directory
void@Void-office:/mnt/c/Develop/Projects/GitRepo/erwin/build/erwin/app$ find ./reports/ -name '*.dot' | xargs -I{} ./dot
 -O -Tpng {}
xargs: ./dot: Permission denied
void@Void-office:/mnt/c/Develop/Projects/GitRepo/erwin/build/erwin/app$ ll
total 0
drwxrwxrwx 1 void void 512 May 31 15:03 ./
drwxrwxrwx 1 void void 512 Apr 23 12:36 ../
drwxrwxrwx 1 void void 512 May 31 14:32 bin/
drwxrwxrwx 1 void void 512 May 31 15:03 dot/
drwxrwxrwx 1 void void 512 Apr 23 12:36 generated/
drwxrwxrwx 1 void void 512 May 23 15:08 intermediates/
drwxrwxrwx 1 void void 512 May 31 14:36 kotlin/
drwxrwxrwx 1 void void 512 Apr 23 12:47 outputs/
drwxrwxrwx 1 void void 512 May 31 14:38 reports/
drwxrwxrwx 1 void void 512 Apr 23 12:38 schemas/
drwxrwxrwx 1 void void 512 May 31 14:38 tmp/
void@Void-office:/mnt/c/Develop/Projects/GitRepo/erwin/build/erwin/app$ find ./reports/ -name '*.dot' | xargs -I{} ./dot -O -Tpng {}
xargs: ./dot: Permission denied
void@Void-office:/mnt/c/Develop/Projects/GitRepo/erwin/build/erwin/app$ sudo find ./reports/ -name '*.dot' | xargs -I{}
./dot -O -Tpng {}
[sudo] password for void:
xargs: ./dot: Permission denied
void@Void-office:/mnt/c/Develop/Projects/GitRepo/erwin/build/erwin/app$

在win10 ubuntu18.04 子系统下不能转换成png ,请问怎么回事呢?

Build FAILED: NoSuchElementException: Collection is empty.

 ! Unresolvable symbol R.bool.abc_config_closeDialogWhenTouchOutside : com/tencent/liteav/muxer/R$bool.<clinit>()V 
 ! Unresolvable symbol R.color.abc_tint_switch_thumb : com/tencent/liteav/muxer/R$color.<clinit>()V 
 x com/github/chrisbanes/photoview/BuildConfig.DEBUG : Z
 x com/github/chrisbanes/photoview/BuildConfig.VERSION_CODE : I
 ! Unresolvable symbol R.style.Base_V11_Theme_AppCompat_Dialog : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Base_V11_Theme_AppCompat_Light_Dialog : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Base_V11_ThemeOverlay_AppCompat_Dialog : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Base_V12_Widget_AppCompat_AutoCompleteTextView : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Base_V12_Widget_AppCompat_EditText : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Platform_V11_AppCompat : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Platform_V11_AppCompat_Light : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Platform_V14_AppCompat : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Platform_V14_AppCompat_Light : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Info : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Info_Media : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Line2 : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Line2_Media : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Media : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Time : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Time_Media : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Title : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_AppCompat_Notification_Title_Media : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_StatusBar_EventContent : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_StatusBar_EventContent_Info : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_StatusBar_EventContent_Line2 : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_StatusBar_EventContent_Time : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.TextAppearance_StatusBar_EventContent_Title : com/tencent/liteav/muxer/R$style.<clinit>()V 
 x com/github/moduth/blockcanary/BuildConfig.DEBUG : Z
 x com/github/moduth/blockcanary/BuildConfig.VERSION_CODE : I
 ! Unresolvable symbol R.style.Widget_AppCompat_NotificationActionContainer : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.style.Widget_AppCompat_NotificationActionText : com/tencent/liteav/muxer/R$style.<clinit>()V 
 ! Unresolvable symbol R.string.abc_action_bar_home_description_format : com/tencent/liteav/muxer/R$string.<clinit>()V 
 ! Unresolvable symbol R.string.abc_action_bar_home_subtitle_description_format : com/tencent/liteav/muxer/R$string.<clinit>()V 
 x io/objectbox/android/BuildConfig.DEBUG : Z
 x io/objectbox/android/BuildConfig.VERSION_CODE : I
 x android/support/multidex/BuildConfig.DEBUG : Z
 x android/support/multidex/BuildConfig.VERSION_CODE : I
 ! Unresolvable symbol R.layout.abc_action_bar_view_list_nav_layout : com/tencent/liteav/muxer/R$layout.<clinit>()V 
 x com/airbnb/mvrx/BuildConfig.DEBUG : Z
 x com/airbnb/mvrx/BuildConfig.VERSION_CODE : I
 x com/bilibili/socialize/share/BuildConfig.DEBUG : Z
 x com/bilibili/socialize/share/BuildConfig.VERSION_CODE : I
 ! Unresolvable symbol R.styleable.PlaybackControlView_controller_layout_id : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.PlaybackControlView_fastforward_increment : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.PlaybackControlView_rewind_increment : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.PlaybackControlView_show_timeout : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_controller_layout_id : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_default_artwork : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_fastforward_increment : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_hide_on_touch : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_player_layout_id : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_resize_mode : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_rewind_increment : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_show_timeout : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_surface_type : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_use_artwork : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_use_controller : com/tencent/liteav/txcvodplayer/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.PlaybackControlView_controller_layout_id : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.PlaybackControlView_fastforward_increment : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.PlaybackControlView_rewind_increment : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.PlaybackControlView_show_timeout : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_controller_layout_id : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_default_artwork : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_fastforward_increment : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_hide_on_touch : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_player_layout_id : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_resize_mode : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_rewind_increment : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_show_timeout : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_surface_type : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_use_artwork : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 
 ! Unresolvable symbol R.styleable.SimpleExoPlayerView_use_controller : com/tencent/ijk/media/exo/R$styleable.<clinit>()V 

...

> Task :app:transformClassesWithBoosterForOfficialDebug FAILED
:app:transformClassesWithBoosterForOfficialDebug spend 13765ms

...


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithBoosterForOfficialDebug'.
> Collection is empty.

Process 'command 'cacls'' finished with non-zero exit value 87

buildscript {
    ext.booster_version = '0.4.3'
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        // Add this line
//        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.16'
        classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version"
        classpath "com.didiglobal.booster:booster-task-all:$booster_version"
        classpath "com.didiglobal.booster:booster-transform-all:$booster_version"
    }
}
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:installCwebp.exe'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
	at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:745)

org.gradle.process.internal.ExecException: Process 'command 'cacls'' finished with non-zero exit value 87
	at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:396)
	at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:37)
	at org.gradle.api.internal.file.DefaultFileOperations.exec(DefaultFileOperations.java:234)
	at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1113)
	at com.didiglobal.booster.task.compression.InstallCompressor.install(SimpleCompressionTaskCreator.kt:84)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:48)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:704)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:671)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
	at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
	at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
	at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
	at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
	at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
	at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
	at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
	at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
	at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
	at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
	at java.util.Optional.orElseGet(Optional.java:267)
	at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
	at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
	at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
	at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
	at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
	at java.util.Optional.map(Optional.java:215)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
	at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
	at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:745)

Some thoughts about the graph of method invocation

I saw the follow graph in a presentation of booster, I think it's too messy to understand. How about vertical layout for it? In that way the lines between the method blocks will be shorter and the hierarchy cleaner.
Just a little suggestion~ 😊
image

an issue that I'm not doing fine.

Hi,
It was heard from Zhixing any PR/Issues are welcome here, that's why I am filing this issue. hoping someone can help to make me happier.

Thanks,
Meow~

java.lang.VerifyError: Bad type on operand stack

集成后编译失败,产生了数以百计的如下错误日志:

java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    android/aapt/pb/internal/ResourcesInternal$CompiledFile.mergeConfig(Lcom/android/aapt/ConfigurationOuterClass$Configuration;)V @38: invokevirtual
  Reason:
    Type 'com/android/aapt/ConfigurationOuterClass$Configuration' (current frame, stack[2]) is not assignable to 'com/google/protobuf/GeneratedMessageLite'
  Current Frame:
    bci: @38
    flags: { }
    locals: { 'android/aapt/pb/internal/ResourcesInternal$CompiledFile', 'com/android/aapt/ConfigurationOuterClass$Configuration' }
    stack: { 'android/aapt/pb/internal/ResourcesInternal$CompiledFile', 'com/android/aapt/ConfigurationOuterClass$Configuration$Builder', 'com/android/aapt/ConfigurationOuterClass$Confi
guration' }
  Bytecode:
    0x0000000: 2bc7 000b bb00 1f59 b700 20bf 2ab4 0025
    0x0000010: c600 282a b400 25b8 0026 a500 1e2a 2ab4
    0x0000020: 0025 b800 292b b600 2ac0 002b b600 2cc0
    0x0000030: 0028 b500 25a7 0008 2a2b b500 25b1
  Stackmap Table:
    same_frame(@12)
    same_frame(@56)
    same_frame(@61)

        at com.didiglobal.booster.transform.shrink.RetainedSymbolCollectorKt$parseResEntry$header$1.invoke(RetainedSymbolCollector.kt:82)
        at com.didiglobal.booster.transform.shrink.RetainedSymbolCollectorKt$parseResEntry$header$1.invoke(RetainedSymbolCollector.kt)
        at com.didiglobal.booster.aapt2.BinaryParser.parse(BinaryParser.kt:81)
        at com.didiglobal.booster.transform.shrink.RetainedSymbolCollectorKt.parseResEntry(RetainedSymbolCollector.kt:81)
        at com.didiglobal.booster.transform.shrink.RetainedSymbolCollectorKt.parseLayoutXml(RetainedSymbolCollector.kt:63)
        at com.didiglobal.booster.transform.shrink.RetainedSymbolCollector.compute(RetainedSymbolCollector.kt:32)
        at com.didiglobal.booster.transform.shrink.RetainedSymbolCollector.compute(RetainedSymbolCollector.kt:20)
        at java.util.concurrent.RecursiveTask.exec(RecursiveTask.java:94)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

集成后编译失败,返回Error:Execution failed for task ':app:compressCommunityDebugResourcesWithCwebp'. > com/android/build/api/artifact/ArtifactType

按照文档集成

build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply from: "config.gradle"
buildscript {
    ext.booster_version = '0.4.4'
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version"
        classpath "com.didiglobal.booster:booster-task-all:$booster_version"
        classpath "com.didiglobal.booster:booster-transform-all:$booster_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        //个推相关maven
        maven {
            url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
        }
        maven { url "https://jitpack.io" }
    }
}

task delete(type: Delete) {
    delete rootProject.buildDir
}

app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.didiglobal.booster'
android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    defaultConfig {
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        ndk {
            abiFilters "armeabi"
        }
    }

    lintOptions {
        textReport false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
        ignoreWarnings true

    }

    configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex')) {
                details.useVersion rootProject.ext.versions["support-version"]
            }
        }
    }

    dataBinding {
        enabled = true
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }

    buildTypes {
        release {
           }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')

}
`
集成后,sync project失败,返回
Error:Execution failed for task ':app:compressCommunityDebugResourcesWithCwebp'.
> com/android/build/api/artifact/ArtifactType

Build FAILURE: kotlin.NotImplementedError: An operation is not implemented: Unexpected file ...


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithBoosterForMinApi21OfficialDebug'.
> An operation is not implemented.

* Try:
Run with --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithBoosterForMinApi21OfficialDebug'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.accept(ExecuteActionsTaskExecuter.java:121)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.accept(ExecuteActionsTaskExecuter.java:117)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:184)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:110)
        at org.gradle.api.internal.tasks.execution.ResolveIncrementalChangesTaskExecuter.execute(ResolveIncrementalChangesTaskExecuter.java:84)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.FinishSnapshotTaskInputsBuildOperationTaskExecuter.execute(FinishSnapshotTaskInputsBuildOperationTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:102)
        at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:74)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
        at org.gradle.api.internal.tasks.execution.StartSnapshotTaskInputsBuildOperationTaskExecuter.execute(StartSnapshotTaskInputsBuildOperationTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:94)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:63)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:46)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: kotlin.NotImplementedError: An operation is not implemented.
        at com.didiglobal.booster.gradle.BoosterTransformInvocation$doIncrementalTransform$1.accept(BoosterTransformInvocation.kt:118)
        at com.didiglobal.booster.gradle.BoosterTransformInvocation$doIncrementalTransform$1.accept(BoosterTransformInvocation.kt:29)
        at com.didiglobal.booster.gradle.BoosterTransformInvocation.doIncrementalTransform$booster_gradle_plugin(BoosterTransformInvocation.kt:117)
        at com.didiglobal.booster.gradle.BoosterTransform.transform(BoosterTransform.kt:34)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
        at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
        at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:73)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$4.run(ExecuteActionsTaskExecuter.java:338)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:327)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:312)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:75)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:158)
        at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:46)
        at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
        at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
        at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
        at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
        at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:49)
        at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:42)
        at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:28)
        at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:133)
        at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$5(CacheStep.java:83)
        at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
        at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:37)
        at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
        at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
        at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:95)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:88)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
        at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
        at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:109)
        ... 40 more
Caused by: kotlin.NotImplementedError: An operation is not implemented: Unexpected file: /app/build/intermediates/transforms/ajx/minApi21Official/debug/69.jar
        at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:64)
        at com.didiglobal.booster.gradle.BoosterTransformInvocation$doIncrementalTransform$1$2.accept(BoosterTransformInvocation.kt:125)
        at com.didiglobal.booster.gradle.BoosterTransformInvocation$doIncrementalTransform$1$2.accept(BoosterTransformInvocation.kt:29)


* Get more help at https://help.gradle.org


每次改动代码编译报错,需要clean之后才能跑起来

java.io.EOFException: SSL peer shut down incorrectly,请问一下这种怎么解决?

Caused by: org.gradle.internal.resolve.ArtifactResolveException: Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-reflect:1.3.31)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.resolveArtifact(ExternalResourceResolver.java:298)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver$RemoteRepositoryAccess.resolveArtifact(ExternalResourceResolver.java:523)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$ResolveAndCacheRepositoryAccess.resolveArtifact(CachingModuleComponentRepository.java:409)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.BaseModuleComponentRepositoryAccess.resolveArtifact(BaseModuleComponentRepositoryAccess.java:65)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.memcache.InMemoryCachedModuleComponentRepository$CachedAccess.resolveArtifact(InMemoryCachedModuleComponentRepository.java:124)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.resolveArtifact(ErrorHandlingModuleComponentRepository.java:136)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainArtifactResolver.resolveArtifact(RepositoryChainArtifactResolver.java:80)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultArtifactSet$LazyArtifactSource.create(DefaultArtifactSet.java:168)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultArtifactSet$LazyArtifactSource.create(DefaultArtifactSet.java:155)
at org.gradle.api.internal.artifacts.DefaultResolvedArtifact.getFile(DefaultResolvedArtifact.java:135)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.ArtifactBackedResolvedVariant$DownloadArtifactFile.run(ArtifactBackedResolvedVariant.java:146)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.access$900(DefaultBuildOperationExecutor.java:61)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$ParentPreservingQueueWorker.execute(DefaultBuildOperationExecutor.java:378)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.runOperation(DefaultBuildOperationQueue.java:183)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.access$600(DefaultBuildOperationQueue.java:132)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable$1.run(DefaultBuildOperationQueue.java:164)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:164)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.runBatch(DefaultBuildOperationQueue.java:159)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.run(DefaultBuildOperationQueue.java:137)
... 6 more
Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.31/kotlin-reflect-1.3.31.jar'.
at org.gradle.internal.resource.ResourceExceptions.failure(ResourceExceptions.java:74)
at org.gradle.internal.resource.ResourceExceptions.getFailed(ResourceExceptions.java:57)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache(DefaultCacheAwareExternalResourceAccessor.java:198)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.access$300(DefaultCacheAwareExternalResourceAccessor.java:55)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:88)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:80)
at org.gradle.cache.internal.ProducerGuard$AdaptiveProducerGuard.guardByKey(ProducerGuard.java:97)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.getResource(DefaultCacheAwareExternalResourceAccessor.java:80)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadStaticResource(DefaultExternalResourceArtifactResolver.java:97)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.resolveArtifact(DefaultExternalResourceArtifactResolver.java:67)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.download(ExternalResourceResolver.java:310)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.resolveArtifact(ExternalResourceResolver.java:296)
... 27 more
Caused by: org.gradle.internal.resource.transport.http.HttpRequestException: Could not GET 'https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.31/kotlin-reflect-1.3.31.jar'.
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:97)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRawGet(HttpClientHelper.java:81)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performGet(HttpClientHelper.java:85)
at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:43)
at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:29)
at org.gradle.internal.resource.transfer.DefaultExternalResourceConnector.openResource(DefaultExternalResourceConnector.java:56)
at org.gradle.internal.resource.transfer.ProgressLoggingExternalResourceAccessor.openResource(ProgressLoggingExternalResourceAccessor.java:36)
at org.gradle.internal.resource.transfer.AccessorBackedExternalResource.withContentIfPresent(AccessorBackedExternalResource.java:130)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$11.call(BuildOperationFiringExternalResourceDecorator.java:237)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$11.call(BuildOperationFiringExternalResourceDecorator.java:229)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:350)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:340)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:117)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator.withContentIfPresent(BuildOperationFiringExternalResourceDecorator.java:229)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache(DefaultCacheAwareExternalResourceAccessor.java:196)
... 36 more
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1002)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:149)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:127)
at org.gradle.internal.resource.transport.http.HttpClientHelper.executeGetOrHead(HttpClientHelper.java:104)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:95)
... 51 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:505)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
... 69 more

集成以后,App启动奔溃

崩溃信息:
java.lang.RuntimeException: Unable to create application com.xx.xx.MyApplication: org.greenrobot.greendao.DaoException: Could not init DAOConfig

编译通过,但是运行时报 java.lang.IllegalStateException

org.gradle.execution.MultipleBuildFailures: Build completed with 1 failures.
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:358)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:219)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:154)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:68)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:50)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithInstantRunForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
... 6 more
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.IllegalStateException: java.lang.IllegalStateException
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.GeneratedMethodAccessor361.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
... 34 more
Caused by: com.android.build.api.transform.TransformException: java.lang.IllegalStateException: java.lang.IllegalStateException
at com.android.build.gradle.internal.transforms.InstantRunTransform.doTransform(InstantRunTransform.java:320)
at com.android.build.gradle.internal.transforms.InstantRunTransform.transform(InstantRunTransform.java:186)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
... 50 more
Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720)
at com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:146)
at com.android.build.gradle.internal.transforms.InstantRunTransform.doTransform(InstantRunTransform.java:315)
... 54 more
Caused by: java.lang.IllegalStateException
at org.objectweb.asm.tree.analysis.BasicInterpreter.(BasicInterpreter.java:66)
at com.android.build.gradle.internal.incremental.ConstructorBuilder$1.(ConstructorBuilder.java:127)
at com.android.build.gradle.internal.incremental.ConstructorBuilder.build(ConstructorBuilder.java:127)
at com.android.build.gradle.internal.incremental.IncrementalSupportVisitor.visitMethod(IncrementalSupportVisitor.java:223)
at org.objectweb.asm.ClassVisitor.visitMethod(ClassVisitor.java:315)
at org.objectweb.asm.commons.SerialVersionUIDAdder.visitMethod(SerialVersionUIDAdder.java:236)
at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:680)
at org.objectweb.asm.tree.ClassNode.accept(ClassNode.java:426)
at com.android.build.gradle.internal.incremental.IncrementalVisitor.instrumentClass(IncrementalVisitor.java:365)
at com.android.build.gradle.internal.transforms.InstantRunTransform.transformToClasses2Format(InstantRunTransform.java:414)
at com.android.build.gradle.internal.transforms.InstantRunTransform.lambda$doTransform$4(InstantRunTransform.java:276)
at com.android.build.gradle.internal.transforms.InstantRunTransform.lambda$null$5(InstantRunTransform.java:305)
at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Build Failed: NoSuchMethodError: kotlin.io.ByteStreamsKt.readBytes(Ljava/io/InputStream;)[B

 
 * What went wrong:
 Execution failed for task ':app:transformClassesWithBoosterForDevApiDebug'.
 > java.lang.NoSuchMethodError (no error message)
 
 * Try:
  Run with --scan to get full insights.
 
 * Exception is:
 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithBoosterForDevApiDebug'.
 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
 	at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
 	at org.gradle.api.internal.tasks.execution.SkipCachedTaskExecuter.execute(SkipCachedTaskExecuter.java:105)
 	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
 	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
 	at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:79)
 	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
 	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
 	at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
 	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
 	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
 	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
 	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
 	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
 	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
 	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
 	at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
 	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
 	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
 	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
 	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
 	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
 	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
 	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
 	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
 	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
 Caused by: java.lang.NoSuchMethodError
 	at com.didiglobal.booster.gradle.BoosterTransformInvocation.doFullTransform$booster_gradle_plugin(BoosterTransformInvocation.kt:102)
 	at com.didiglobal.booster.gradle.BoosterTransform.transform(BoosterTransform.kt:38)
 	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
 	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
 	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
 	at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
 	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
 	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
 	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
 	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
 	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
 	... 33 more
 Caused by: java.lang.NoSuchMethodError: kotlin.io.ByteStreamsKt.readBytes(Ljava/io/InputStream;)[B
 	at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:70)
 	at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:39)
 	at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$2.accept(BoosterTransformInvocation.kt:109)
 	at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$2.accept(BoosterTransformInvocation.kt:29)
 	at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1.accept(BoosterTransformInvocation.kt:108)
 	at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1.accept(BoosterTransformInvocation.kt:29)
 
 
 * Get more help at https://help.gradle.org
 
 BUILD FAILED in 1m 55s```

resources.arsc 优化

booster-task-compression对resources.asrc的优化,修改了其对应ZipEntry的method,这个对应运行时性能是否有影响? 有讨论resources.arsc压缩会影响性能吗? Google I/O 2016 笔记:APK 瘦身的正确姿势

另外,美团对resources.asrc优化提出其他手段:
1.删除基于ZipEntry.crc的重复资源优化(Booster基于资源名收集重复资源)
2.无用资源优化

后期是否考虑这两个优化点?

我这边基于Booster,实现了这两个优化点,详见RemoveRepeatResourceVariantProcessor

Process 'command 'cacls'' finished with non-zero exit value 87

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:installCwebp.exe'.

Process 'command 'cacls'' finished with non-zero exit value 87

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 1s

这个如何解决啊?

集成后 编译不过~

An operation is not implemented: Reducing redundant resources without aapt2 enabled has not supported yet

接入 booster 打包失败

Android Gradle Plugin:com.android.tools.build:gradle:3.1.3
Gradle 版本:4.4.0
booster 版本:0.1.2

  • What went wrong:
    Execution failed for task ':app-boot:transformClassesWithBoosterForRelease'.

kotlin.io.ByteStreamsKt.readBytes(Ljava/io/InputStream;)[B

  • Try:
    Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app-boot:transformClassesWithBoosterForRelease'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    Caused by: java.lang.NoSuchMethodError: kotlin.io.ByteStreamsKt.readBytes(Ljava/io/InputStream;)[B
    at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:70)
    at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:55)
    at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:25)
    at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$1.accept(BoosterTransformInvocation.kt:104)
    at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$1.accept(BoosterTransformInvocation.kt:29)
    at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1.accept(BoosterTransformInvocation.kt:103)
    at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1.accept(BoosterTransformInvocation.kt:29)
    at com.didiglobal.booster.gradle.BoosterTransformInvocation.doFullTransform$booster_gradle_plugin(BoosterTransformInvocation.kt:102)
    at com.didiglobal.booster.gradle.BoosterTransform.transform(BoosterTransform.kt:38)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
    ... 29 more

app编译失败

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithBoosterForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$ExecuteTaskAction.execute(DefaultTaskExecutionGraph.java:262)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$ExecuteTaskAction.execute(DefaultTaskExecutionGraph.java:246)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:136)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.execute(DefaultTaskPlanExecutor.java:201)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.executeWithTask(DefaultTaskPlanExecutor.java:192)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.NoSuchElementException: List is empty.
at kotlin.collections.CollectionsKt___CollectionsKt.single(_Collections.kt:472)
at com.didiglobal.booster.gradle.TransformInvocationKt.getApplicationId(TransformInvocation.kt:82)
at com.didiglobal.booster.gradle.BoosterTransformInvocation.(BoosterTransformInvocation.kt:64)
at com.didiglobal.booster.gradle.BoosterTransform.transform(BoosterTransform.kt:29)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
... 33 more

gradlew assembleDebug -Pbooster.task.compression.compressor=cwebp

请问运行compressor=cwebp 一直提示如下,该如何处理 多谢
Invalid AAPT2 container file: F:\MyApplication\app\build\intermediates\res\merged\debug\mipmap-xhdpi_ic_launcher_round.png.flat

Task :app:compressDebugResourcesWithCwebp
Invalid AAPT2 container file: F:\MyApplication\app\build\intermediates\res\merged\debug\mipmap-hdpi_ic_launcher_round.png.flat
Invalid AAPT2 container file: F:\MyApplication\app\build\intermediates\res\merged\debug\drawable-mdpi_ic_launcher_background.png.flat

集成后编译失败,返回Error:Execution failed for task ':app:compressCommunityDebugResourcesWithCwebp'. > com/android/build/api/artifact/ArtifactType

按照文档集成
build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply from: "config.gradle"
buildscript {
    ext.booster_version = '0.4.4'
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'

        classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version"
        classpath "com.didiglobal.booster:booster-task-all:$booster_version"
        classpath "com.didiglobal.booster:booster-transform-all:$booster_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        //个推相关maven
        maven {
            url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
        }
        maven { url "https://jitpack.io" }
    }
}

task delete(type: Delete) {
    delete rootProject.buildDir
}

app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.didiglobal.booster'
android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    defaultConfig {
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        ndk {
            abiFilters "armeabi"
        }
    }

    lintOptions {
        textReport false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
        ignoreWarnings true

    }

    configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex')) {
                details.useVersion rootProject.ext.versions["support-version"]
            }
        }
    }

    dataBinding {
        enabled = true
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
        }
    }
}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
}

集成后,sync project失败,返回
Error:Execution failed for task ':app:compressCommunityDebugResourcesWithCwebp'.

com/android/build/api/artifact/ArtifactType

编译完成没有生成 html

AGP version:3.3.2
Gradle version:4.10.1/5.1.1
booster version:0.1.5/0.1.6/0.2.0
试过 app:assembleNormalRelease, assembleNormalRelease, assembleRelease
删掉 productFlavors,app:assembleRelease, assembleRelease
都不行,都没有生成 html
image

booster-task-compression相关问题

1.compressProcessedRes压缩resource*.ap_ 在什么情况下起到压缩效果,我打印了resource*.ap_文件所有条目的method,都没变化,即没有起到压缩的效果,log如下:
ZipEntry name : AndroidManifest.xml ,method : 8,target ZipEntry method: 8
ZipEntry name : res/anim/abc_fade_in.xml ,method : 8,target ZipEntry method: 8
ZipEntry name : res/anim/abc_fade_out.xml ,method : 8,target ZipEntry method: 8
ZipEntry name : res/anim/abc_grow_fade_in_from_bottom.xml ,method : 8,target ZipEntry method: 8
ZipEntry name : res/drawable-v21/notification_action_background.xml ,method : 8,target ZipEntry method: 8
ZipEntry name : res/drawable/notification_bg.xml ,method : 8,target ZipEntry method: 8
ZipEntry name : res/drawable/notification_bg_low.xml ,method : 8,target ZipEntry method: 8
ZipEntry name : res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png ,method : 0,target ZipEntry method: 0
ZipEntry name : res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png ,method : 0,target ZipEntry method: 0
ZipEntry name : res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png ,method : 0,target ZipEntry method: 0
ZipEntry name : res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png ,method : 0,target ZipEntry method: 0
...

2.RemoveRedundantFlatImages 删除多余的*.png.flat,也没效果,apk中各个限定符drawable下都有相同的图片,插件控制台log如下:
Invalid AAPT2 container file: F:\developer_workspace\android__workspace\NewStudy\BoosterDemo\app\build\intermediates\res\merged\debug\drawable-xxxhdpi-v4_abc_ic_s tar_half_black_16dp.png.flat,magic = 1 / 0x1
Invalid AAPT2 container file: F:\developer_workspace\android__workspace\NewStudy\BoosterDemo\app\build\intermediates\res\merged\debug\drawable-xxhdpi-v4_abc_text_ select_handle_left_mtrl_light.png.flat,magic = 1 / 0x1
Invalid AAPT2 container file: F:\developer_workspace\android__workspace\NewStudy\BoosterDemo\app\build\intermediates\res\merged\debug\drawable-hdpi-v4_abc_ic_menu _copy_mtrl_am_alpha.png.flat,magic = 1 / 0x1
Invalid AAPT2 container file: F:\developer_workspace\android__workspace\NewStudy\BoosterDemo\app\build\intermediates\res\merged\debug\drawable-xxhdpi-v4_abc_text_ select_handle_middle_mtrl_dark.png.flat,magic = 1 / 0x1
Invalid AAPT2 container file: F:\developer_workspace\android__workspace\NewStudy\BoosterDemo\app\build\intermediates\res\merged\debug\drawable-hdpi-v4_abc_ic_menu _cut_mtrl_alpha.png.flat,magic = 1 / 0x1

使用BinaryParser直接解析*\intermediates\res\merged\debug\目录文件
anim_abc_fade_in.xml.flat magic = 1 , version = 223 , count = 0
anim_abc_fade_out.xml.flat magic = 1 , version = 225 , count = 0
anim_abc_grow_fade_in_from_bottom.xml.flat magic = 1 , version = 257 , count = 0
drawable-hdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat magic = 1 , version = 275 , count = 0
drawable-hdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat magic = 1 , version = 273 , count = 0
values-af_values-af.arsc.flat magic = a01cb0a , version = 65992 , count = 13107228
values-am_values-am.arsc.flat magic = a01cb0a , version = 65992 , count = 13107228
values-ar_values-ar.arsc.flat magic = a01cb0a , version = 65992 , count = 13107228
values-b+sr+Latn_values-b+sr+Latn.arsc.flat magic = a01d70a , version = 66004 , count = 13893660

可以看出:
xml.flat magic = 1
png.flat magic = 1
arsc.flat magic = a01cb0a

跟库中flat文件的magic不符,也没起到压缩效果。

这个跟编译环境版本有关系没有?

能优化react native吗

能用来优化react native吗, 如果不能 能推荐下优化react native的框架不, 万分感谢

transform-logcat不会打印

version 0.13.0 booster-transform-logcat Log.i和System.out.println的内容 都不会打印 对吗?
我测试了下,引入这个后,assemblerelease,没有Log输出,看了下,shadowlog里也没有实现

如何发现潜在的性能问题

使用 Booster 可以发现潜在的性能问题,例如,在应用中调用可能阻塞 UI 线程或者主线程的 API,如:I/O API

在wiki里的介绍发现了这样的一段介绍。目前我在代码中只发现了,利用transform把sp的commit方法移到非UI线程,想了解关于性能这一块,后续是否还有其他的实现?

使用splits打包失败

Android Gradle Plugin Version:3.3.2
Gradle Version:4.10.1

 splits {
        abi {
            enable true
            reset()
            include "armeabi", "armeabi-v7a", "x86", "mips"
            universalApk true
        }
    }

当使用此配置时,无法找到AndroidManifest.xml,注释掉上面的代码,可以正常编译,打包

Error:Failed to resolve: com.didiglobal.booster:booster-android-instrument

你好,请问个问题:
修改booster代码,发布到本地 version 0.13.110
uploadArchives {
repositories.mavenDeployer {
repository(url: 'file:./pluginlib')
}
}
在我自己的项目中引用:
maven {
url uri('E:/demo/booster/booster/pluginlib')
}
classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version"
classpath "com.didiglobal.booster:booster-transform-logcat:$booster_version"

会提示如下:
Error:Failed to resolve: com.didiglobal.booster:booster-android-instrument-logcat:0.13.111
Open File
Show in Project Structure dialog

请问,如何才能通过呢?

Toast StackOverflowError

E/CrashReport: java.lang.StackOverflowError: stack size 8MB
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)
        at com.didiglobal.booster.android.widget.Toast.show(Toast.java:25)

Android Gradle Plugin:3.4.0
Gradle:5.2.1
Booster:0.1.1

WebView 预加载

用demo,测试了webview预加载,发现预加载和没使用预加载,从startActivity到 webViewActivtiy.setContentView 之后所花时间几乎没有区别,这个优化点带来的收益是什么?

java.lang.NoClassDefFoundError: com/intellij/psi/JavaModuleSystem

  • Java version: 1.8.0
  • Gradle version: 4.6
  • Android gradle plugin version: 3.2.1
  • Booster version: 0.4.0
* What went wrong:
A problem occurred configuring project ':app'.
> Failed to notify project evaluation listener.
   > Could not initialize class com.didiglobal.booster.task.compression.cwebp.CwebpKt

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
        at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:79)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:72)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.access$600(LifecycleProjectEvaluator.java:53)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:198)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject$1.run(LifecycleProjectEvaluator.java:111)
        at org.gradle.internal.Factories$1.create(Factories.java:25)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:226)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:220)
        at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:186)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:95)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:67)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:695)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:143)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:62)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:41)
        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:302)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:210)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:134)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:58)
        at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:55)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:82)
        at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:55)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
        at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
        at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.gradle.internal.event.ListenerNotificationException: Failed to notify project evaluation listener.
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:86)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
        at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
        at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy26.afterEvaluate(Unknown Source)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:190)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:187)
        at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1424)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:196)
        ... 115 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.didiglobal.booster.task.compression.cwebp.CwebpKt
        at com.didiglobal.booster.task.compression.cwebp.Cwebp.<init>(Cwebp.kt:16)
        at com.didiglobal.booster.task.compression.cwebp.Cwebp.<init>(Cwebp.kt:16)
        at com.didiglobal.booster.task.compression.CompressionTool$Companion.get(CompressionTool.kt:55)
        at com.didiglobal.booster.task.compression.CompressionVariantProcessorKt.getCompressor(CompressionVariantProcessor.kt:91)
        at com.didiglobal.booster.task.compression.CompressionVariantProcessorKt.access$getCompressor$p(CompressionVariantProcessor.kt:1)
        at com.didiglobal.booster.task.compression.CompressionVariantProcessor.process(CompressionVariantProcessor.kt:79)
        at com.didiglobal.booster.gradle.BoosterPlugin$apply$$inlined$let$lambda$1.execute(BoosterPlugin.kt:25)
        at com.didiglobal.booster.gradle.BoosterPlugin$apply$$inlined$let$lambda$1.execute(BoosterPlugin.kt:15)
        at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:150)
        at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:58)
        at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:147)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:144)
        at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
        at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
        at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
        ... 125 more

集成后编译错误,java.lang.ArrayIndexOutOfBoundsException

全部集成和只集成 booster-transform-lint 都报这个错误。

Caused by: java.lang.ArrayIndexOutOfBoundsException: 97
at org.objectweb.asm.ClassReader.readLabel(ClassReader.java:2445)
at org.objectweb.asm.ClassReader.createLabel(ClassReader.java:2461)
at org.objectweb.asm.ClassReader.readStackMapFrame(ClassReader.java:3120)
at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1854)
at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1283)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:688)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:400)
at com.didiglobal.booster.transform.asm.AsmTransformer.transform(AsmTransformer.kt:27)
at com.didiglobal.booster.gradle.BoosterTransformInvocation.transform(BoosterTransformInvocation.kt:161)
at com.didiglobal.booster.gradle.BoosterTransformInvocation.access$transform(BoosterTransformInvocation.kt:38)
at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$2$1.invoke(BoosterTransformInvocation.kt:119)
at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$2$1.invoke(BoosterTransformInvocation.kt:38)
at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:61)
at com.didiglobal.booster.transform.util.TransformKt.transform(transform.kt:39)
at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$2.accept(BoosterTransformInvocation.kt:118)
at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1$2.accept(BoosterTransformInvocation.kt:38)
at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1.accept(BoosterTransformInvocation.kt:117)
at com.didiglobal.booster.gradle.BoosterTransformInvocation$doFullTransform$1.accept(BoosterTransformInvocation.kt:38)
at com.didiglobal.booster.gradle.BoosterTransformInvocation.doFullTransform$booster_gradle_plugin(BoosterTransformInvocation.kt:111)
at com.didiglobal.booster.gradle.BoosterTransform.transform(BoosterTransform.kt:38)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
... 31 more

gradlew showArtifacts --stacktrace

Caused by: java.lang.BootstrapMethodError: call site initialization exception
at com.didiglobal.booster.gradle.VariantScopeV30.getAllArtifacts(VariantScopeV30.java:81)
at com.didiglobal.booster.gradle.VariantScopeKt$ALL_ARTIFACTS_GETTER$3.invoke(VariantScope.kt:10)
at com.didiglobal.booster.gradle.VariantScopeKt$ALL_ARTIFACTS_GETTER$3.invoke(VariantScope.kt)
at com.didiglobal.booster.gradle.VariantScopeKt.getAllArtifacts(VariantScope.kt:119)
at com.didiglobal.booster.task.artifact.ArtifactsResolver.run(ArtifactsResolver.kt:15)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.