commit
8ac1d3bce9
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,171 +0,0 @@
|
||||
package com.fox2code.mmm.utils;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.util.Log;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.IdRes;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Objects;
|
||||
|
||||
public class NoodleDebug {
|
||||
private static final String TAG = "NoodleDebug";
|
||||
private static final WeakReference<Thread> NULL_THREAD_REF = new WeakReference<>(null);
|
||||
private static final ThreadLocal<NoodleDebug> THREAD_NOODLE = new ThreadLocal<>();
|
||||
@SuppressLint("StaticFieldLeak") // <- Null initialized
|
||||
private static final NoodleDebug NULL = new NoodleDebug() {
|
||||
@Override
|
||||
public NoodleDebug bind() {
|
||||
getNoodleDebug().unbind();
|
||||
THREAD_NOODLE.remove();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {}
|
||||
|
||||
@Override
|
||||
protected void markDirty() {}
|
||||
};
|
||||
private final Activity activity;
|
||||
private final TextView textView;
|
||||
private final LinkedList<String> tokens;
|
||||
private final StringBuilder debug;
|
||||
private WeakReference<Thread> thread;
|
||||
private boolean enabled, updating;
|
||||
|
||||
private NoodleDebug() {
|
||||
this.activity = null;
|
||||
this.textView = null;
|
||||
this.tokens = new LinkedList<>();
|
||||
this.debug = new StringBuilder(0);
|
||||
this.thread = NULL_THREAD_REF;
|
||||
}
|
||||
|
||||
public NoodleDebug(Activity activity,@IdRes int textViewId) {
|
||||
this(activity, activity.findViewById(textViewId));
|
||||
}
|
||||
|
||||
public NoodleDebug(Activity activity, TextView textView) {
|
||||
this.activity = Objects.requireNonNull(activity);
|
||||
this.textView = Objects.requireNonNull(textView);
|
||||
this.tokens = new LinkedList<>();
|
||||
this.debug = new StringBuilder(64);
|
||||
this.thread = NULL_THREAD_REF;
|
||||
}
|
||||
|
||||
public NoodleDebug bind() {
|
||||
synchronized (this.tokens) {
|
||||
Thread thread;
|
||||
if ((thread = this.thread.get()) != null) {
|
||||
Log.e(TAG, "Trying to bind to thread \"" + Thread.currentThread().getName() +
|
||||
"\" while already bound to \"" + thread.getName() + "\"");
|
||||
return NULL;
|
||||
}
|
||||
this.tokens.clear();
|
||||
}
|
||||
if (this.enabled) {
|
||||
this.thread = new WeakReference<>(Thread.currentThread());
|
||||
THREAD_NOODLE.set(this);
|
||||
} else {
|
||||
this.thread = NULL_THREAD_REF;
|
||||
THREAD_NOODLE.remove();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public void unbind() {
|
||||
this.thread = NULL_THREAD_REF;
|
||||
boolean markDirty;
|
||||
synchronized (this.tokens) {
|
||||
markDirty = !this.tokens.isEmpty();
|
||||
this.tokens.clear();
|
||||
}
|
||||
if (markDirty) this.markDirty();
|
||||
}
|
||||
|
||||
public boolean isBound() {
|
||||
return this.thread.get() != null;
|
||||
}
|
||||
|
||||
public void push(String token) {
|
||||
if (!this.enabled) return;
|
||||
synchronized (this.tokens) {
|
||||
this.tokens.add(token);
|
||||
}
|
||||
if (!token.isEmpty())
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
public void pop() {
|
||||
if (!this.enabled) return;
|
||||
String last;
|
||||
synchronized (this.tokens) {
|
||||
last = this.tokens.removeLast();
|
||||
}
|
||||
if (!last.isEmpty())
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
public void replace(String token) {
|
||||
if (!this.enabled) return;
|
||||
String last;
|
||||
synchronized (this.tokens) {
|
||||
last = this.tokens.removeLast();
|
||||
this.tokens.add(token);
|
||||
}
|
||||
if (!last.equals(token))
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
if (this.enabled && !enabled) {
|
||||
this.thread = NULL_THREAD_REF;
|
||||
synchronized (this.tokens) {
|
||||
this.tokens.clear();
|
||||
}
|
||||
this.markDirty();
|
||||
}
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
protected void markDirty() {
|
||||
assert this.activity != null;
|
||||
assert this.textView != null;
|
||||
if (this.updating) return;
|
||||
this.updating = true;
|
||||
this.activity.runOnUiThread(() -> {
|
||||
String debugText;
|
||||
synchronized (this.tokens) {
|
||||
StringBuilder debug = this.debug;
|
||||
debug.setLength(0);
|
||||
boolean first = true;
|
||||
for (String text : this.tokens) {
|
||||
if (text.isEmpty()) continue;
|
||||
if (first) first = false;
|
||||
else debug.append(" > ");
|
||||
debug.append(text);
|
||||
}
|
||||
debugText = debug.toString();
|
||||
}
|
||||
this.updating = false;
|
||||
this.textView.setText(debugText);
|
||||
});
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static NoodleDebug getNoodleDebug() {
|
||||
NoodleDebug noodleDebug = THREAD_NOODLE.get();
|
||||
if (noodleDebug == null) return NULL;
|
||||
if (noodleDebug.thread.get() != Thread.currentThread() ||
|
||||
noodleDebug.activity.isDestroyed()) {
|
||||
THREAD_NOODLE.remove();
|
||||
return NULL;
|
||||
}
|
||||
return noodleDebug;
|
||||
}
|
||||
}
|
@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="fill" android:orientation="vertical" android:paddingLeft="20dp" android:paddingRight="20dp" android:scrollbars="vertical">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:text="@string/setup_message" />
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:text="@string/repos"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Headline" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/setup_androidacy_repo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:checked="false"
|
||||
android:key="pref_androidacy_repo_enabled"
|
||||
android:text="@string/setup_androidacy_repo"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/setup_magisk_alt_repo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:text="@string/setup_magisk_alt_repo"
|
||||
android:checked="false"
|
||||
android:key="pref_magisk_alt_repo_enabled"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:text="@string/setup_custom_repos"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Caption" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:text="@string/misc"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Headline" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/setup_crash_reporting"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:checked="false"
|
||||
android:key="pref_crash_reporting_enabled"
|
||||
android:text="@string/setup_crash_reporting"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/setup_background_update_check"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:checked="false"
|
||||
android:key="pref_background_update_check"
|
||||
android:text="@string/setup_background_update_check"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small" />
|
||||
|
||||
<!-- Placeholder for future settings -->
|
||||
<!--<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/setup_app_analytics"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:checked="false"
|
||||
android:key="pref_app_analytics"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small"
|
||||
android:text="@string/setup_app_analytics" />-->
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</LinearLayout>
|
@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
|
||||
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
|
||||
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
|
||||
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
|
||||
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
|
||||
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
|
||||
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
|
||||
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
|
||||
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
|
||||
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
|
||||
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
|
||||
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
|
||||
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
||||
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
||||
-----END CERTIFICATE-----
|
@ -0,0 +1,21 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
|
||||
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
|
||||
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
|
||||
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
|
||||
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
|
||||
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
|
||||
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
|
||||
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
|
||||
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
|
||||
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
|
||||
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
|
||||
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
|
||||
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
|
||||
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
|
||||
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
|
||||
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
|
||||
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
|
||||
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
|
||||
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
||||
-----END CERTIFICATE-----
|
@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
|
||||
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
|
||||
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
|
||||
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
|
||||
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
|
||||
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
|
||||
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
|
||||
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
|
||||
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
|
||||
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
|
||||
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
|
||||
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
|
||||
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
||||
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
||||
-----END CERTIFICATE-----
|
@ -0,0 +1,31 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Theme.MagiskModuleManager.Transparent.Light" parent="Theme.MagiskModuleManager.Light">
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:backgroundDimEnabled">false</item>
|
||||
<item name="android:windowAnimationStyle">@android:style/Animation</item>
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="windowActionBar">false</item>
|
||||
<!-- Make as much as sanely possible of the window transparent -->
|
||||
<item name="android:background">@android:color/transparent</item>
|
||||
<item name="android:colorBackground">@android:color/transparent</item>
|
||||
<item name="android:primaryContentAlpha">0.0</item>
|
||||
<item name="android:secondaryContentAlpha">0.0</item>
|
||||
</style>
|
||||
</resources>
|
@ -0,0 +1,47 @@
|
||||
## Adding custom repositories
|
||||
|
||||
You have two options:
|
||||
|
||||
### Option 1: Add your repo to the app for yourself:
|
||||
|
||||
1. You need the modules.json link of your repo, if you don't have one please contact the repo owner.
|
||||
2. Open the app and go to the settings.
|
||||
3. Go to repos at the top.
|
||||
4. Scroll to the bottom and click on the "Add repo" button.
|
||||
5. Paste the modules.json link and click on the "Add" button.
|
||||
6. You can now download modules from your repo.
|
||||
|
||||
### Option 2: Add your repo to the app for everyone:
|
||||
|
||||
To add you own repo to Fox's mmm it need to follow theses conditions:
|
||||
|
||||
- The module repo or at least one of it's owners must be known.
|
||||
- Modules in the repo must be monitored, and malicious modules must be removed.
|
||||
- Module repo must have a valid, working, automatically or frequently updated `modules.json`
|
||||
([Example](https://github.com/Magisk-Modules-Alt-Repo/json/blob/main/modules.json))
|
||||
|
||||
These guidelines are not mandatory, but not following them may result in your repo being removed or
|
||||
not being added in the first place.
|
||||
<details>
|
||||
<summary>Click to see the guidelines</summary>
|
||||
|
||||
- Repos must process and take-down off their repo module where it's removal was provably
|
||||
requested by
|
||||
their
|
||||
original author
|
||||
- Repos may not collect and/or distribute any personally identifiable data (including IP
|
||||
addresses) without
|
||||
informing
|
||||
users
|
||||
that they do so and offering a way to opt out
|
||||
- Modules owners must be aware that their modules are being hosted on the repository and/or have a
|
||||
way to remove their modules from the repository
|
||||
- Modules owners must be aware of any change made of the distributed version of their modules.
|
||||
- Repos should make an effort to keep users safe, via a review process, or by using a
|
||||
whitelist/blacklist
|
||||
|
||||
</details>
|
||||
|
||||
In all scenarios, insofar that their policies are not in conflict with the above, the repo owner's
|
||||
poloicies take precedence over the above guidelines. We encourage users to check the guidelines of
|
||||
the repo they are using.
|
@ -1,6 +1,6 @@
|
||||
#Sun Jun 05 10:40:53 EDT 2022
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
distributionPath=wrapper/dists
|
||||
zipStorePath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
Loading…
Reference in New Issue