TeamAmaze / AmazeFileManager

Material design file manager for Android
https://teamamaze.xyz
GNU General Public License v3.0
5.08k stars 1.53k forks source link

Fix wired build error #4158

Closed Bambooin closed 3 weeks ago

Bambooin commented 4 weeks ago

Description

Error:

$ ./gradlew assembleFdroidRelease

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'amaze'.
> Could not create an instance of type org.gradle.accessors.dm.LibrariesForLibs.
   > Could not generate a decorated class for type LibrariesForLibs.
      > org/gradle/accessors/dm/LibrariesForLibs$AndroidxLibraryAccessors (wrong name: org/gradle/accessors/dm/LibrariesForLibs$AndroidXLibraryAccessors)

Analysis: Find all string AndroidxLibraryAccessors

grep -r AndroidXLibraryAccessors .

Before:

/**
 * A catalog of dependencies accessible via the `libs` extension.
*/
@NonNullApi
public class LibrariesForLibs extends AbstractExternalDependencyFactory {

    private final AbstractExternalDependencyFactory owner = this;
    private final AcraLibraryAccessors laccForAcraLibraryAccessors = new AcraLibraryAccessors(owner);
    private final AmazeLibraryAccessors laccForAmazeLibraryAccessors = new AmazeLibraryAccessors(owner);

    private final AndroidXLibraryAccessors laccForAndroidXLibraryAccessors = new AndroidXLibraryAccessors(owner);
    private final AndroidxLibraryAccessors laccForAndroidxLibraryAccessors = new AndroidxLibraryAccessors(owner);

After:

/**
 * A catalog of dependencies accessible via the `libs` extension.
*/
@NonNullApi
public class LibrariesForLibs extends AbstractExternalDependencyFactory {

    private final AbstractExternalDependencyFactory owner = this;
    private final AcraLibraryAccessors laccForAcraLibraryAccessors = new AcraLibraryAccessors(owner);
    private final AmazeLibraryAccessors laccForAmazeLibraryAccessors = new AmazeLibraryAccessors(owner);
    private final AndroidXLibraryAccessors laccForAndroidXLibraryAccessors = new AndroidXLibraryAccessors(owner);
    private final ApacheLibraryAccessors laccForApacheLibraryAccessors = new ApacheLibraryAccessors(owner);

No class conflict(AndroidXLibraryAccessors vs AndroidxLibraryAccessors) anymore.

Root cause: Seems this bug only show up on gradle 7.x(7.5 and 7.6.4) not gradle 8.7.

macOS is not a case sensitive file system by default, so the CI passed in Linux and failed in macOS.

Issue tracker

Fixes #4157

Automatic tests

Manual tests

Build tasks success

Successfully running following tasks on local:

Bambooin commented 4 weeks ago

Seems this issue also in branch https://github.com/TeamAmaze/AmazeFileManager/tree/release/3.10

This regression is on #4092

VishalNehra commented 3 weeks ago

Was wondering why it was failing on my mac. Thanks for this :)