From 1b867d853ff3e75663eaa84cfbd898861473671e Mon Sep 17 00:00:00 2001 From: iqbal Date: Sun, 14 Apr 2024 16:49:03 +0400 Subject: [PATCH] make it runnable --- .idea/compiler.xml | 6 + .idea/deploymentTargetSelector.xml | 10 ++ .idea/encodings.xml | 4 - .idea/gradle.xml | 5 +- .idea/kotlinc.xml | 6 + .idea/migrations.xml | 10 ++ .idea/misc.xml | 71 ++++++++-- .idea/runConfigurations.xml | 12 -- app/build.gradle | 10 +- app/src/main/AndroidManifest.xml | 6 +- .../btkontroller/BluetoothController.kt | 121 ++++++++++-------- .../roarappstudio/btkontroller/Kontroller.kt | 6 + .../btkontroller/SelectDeviceActivity.kt | 26 ++-- .../roarappstudio/btkontroller/Unhide.kt | 4 +- .../extraLibraries/CustomGestureDetector.kt | 2 +- .../listeners/GestureDetectListener.kt | 20 +-- .../btkontroller/reports/FeatureReport.kt | 3 +- build.gradle | 4 +- gradle.properties | 1 + gradle/wrapper/gradle-wrapper.properties | 2 +- 20 files changed, 205 insertions(+), 124 deletions(-) create mode 100644 .idea/compiler.xml create mode 100644 .idea/deploymentTargetSelector.xml delete mode 100644 .idea/encodings.xml create mode 100644 .idea/kotlinc.xml create mode 100644 .idea/migrations.xml delete mode 100644 .idea/runConfigurations.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index f13fa33..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 15dda04..0b0534c 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,17 +1,18 @@ + diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..fe63bb6 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 8cb4894..34517fa 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,14 +1,59 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 9b770a6..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 7830adc..0f902c3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,19 +1,19 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 28 + namespace "com.github.roarappstudio.btkontroller" + compileSdkVersion 34 defaultConfig { applicationId "com.github.roarappstudio.btkontroller" minSdkVersion 28 - targetSdkVersion 28 + targetSdkVersion 34 versionCode 2 versionName "0.0.2" } compileOptions { - targetCompatibility 1.8 - sourceCompatibility 1.8 + targetCompatibility 17 + sourceCompatibility 17 } buildTypes { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d9233f..55e864e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ + + @@ -22,7 +24,8 @@ + android:exported="true" + android:theme="@style/SplashStyle"> @@ -30,6 +33,7 @@ diff --git a/app/src/main/java/com/github/roarappstudio/btkontroller/BluetoothController.kt b/app/src/main/java/com/github/roarappstudio/btkontroller/BluetoothController.kt index 72710be..f7ce94b 100644 --- a/app/src/main/java/com/github/roarappstudio/btkontroller/BluetoothController.kt +++ b/app/src/main/java/com/github/roarappstudio/btkontroller/BluetoothController.kt @@ -1,22 +1,28 @@ package com.github.roarappstudio.btkontroller -import android.bluetooth.* +import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.bluetooth.BluetoothHidDevice +import android.bluetooth.BluetoothHidDeviceAppQosSettings +import android.bluetooth.BluetoothHidDeviceAppSdpSettings +import android.bluetooth.BluetoothProfile import android.content.Context +import android.content.Intent +import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.util.Log import com.github.roarappstudio.btkontroller.reports.FeatureReport @Suppress("MemberVisibilityCanBePrivate") -object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.ServiceListener { +object BluetoothController : BluetoothHidDevice.Callback(), BluetoothProfile.ServiceListener { val featureReport = FeatureReport() - override fun onSetReport(device: BluetoothDevice?, type: Byte, id: Byte, data: ByteArray?) { - Log.i("setfirst","setfirst") + Log.i("setfirst", "setfirst") super.onSetReport(device, type, id, data) - Log.i("setreport","this $device and $type and $id and $data") + Log.i("setreport", "this $device and $type and $id and $data") } @@ -27,14 +33,14 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv super.onGetReport(device, type, id, bufferSize) Log.i("get", "second") - if (type == BluetoothHidDevice.REPORT_TYPE_FEATURE) { - featureReport.wheelResolutionMultiplier = true - featureReport.acPanResolutionMultiplier = true - Log.i("getbthid","$btHid") + if (type == BluetoothHidDevice.REPORT_TYPE_FEATURE) { + featureReport.wheelResolutionMultiplier = true + featureReport.acPanResolutionMultiplier = true + Log.i("getbthid", "$btHid") - var wasrs=btHid?.replyReport(device, type, FeatureReport.ID, featureReport.bytes) - Log.i("replysuccess flag ",wasrs.toString()) - } + var wasrs = btHid?.replyReport(device, type, FeatureReport.ID, featureReport.bytes) + Log.i("replysuccess flag ", wasrs.toString()) + } } @@ -45,12 +51,11 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv var hostDevice: BluetoothDevice? = null var autoPairFlag = false - var mpluggedDevice :BluetoothDevice? = null + var mpluggedDevice: BluetoothDevice? = null - - private var deviceListener: ((BluetoothHidDevice, BluetoothDevice)->Unit)? = null - private var disconnectListener: (()->Unit)? = null + private var deviceListener: ((BluetoothHidDevice, BluetoothDevice) -> Unit)? = null + private var disconnectListener: (() -> Unit)? = null fun init(ctx: Context) { if (btHid != null) @@ -58,7 +63,7 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv btAdapter.getProfileProxy(ctx, this, BluetoothProfile.HID_DEVICE) } - fun getSender(callback: (BluetoothHidDevice, BluetoothDevice)->Unit) { + fun getSender(callback: (BluetoothHidDevice, BluetoothDevice) -> Unit) { btHid?.let { hidd -> hostDevice?.let { host -> callback(hidd, host) @@ -69,7 +74,7 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv } - fun getDisconnector(callback: ()->Unit) { + fun getDisconnector(callback: () -> Unit) { disconnectListener = callback } @@ -98,32 +103,37 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv return } this.btHid = btHid - btHid.registerApp(sdpRecord, null, qosOut, {it.run()}, this)//-- - btAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, 300000) - - + btHid.registerApp(sdpRecord, null, qosOut, { it.run() }, this) + if (btAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) { + val intent = Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE) + intent.flags = FLAG_ACTIVITY_NEW_TASK + intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300) + Kontroller.INSTANCE?.startActivity(intent) + } } - /************************************************/ /** BluetoothHidDevice.Callback implementation **/ /************************************************/ - override fun onConnectionStateChanged(device: BluetoothDevice?, state: Int) { super.onConnectionStateChanged(device, state) - Log.i(TAG, "Connection state ${when(state) { - BluetoothProfile.STATE_CONNECTING -> "CONNECTING" - BluetoothProfile.STATE_CONNECTED -> "CONNECTED" - BluetoothProfile.STATE_DISCONNECTING -> "DISCONNECTING" - BluetoothProfile.STATE_DISCONNECTED -> "DISCONNECTED" - - else -> state.toString() - }}") + Log.i( + TAG, "Connection state ${ + when (state) { + BluetoothProfile.STATE_CONNECTING -> "CONNECTING" + BluetoothProfile.STATE_CONNECTED -> "CONNECTED" + BluetoothProfile.STATE_DISCONNECTING -> "DISCONNECTING" + BluetoothProfile.STATE_DISCONNECTED -> "DISCONNECTED" + + else -> state.toString() + } + }" + ) if (state == BluetoothProfile.STATE_CONNECTED) { if (device != null) { hostDevice = device @@ -136,8 +146,7 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv } } else { hostDevice = null - if(state == BluetoothProfile.STATE_DISCONNECTED) - { + if (state == BluetoothProfile.STATE_DISCONNECTED) { disconnectListener?.invoke() } @@ -146,24 +155,31 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv override fun onAppStatusChanged(pluggedDevice: BluetoothDevice?, registered: Boolean) { super.onAppStatusChanged(pluggedDevice, registered) - if(registered) - { - var pairedDevices = btHid?.getDevicesMatchingConnectionStates(intArrayOf(BluetoothProfile.STATE_CONNECTING,BluetoothProfile.STATE_CONNECTED,BluetoothProfile.STATE_DISCONNECTED,BluetoothProfile.STATE_DISCONNECTING)) - Log.d("paired d", "paired devices are : $pairedDevices") - Log.d("paired d","${btHid?.getConnectionState(pairedDevices?.get(0))}") - mpluggedDevice = pluggedDevice - if(btHid?.getConnectionState(pluggedDevice)==0 && pluggedDevice!= null && autoPairFlag ==true) - { - btHid?.connect(pluggedDevice) - //hostDevice.toString() - + if (registered) { + var pairedDevices = btHid?.getDevicesMatchingConnectionStates( + intArrayOf( + BluetoothProfile.STATE_CONNECTING, + BluetoothProfile.STATE_CONNECTED, + BluetoothProfile.STATE_DISCONNECTED, + BluetoothProfile.STATE_DISCONNECTING + ) + ) + Log.d("paired d", "paired devices are : $pairedDevices") + if (pairedDevices?.size != 0) { + Log.d("paired d", "${btHid?.getConnectionState(pairedDevices?.get(0))}") + }else{ + return + } - } + mpluggedDevice = pluggedDevice + if (btHid?.getConnectionState(pluggedDevice) == 0 && pluggedDevice != null && autoPairFlag == true) { + btHid?.connect(pluggedDevice) + //hostDevice.toString() - else if(btHid?.getConnectionState(pairedDevices?.get(0))==0 && autoPairFlag==true) - { - Log.i("ddaaqq","sssS" + } else if (btHid?.getConnectionState(pairedDevices?.get(0)) == 0 && autoPairFlag == true) { + Log.i( + "ddaaqq", "sssS" ) btHid?.connect(pairedDevices?.get(0)) } @@ -176,18 +192,12 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv // LocalBroadcastManager.getInstance(this).sendBroadcast(intent) - - - } } - - - /*************/ /** Garbage **/ /*************/ @@ -205,7 +215,6 @@ object BluetoothController: BluetoothHidDevice.Callback(), BluetoothProfile.Serv } - private val qosOut by lazy { BluetoothHidDeviceAppQosSettings( BluetoothHidDeviceAppQosSettings.SERVICE_BEST_EFFORT, diff --git a/app/src/main/java/com/github/roarappstudio/btkontroller/Kontroller.kt b/app/src/main/java/com/github/roarappstudio/btkontroller/Kontroller.kt index 3281d2a..5af253b 100644 --- a/app/src/main/java/com/github/roarappstudio/btkontroller/Kontroller.kt +++ b/app/src/main/java/com/github/roarappstudio/btkontroller/Kontroller.kt @@ -5,8 +5,14 @@ import android.app.Application @Suppress("unused") // It's in fucking manifest -_- class Kontroller: Application() { + override fun onCreate() { super.onCreate() + INSTANCE = this + } + + companion object{ + var INSTANCE: Application?=null } } \ No newline at end of file diff --git a/app/src/main/java/com/github/roarappstudio/btkontroller/SelectDeviceActivity.kt b/app/src/main/java/com/github/roarappstudio/btkontroller/SelectDeviceActivity.kt index 87fc77f..ce62512 100644 --- a/app/src/main/java/com/github/roarappstudio/btkontroller/SelectDeviceActivity.kt +++ b/app/src/main/java/com/github/roarappstudio/btkontroller/SelectDeviceActivity.kt @@ -166,7 +166,7 @@ class SelectDeviceActivity: Activity(),KeyEvent.Callback { val gTouchListener = object : View.OnTouchListener { - override fun onTouch(v: View?, event: MotionEvent?): Boolean { + override fun onTouch(v: View?, event: MotionEvent): Boolean { return mDetector.onTouchEvent(event) @@ -417,10 +417,10 @@ class SelectDeviceActivity: Activity(),KeyEvent.Callback { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - with(sharedPref.edit()) + with(sharedPref?.edit()) { - putBoolean(getString(R.string.screen_on_flag), false) - commit() + this?.putBoolean(getString(R.string.screen_on_flag), false) + this?.commit() ?: false } } @@ -429,10 +429,10 @@ class SelectDeviceActivity: Activity(),KeyEvent.Callback { item.isChecked=true window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - with(sharedPref.edit()) + with(sharedPref?.edit()) { - putBoolean(getString(R.string.screen_on_flag), true) - commit() + this?.putBoolean(getString(R.string.screen_on_flag), true) + this?.commit() } } @@ -446,10 +446,10 @@ class SelectDeviceActivity: Activity(),KeyEvent.Callback { item.isChecked = false BluetoothController.autoPairFlag=false - with(sharedPref.edit()) + with(sharedPref?.edit()) { - putBoolean(getString(R.string.auto_pair_flag), BluetoothController.autoPairFlag) - commit() + this?.putBoolean(getString(R.string.auto_pair_flag), BluetoothController.autoPairFlag) + this?.commit() } } @@ -462,10 +462,10 @@ class SelectDeviceActivity: Activity(),KeyEvent.Callback { BluetoothController.btHid?.connect(BluetoothController.mpluggedDevice) //hostDevice.toString() } - with(sharedPref.edit()) + with(sharedPref?.edit()) { - putBoolean(getString(R.string.auto_pair_flag), BluetoothController.autoPairFlag) - commit() + this?.putBoolean(getString(R.string.auto_pair_flag), BluetoothController.autoPairFlag) + this?.commit() } } diff --git a/app/src/main/java/com/github/roarappstudio/btkontroller/Unhide.kt b/app/src/main/java/com/github/roarappstudio/btkontroller/Unhide.kt index 6824e22..c332356 100644 --- a/app/src/main/java/com/github/roarappstudio/btkontroller/Unhide.kt +++ b/app/src/main/java/com/github/roarappstudio/btkontroller/Unhide.kt @@ -5,8 +5,8 @@ import android.bluetooth.BluetoothDevice /** Extensions which expose hidden API **/ -fun BluetoothAdapter.setScanMode(mode: Int, duration: Int): Boolean = - this::class.java.getMethod("setScanMode", Int::class.java, Int::class.java).invoke(this, mode, duration) as Boolean +//fun BluetoothAdapter.setScanMode(mode: Int, duration: Int): Boolean = +// this::class.java.getMethod("setScanMode", Int::class.java, Int::class.java).invoke(this, mode, duration) as Boolean fun BluetoothDevice.cancelBondProcess(): Boolean = this::class.java.getMethod("cancelBondProcess").invoke(this) as Boolean diff --git a/app/src/main/java/com/github/roarappstudio/btkontroller/extraLibraries/CustomGestureDetector.kt b/app/src/main/java/com/github/roarappstudio/btkontroller/extraLibraries/CustomGestureDetector.kt index dc6525c..8afca57 100644 --- a/app/src/main/java/com/github/roarappstudio/btkontroller/extraLibraries/CustomGestureDetector.kt +++ b/app/src/main/java/com/github/roarappstudio/btkontroller/extraLibraries/CustomGestureDetector.kt @@ -8,7 +8,7 @@ import com.github.roarappstudio.btkontroller.listeners.GestureDetectListener class CustomGestureDetector(context: Context, internal var mListener: GestureDetectListener) : GestureDetector(context, mListener) { - override fun onTouchEvent(ev: MotionEvent?): Boolean { + override fun onTouchEvent(ev: MotionEvent): Boolean { val consume = if (mListener != null) mListener!!.onTouchEvent(ev) else false return consume || super.onTouchEvent(ev) } diff --git a/app/src/main/java/com/github/roarappstudio/btkontroller/listeners/GestureDetectListener.kt b/app/src/main/java/com/github/roarappstudio/btkontroller/listeners/GestureDetectListener.kt index 8e6b759..d13444f 100644 --- a/app/src/main/java/com/github/roarappstudio/btkontroller/listeners/GestureDetectListener.kt +++ b/app/src/main/java/com/github/roarappstudio/btkontroller/listeners/GestureDetectListener.kt @@ -41,7 +41,7 @@ class GestureDetectListener(val rMouseSender : RelativeMouseSender) : GestureDet private var stopScrollFlag=0 internal var downTimestamp = System.currentTimeMillis() - fun onTouchEvent(ev: MotionEvent?): Boolean { + fun onTouchEvent(ev: MotionEvent): Boolean { if(ev !=null) { val action = ev.action and MotionEvent.ACTION_MASK if(ev.pointerCount==1) @@ -128,13 +128,13 @@ class GestureDetectListener(val rMouseSender : RelativeMouseSender) : GestureDet } return false } - override fun onDoubleTap(e: MotionEvent?): Boolean { + override fun onDoubleTap(e: MotionEvent): Boolean { Log.i("doubleddht","this is on double tap $e") return false } - override fun onDoubleTapEvent(e: MotionEvent?): Boolean { + override fun onDoubleTapEvent(e: MotionEvent): Boolean { Log.i("doubleddhe","this is on double tap event $e") if(mPtrCount==1) { @@ -175,7 +175,7 @@ class GestureDetectListener(val rMouseSender : RelativeMouseSender) : GestureDet return false } - override fun onSingleTapConfirmed(e: MotionEvent?): Boolean { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { Log.i("doubleddhs","this is on single tap confirmed $e") if(disableSingleTapFlag==1) { @@ -187,19 +187,19 @@ class GestureDetectListener(val rMouseSender : RelativeMouseSender) : GestureDet return false } - override fun onSingleTapUp(e: MotionEvent?): Boolean { + override fun onSingleTapUp(e: MotionEvent): Boolean { Log.i("doubleddhu","this is on single tap up $e") // return true } - override fun onDown(e: MotionEvent?): Boolean { + override fun onDown(e: MotionEvent): Boolean { Log.d("ggkjh", "onDown: $e") return false } - override fun onFling(e1: MotionEvent?, e2: MotionEvent?, velocityX: Float, velocityY: Float): Boolean { + override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean { Log.i("this is a fling e1 ","$e1") Log.i("this is a fling e2 ","$e2") Log.i("this is a fling vx ","$velocityX") @@ -209,7 +209,7 @@ class GestureDetectListener(val rMouseSender : RelativeMouseSender) : GestureDet return false } - override fun onScroll(e1: MotionEvent?, e2: MotionEvent?, distanceX: Float, distanceY: Float): Boolean { + override fun onScroll(e1: MotionEvent?, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean { if(mPtrCount==2) { @@ -275,11 +275,11 @@ class GestureDetectListener(val rMouseSender : RelativeMouseSender) : GestureDet return false } - override fun onLongPress(e: MotionEvent?) { + override fun onLongPress(e: MotionEvent) { } - override fun onShowPress(e: MotionEvent?) { + override fun onShowPress(e: MotionEvent) { } diff --git a/app/src/main/java/com/github/roarappstudio/btkontroller/reports/FeatureReport.kt b/app/src/main/java/com/github/roarappstudio/btkontroller/reports/FeatureReport.kt index 616fec1..9f0dd68 100644 --- a/app/src/main/java/com/github/roarappstudio/btkontroller/reports/FeatureReport.kt +++ b/app/src/main/java/com/github/roarappstudio/btkontroller/reports/FeatureReport.kt @@ -3,8 +3,7 @@ package com.github.roarappstudio.btkontroller.reports import kotlin.experimental.and import kotlin.experimental.or -@Suppress("EXPERIMENTAL_FEATURE_WARNING") -inline class FeatureReport ( +class FeatureReport ( val bytes: ByteArray = ByteArray(1) {0} ) { diff --git a/build.gradle b/build.gradle index 9fc0963..92d9306 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.21' + ext.kotlin_version = '1.9.23' ext.anko_version='0.10.8' repositories { @@ -9,7 +9,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.1' + classpath 'com.android.tools.build:gradle:8.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle.properties b/gradle.properties index 514fe6e..60cbb27 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,5 +13,6 @@ org.gradle.jvmargs=-Xmx1536m # org.gradle.parallel=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official +android.useAndroidX=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1fcbe8e..0b20331 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip