Skip to content

When file paths for Briefcase projects contain unconventional characters, third party tools may fail to run properly #2580

@rmartin16

Description

@rmartin16

Describe the bug

The fully qualified file path for a Briefcase project is commonly provided as part of command line arguments for third party dependencies. Not all of these dependencies support arbitrary characters in the file path.

For instance, Gradle could not use a file path with the character 0x200e.

Steps to reproduce

  1. Create a Briefcase project with a parent directory called 0x200e
  2. Run briefcase build android

Expected behavior

Briefcase warns users that such parent file paths may cause problems.

Screenshots

No response

Environment

  • Operating System: Windows 11
  • Python version: 3.13.7
  • Software versions:
    • Briefcase: 0.3.25

Logs

Problematic character is the directory name on Desktop.

           >>> Running Command:                                                                                                                                    subprocess.py:838
           >>>     'C:\Users\<user>\Desktop\‎\Projects\app\name\build\name\android\gradle\gradlew.bat' --console plain assembleDebug                        subprocess.py:838
           >>> Working Directory:                                                                                                                                  subprocess.py:838
           >>>     C:\Users\<user>\Desktop\‎\Projects\app\name\build\name\android\gradle                                                                    subprocess.py:838
           >>> Environment Overrides:                                                                                                                              subprocess.py:838
           >>>     ANDROID_HOME=C:\briefcase_tools\tools\android_sdk                                                                                               subprocess.py:838
           >>>     ANDROID_SDK_ROOT=C:\briefcase_tools\tools\android_sdk                                                                                           subprocess.py:838
           >>>     JAVA_HOME=C:\briefcase_tools\tools\java17                                                                                                       subprocess.py:838
           Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain                                                                           subprocess.py:195
           Caused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain                                                                       subprocess.py:195
           >>> Return code: 1                                                                                                                                      subprocess.py:838
                                                                                                                                                                   subprocess.py:838
           Building... errored                                                                                                                                         gradle.py:323
                                                                                                                                                                      __main__.py:42
           Error while building project.                                                                                                                              __main__.py:43
           Saving log... started                                                                                                                                      console.py:438

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA crash or error in behavior.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions