Redefinition error of BLEDescriptor when using ArduinoBLE for ESP32

Hi,
I’m trying to add ESP32 native BLE library support for my library:

But, after downloading of native library target with ArduinoBLE will not compile:

In file included from .pio/libdeps/esp32dev/ArduinoBLE/src/BLECharacteristic.h:25,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/BLEService.h:23,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/BLEAdvertisingData.h:25,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/local/BLELocalDevice.h:25,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/ArduinoBLE.h:23,
                 from src/ArduinoBleOtaClass.h:6,
                 from src/ArduinoBleOTA.h:9,
                 from /home/tsiselsk/Projects/private/ArduinoBleOTA/examples/full/main.ino:1:
.pio/libdeps/esp32dev/ArduinoBLE/src/BLEDescriptor.h:28:7: error: redefinition of 'class BLEDescriptor'
 class BLEDescriptor {
       ^~~~~~~~~~~~~
In file included from /home/tsiselsk/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLECharacteristic.h:17,
                 from /home/tsiselsk/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLEServer.h:20,
                 from /home/tsiselsk/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLEDevice.h:18,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/local/BLELocalDevice.h:23,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/ArduinoBLE.h:23,
                 from src/ArduinoBleOtaClass.h:6,
                 from src/ArduinoBleOTA.h:9,
                 from /home/tsiselsk/Projects/private/ArduinoBleOTA/examples/full/main.ino:1:
/home/tsiselsk/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLEDescriptor.h:25:7: note: previous definition of 'class BLEDescriptor'
 class BLEDescriptor {
       ^~~~~~~~~~~~~
In file included from .pio/libdeps/esp32dev/ArduinoBLE/src/BLEService.h:23,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/BLEAdvertisingData.h:25,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/local/BLELocalDevice.h:25,
                 from .pio/libdeps/esp32dev/ArduinoBLE/src/ArduinoBLE.h:23,
                 from src/ArduinoBleOtaClass.h:6,
                 from src/ArduinoBleOTA.h:9,
                 from /home/tsiselsk/Projects/private/ArduinoBleOTA/examples/full/main.ino:1:

Looks that now .platformio use both ~/.platformio/packages/framework-arduinoespressif32/libraries/BLE and pio/libdeps/esp32dev/ArduinoBLE libraries.
Found some issue:

But don’t know how o solve it. Are platformio use the same dependency algorithm as arduino?

If you want to use that library, then don’t add a lib_deps for ArduinoBLE. Framework-internal libraries are found automatically.

If you didn’t explicitly put this in your platformio.ini, some library might have put ArduinoBLEas dependency.

Hmm, I have number of envs

[env]
framework = arduino
lib_deps = 
	jandrassy/ArduinoOTA@^1.0.10
	RobTillaart/CRC@^1.0.1
	rlogiacco/CircularBuffer@^1.3.3

[env:esp32dev]
platform = espressif32
board = esp32dev
lib_deps =
	${env.lib_deps}
	arduino-libraries/ArduinoBLE@^1.3.5

[env:esp32dev_nimble]
platform = espressif32
board = esp32dev
build_flags = 
	-D USE_NIM_BLE_ARDUINO_LIB
lib_deps =
	${env.lib_deps}
	h2zero/NimBLE-Arduino@^1.4.1

All envs compiles before. But after adding new one (where I use native BLE lib):

[env:esp32dev_native]
platform = espressif32
board = esp32dev
build_flags = 
	-D USE_NATIVE_ESP32_LIB
lib_deps =
	${env.lib_deps}

env:esp32dev doesn’t compile anymore

I think that issue occurs just because after using native library (target env:esp32dev_native) platformio dowloads ~/.platformio/packages/framework-arduinoespressif32/libraries/BLE. And after that env:esp32dev target use native library and ArduinoBLE at the same time. Don’t know how to force using only ArduinoBLE for env:esp32dev. @maxgerhardt do You have an idea?

If PlatformIO includes the wrong library, you can lib_ignore = BLE (docs) if needed.

lib_ignore = BLE or lib_ignore = libraries/BLE doesn’t help.
Perhaps because BLE library isn’t available in Dependency Graph:

LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 44 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ArduinoOTA @ 1.0.11
|-- CRC @ 1.0.2
|-- CircularBuffer @ 1.3.3
|-- ArduinoBLE @ 1.3.6
|-- src

After today’s platformio core updating and clean build it just compiles successfully. Lets wait and take a look for a while if issue will back