diff --git a/.travis.yml b/.travis.yml index 2b005272deff1365f461ccbc434b8fe588b08732..02f9e12f20c50c0b5ca12f2489825382f25f1adc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,15 @@ -language: android -sudo: false -git: - submodules: false -before_install: - - git submodule update --init --recursive +language: java +jdk: openjdk8 +install: + - mkdir $HOME/android-cmdline-tools + - curl https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip > $HOME/android-cmdline-tools/cmdline-tools.zip + - unzip -qq -n $HOME/android-cmdline-tools/cmdline-tools.zip -d $HOME/android-cmdline-tools + - echo y | $HOME/android-cmdline-tools/tools/bin/sdkmanager --sdk_root=$HOME/android-sdk 'platform-tools' + - echo y | $HOME/android-cmdline-tools/tools/bin/sdkmanager --sdk_root=$HOME/android-sdk 'build-tools;29.0.3' + - echo y | $HOME/android-cmdline-tools/tools/bin/sdkmanager --sdk_root=$HOME/android-sdk 'platforms;android-30' +env: + - ANDROID_HOME=$HOME/android-sdk TERM=dumb JAVA_OPTS="-Xmx2048m" before_script: - echo sdk.dir $ANDROID_HOME > local.properties script: - - jdk_switcher use oraclejdk8 - - export TERM=dumb - - export JAVA_OPTS="-XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Xmx2048m" - - ./gradlew build -android: - components: - - tools - - platform-tools - - build-tools-24.0.3 - - android-24 - - extra-android-m2repository -before_cache: - - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock -cache: - directories: - - $HOME/.gradle/caches/ - - $HOME/.gradle/wrapper/ + - ./gradlew --no-daemon build diff --git a/build.gradle b/build.gradle index 3ec4bfcef01f269a5ea018ee2e05d4a72373d09e..d5dcb5f83ee14aaecc6860c9a668074dd98e8f9f 100644 --- a/build.gradle +++ b/build.gradle @@ -15,22 +15,23 @@ */ buildscript { + ext.kotlin_version = '1.6.21' repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' + classpath 'com.android.tools.build:gradle:3.6.3' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { apply plugin: 'idea' - ext.androidBuildVersionTools = "24.0.3" - ext.isReleaseVersion = false + ext.androidBuildVersionTools = "29.0.3" } -def androidCompileSdk() { return 24 } +def androidCompileSdk() { return 30 } def androidTargetSdk() { return 24 } @@ -55,11 +56,7 @@ subprojects { group = 'org.microg' repositories { jcenter() - } - - tasks.withType(JavaCompile) { - sourceCompatibility = JavaVersion.VERSION_1_7 - targetCompatibility = JavaVersion.VERSION_1_7 + google() } } diff --git a/fake-store/build.gradle b/fake-store/build.gradle index 7f3ba8fa251c8a73aa439b30d9c5ec8236877dce..dc59f5dad279d86cc63f1e767ce60359137f01c6 100644 --- a/fake-store/build.gradle +++ b/fake-store/build.gradle @@ -15,6 +15,7 @@ */ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' String getMyVersionName() { def stdout = new ByteArrayOutputStream() @@ -46,10 +47,17 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_6 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } } if (file('user.gradle').exists()) { apply from: 'user.gradle' } +repositories { + mavenCentral() +} +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/fake-store/src/main/AndroidManifest.xml b/fake-store/src/main/AndroidManifest.xml index 428bdc4839be35c942daafe257f01caaecd5b539..53e5f84df7a75e9e87dea391dc9f6985de252370 100644 --- a/fake-store/src/main/AndroidManifest.xml +++ b/fake-store/src/main/AndroidManifest.xml @@ -18,12 +18,10 @@ - - + + android:theme="@style/Theme.Dialog.NoActionBar"/> @@ -41,5 +39,12 @@ + + + + + + diff --git a/fake-store/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl b/fake-store/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl index 0092998ad03a8ed1974bb680beb048ced41174d5..ea72c81f9cce11edfa6ebd3c2a2a335f375d93d8 100644 --- a/fake-store/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl +++ b/fake-store/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl @@ -53,7 +53,7 @@ interface IInAppBillingService { * and "subs" for subscriptions) * @return RESULT_OK(0) on success and appropriate response code on failures. */ - int isBillingSupported(int apiVersion, String packageName, String type); + int isBillingSupported(int apiVersion, String packageName, String type) = 0; /** * Provides details of a list of SKUs @@ -78,7 +78,7 @@ interface IInAppBillingService { * "title : "Example Title", * "description" : "This is an example description" }' */ - Bundle getSkuDetails(int apiVersion, String packageName, String type, in Bundle skusBundle); + Bundle getSkuDetails(int apiVersion, String packageName, String type, in Bundle skusBundle) = 1; /** * Returns a pending intent to launch the purchase flow for an in-app item by providing a SKU, @@ -111,7 +111,7 @@ interface IInAppBillingService { * TODO: change this to app-specific keys. */ Bundle getBuyIntent(int apiVersion, String packageName, String sku, String type, - String developerPayload); + String developerPayload) = 2; /** * Returns the current SKUs owned by the user of the type and package name specified along with @@ -137,7 +137,7 @@ interface IInAppBillingService { * next set of in-app purchases. Only set if the * user has more owned skus than the current list. */ - Bundle getPurchases(int apiVersion, String packageName, String type, String continuationToken); + Bundle getPurchases(int apiVersion, String packageName, String type, String continuationToken) = 3; /** * Consume the last purchase of the given SKU. This will result in this item being removed @@ -148,12 +148,7 @@ interface IInAppBillingService { * to be consumed * @return RESULT_OK(0) if consumption succeeded, appropriate response codes on failures. */ - int consumePurchase(int apiVersion, String packageName, String purchaseToken); - - /** - * This API is currently under development. - */ - int stub(int apiVersion, String packageName, String type); + int consumePurchase(int apiVersion, String packageName, String purchaseToken) = 4; /** * Returns a pending intent to launch the purchase flow for upgrading or downgrading a @@ -188,5 +183,21 @@ interface IInAppBillingService { * TODO: change this to app-specific keys. */ Bundle getBuyIntentToReplaceSkus(int apiVersion, String packageName, - in List oldSkus, String newSku, String type, String developerPayload); + in List oldSkus, String newSku, String type, String developerPayload) = 6; + + Bundle getBuyIntentV6(int apiVersion, String packageName, String sku, String type, String developerPayload, in Bundle extras) = 7; + + Bundle getPurchasesV6(int apiVersion, String packageName, String type, String continuationToken, in Bundle extras) = 8; + + int isBillingSupportedV7(int apiVersion, String packageName, String type, in Bundle extras) = 9; + + Bundle getPurchasesV9(int apiVersion, String packageName, String type, String continuationToken, in Bundle extras) = 10; + + Bundle consumePurchaseV9(int apiVersion, String packageName, String purchaseToken, in Bundle extras) = 11; + + Bundle getPriceChangeConfirmationIntent(int apiVersion, String packageName, String sku, String type, in Bundle extras) = 800; + + Bundle getSkuDetailsV10(int apiVersion, String packageName, String type, in Bundle skuBundle, in Bundle extras) = 900; + + Bundle acknowledgePurchase(int apiVersion, String packageName, String purchaseToken, in Bundle extras) = 901; } diff --git a/fake-store/src/main/aidl/com/google/android/play/core/splitinstall/protocol/ISplitInstallService.aidl b/fake-store/src/main/aidl/com/google/android/play/core/splitinstall/protocol/ISplitInstallService.aidl new file mode 100644 index 0000000000000000000000000000000000000000..31a0df922023e8ba501659957f9698558a4c39ed --- /dev/null +++ b/fake-store/src/main/aidl/com/google/android/play/core/splitinstall/protocol/ISplitInstallService.aidl @@ -0,0 +1,59 @@ +/* + * Copyright 2013-2022 microG Project Team + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.play.core.splitinstall.protocol; + +import com.google.android.play.core.splitinstall.protocol.ISplitInstallServiceCallback; + +interface ISplitInstallService { + + // Method not identified yet + void a(); + + void startInstall(String str, in List list, in Bundle bundle, in ISplitInstallServiceCallback callback); + + // Method not identified yet + void c(String str); + + // Method not identified yet + void d(String str); + + // Method not identified yet + void e(String str); + + void getSessionStates(String str, in ISplitInstallServiceCallback callback); + + // Method not identified yet + void g(String str); + + // Method not identified yet + void h(String str, in ISplitInstallServiceCallback callback); + + // Method not identified yet + void i(String str); + + // Method not identified yet + void j(String str); + + // Method not identified yet + void k(String str); + + // Method not identified yet + void l(String str); + + // Method not identified yet + void m(String str); +} \ No newline at end of file diff --git a/fake-store/src/main/aidl/com/google/android/play/core/splitinstall/protocol/ISplitInstallServiceCallback.aidl b/fake-store/src/main/aidl/com/google/android/play/core/splitinstall/protocol/ISplitInstallServiceCallback.aidl new file mode 100644 index 0000000000000000000000000000000000000000..18b8657ca5e3cccf5b067dc65f7ac649d07a3992 --- /dev/null +++ b/fake-store/src/main/aidl/com/google/android/play/core/splitinstall/protocol/ISplitInstallServiceCallback.aidl @@ -0,0 +1,47 @@ +/* + * Copyright 2013-2022 microG Project Team + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.play.core.splitinstall.protocol; + +import android.os.Bundle; + +interface ISplitInstallServiceCallback { + + void onStartInstall(int i, in Bundle bundle); + + // Method not identified yet + void b(); + + void onCompleteInstall(int i); + + void onCancelInstall(int i, in Bundle bundle); + + void onGetSession(int i, in Bundle bundle); + + void onError(in Bundle bundle); + + void onGetSessionStates(in List list); + + void onDeferredUninstall(in Bundle bundle); + + void onDeferredInstall(in Bundle bundle); + + void onGetSplitsForAppUpdate(); + + void onCompleteInstallForAppUpdate(); + + void onDeferredLanguageInstall(); +} \ No newline at end of file diff --git a/fake-store/src/main/java/com/android/vending/SplitInstallService.kt b/fake-store/src/main/java/com/android/vending/SplitInstallService.kt new file mode 100644 index 0000000000000000000000000000000000000000..a70ec77636a4e6e1686e2fd78b2cac7027326324 --- /dev/null +++ b/fake-store/src/main/java/com/android/vending/SplitInstallService.kt @@ -0,0 +1,115 @@ +/* + * Copyright 2013-2022 microG Project Team + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.vending + +import android.app.Service +import android.content.Intent +import android.os.Bundle +import android.os.IBinder +import android.util.Log +import com.android.vending.splitinstall.SplitInstallErrorCode +import com.google.android.play.core.splitinstall.protocol.ISplitInstallService +import com.google.android.play.core.splitinstall.protocol.ISplitInstallServiceCallback + +class SplitInstallService : Service() { + + companion object { + const val TAG = "SplitInstallService" + const val ERROR_CODE_KEY = "error_code" + } + + override fun onBind(p0: Intent?): IBinder { + Log.i(TAG, "service bound") + return mServiceInterface + } + + private val mServiceInterface = object : ISplitInstallService.Stub() { + + override fun a() { + Log.d(TAG, "a") + } + + private fun logBundle(bundle: Bundle) { + for (key in bundle.keySet()) { + Log.d(TAG, "$key : ${bundle.get(key)}") + } + } + + override fun startInstall( + packageName: String, + list: List, + bundle: Bundle, + callback: ISplitInstallServiceCallback + ) { + Log.i(TAG, "Start install request from $packageName") + + for (element in list) { + logBundle(element) + } + + logBundle(bundle) + + val errorBundle = Bundle() + errorBundle.putInt(ERROR_CODE_KEY, SplitInstallErrorCode.API_NOT_AVAILABLE) + callback.onError(errorBundle) + } + + override fun c(str: String?) { + Log.d(TAG, "c") + } + + override fun d(str: String?) { + Log.d(TAG, "d") + } + + override fun e(str: String?) { + Log.d(TAG, "e") + } + + override fun getSessionStates(str: String, callback: ISplitInstallServiceCallback) { + callback.onGetSessionStates(arrayListOf()) + } + + override fun g(str: String?) { + Log.d(TAG, "g") + } + + override fun h(str: String?, callback: ISplitInstallServiceCallback?) { + Log.d(TAG, "h $str $callback") + } + + override fun i(str: String?) { + Log.d(TAG, "i") + } + + override fun j(str: String?) { + Log.d(TAG, "j") + } + + override fun k(str: String?) { + Log.d(TAG, "k") + } + + override fun l(str: String?) { + Log.d(TAG, "l") + } + + override fun m(str: String?) { + Log.d(TAG, "m") + } + } +} diff --git a/fake-store/src/main/java/com/android/vending/billing/InAppBillingService.java b/fake-store/src/main/java/com/android/vending/billing/InAppBillingService.java index 74d8a33845e138c42c2db1d847cbd9f6a02d7924..e05e4e185c1eea64ae64aa03fd2d9fe58ccb0fcd 100644 --- a/fake-store/src/main/java/com/android/vending/billing/InAppBillingService.java +++ b/fake-store/src/main/java/com/android/vending/billing/InAppBillingService.java @@ -4,6 +4,7 @@ import android.app.Service; import android.content.Intent; import android.os.Bundle; import android.os.IBinder; +import android.os.Parcel; import android.os.RemoteException; import android.util.Log; @@ -14,34 +15,64 @@ import java.util.List; * Created by andrew.zhao on 9/19/16. */ public class InAppBillingService extends Service { + private static final String TAG = "FakeInAppStore"; private final IInAppBillingService.Stub mInAppBillingService = new IInAppBillingService.Stub() { @Override public int isBillingSupported(int apiVersion, String packageName, String type) throws RemoteException { - Log.e("fakestore", "issupported"); - return 0; + return isBillingSupportedV7(apiVersion, packageName, type, new Bundle()); } @Override public Bundle getSkuDetails(int apiVersion, String packageName, String type, Bundle skusBundle) throws RemoteException { - Log.e("fakestore", "getsku"); + return getSkuDetailsV10(apiVersion, packageName, type, skusBundle, new Bundle()); + } + + @Override + public Bundle getBuyIntent(int apiVersion, String packageName, String sku, String type, String developerPayload) throws RemoteException { + return getBuyIntentV6(apiVersion, packageName, sku, type, developerPayload, new Bundle()); + } + + @Override + public Bundle getPurchases(int apiVersion, String packageName, String type, String continuationToken) throws RemoteException { + return getPurchasesV6(apiVersion, packageName, type, continuationToken, new Bundle()); + } + + @Override + public int consumePurchase(int apiVersion, String packageName, String purchaseToken) throws RemoteException { + return consumePurchaseV9(apiVersion, packageName, purchaseToken, new Bundle()).getInt("RESPONSE_CODE", 8); + } + + @Override + public Bundle getBuyIntentToReplaceSkus(int apiVersion, String packageName, List oldSkus, String newSku, String type, String developerPayload) throws RemoteException { + Log.d(TAG, "getBuyIntentToReplaceSkus(" + apiVersion + ", " + packageName + ", " + newSku + ", " + type + ", " + developerPayload + ")"); Bundle data = new Bundle(); - data.putInt("RESPONSE_CODE", 0); - data.putStringArrayList("DETAILS_LIST", new ArrayList()); + data.putInt("RESPONSE_CODE", 4); return data; } @Override - public Bundle getBuyIntent(int apiVersion, String packageName, String sku, String type, String developerPayload) throws RemoteException { - Log.e("fakestore", "getbuy"); + public Bundle getBuyIntentV6(int apiVersion, String packageName, String sku, String type, String developerPayload, Bundle extras) throws RemoteException { + Log.d(TAG, "getBuyIntent(" + apiVersion + ", " + packageName + ", " + sku + ", " + type + ", " + developerPayload + ")"); Bundle data = new Bundle(); data.putInt("RESPONSE_CODE", 4); return data; } @Override - public Bundle getPurchases(int apiVersion, String packageName, String type, String continuationToken) throws RemoteException { - Log.e("fakestore", "getpurchase"); + public Bundle getPurchasesV6(int apiVersion, String packageName, String type, String continuationToken, Bundle extras) throws RemoteException { + return getPurchasesV9(apiVersion, packageName, type, continuationToken, extras); + } + + @Override + public int isBillingSupportedV7(int apiVersion, String packageName, String type, Bundle extras) throws RemoteException { + Log.d(TAG, "isBillingSupported(" + apiVersion + ", " + packageName + ", " + type + ")"); + return 0; + } + + @Override + public Bundle getPurchasesV9(int apiVersion, String packageName, String type, String continuationToken, Bundle extras) throws RemoteException { + Log.d(TAG, "getPurchases(" + apiVersion + ", " + packageName + ", " + type + ", " + continuationToken + ")"); Bundle data = new Bundle(); data.putInt("RESPONSE_CODE", 0); data.putStringArrayList("INAPP_PURCHASE_ITEM_LIST", new ArrayList()); @@ -51,24 +82,44 @@ public class InAppBillingService extends Service { } @Override - public int consumePurchase(int apiVersion, String packageName, String purchaseToken) throws RemoteException { - Log.e("fakestore", "consumepurchase"); - return 8; + public Bundle consumePurchaseV9(int apiVersion, String packageName, String purchaseToken, Bundle extras) throws RemoteException { + Log.d(TAG, "consumePurchase(" + apiVersion + ", " + packageName + ", " + purchaseToken + ")"); + Bundle data = new Bundle(); + data.putInt("RESPONSE_CODE", 8); + return data; } @Override - public int stub(int apiVersion, String packageName, String type) throws RemoteException { - Log.e("fakestore", "stub"); - return 0; + public Bundle getPriceChangeConfirmationIntent(int apiVersion, String packageName, String sku, String type, Bundle extras) throws RemoteException { + Log.d(TAG, "getPriceChangeConfirmationIntent(" + apiVersion + ", " + packageName + ", " + sku + ", " + type + ")"); + Bundle data = new Bundle(); + data.putInt("RESPONSE_CODE", 4); + return data; } @Override - public Bundle getBuyIntentToReplaceSkus(int apiVersion, String packageName, List oldSkus, String newSku, String type, String developerPayload) throws RemoteException { - Log.e("fakestore", "getbuyintenttoreplace"); + public Bundle getSkuDetailsV10(int apiVersion, String packageName, String type, Bundle skuBundle, Bundle extras) throws RemoteException { + Log.d(TAG, "getSkuDetails(" + apiVersion + ", " + packageName + ", " + type + ")"); Bundle data = new Bundle(); - data.putInt("RESPONSE_CODE", 4); + data.putInt("RESPONSE_CODE", 0); + data.putStringArrayList("DETAILS_LIST", new ArrayList()); + return data; + } + + @Override + public Bundle acknowledgePurchase(int apiVersion, String packageName, String purchaseToken, Bundle extras) throws RemoteException { + Log.d(TAG, "acknowledgePurchase(" + apiVersion + ", " + packageName + ", " + purchaseToken + ")"); + Bundle data = new Bundle(); + data.putInt("RESPONSE_CODE", 8); return data; } + + @Override + public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { + if (super.onTransact(code, data, reply, flags)) return true; + Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags); + return false; + } }; public IBinder onBind(Intent intent) { diff --git a/fake-store/src/main/java/com/android/vending/splitinstall/SplitInstallErrorCode.kt b/fake-store/src/main/java/com/android/vending/splitinstall/SplitInstallErrorCode.kt new file mode 100644 index 0000000000000000000000000000000000000000..61a05d57f99166481f42faceb20cdda10cd799bd --- /dev/null +++ b/fake-store/src/main/java/com/android/vending/splitinstall/SplitInstallErrorCode.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2013-2022 microG Project Team + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.vending.splitinstall + +interface SplitInstallErrorCode { + companion object { + const val API_NOT_AVAILABLE = -5 + } +} diff --git a/fake-store/src/main/res/values-v11/styles.xml b/fake-store/src/main/res/values-v11/styles.xml new file mode 100644 index 0000000000000000000000000000000000000000..54e23b48f7c3680e5aef52e7e39de1f40b5db45b --- /dev/null +++ b/fake-store/src/main/res/values-v11/styles.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/fake-store/src/main/res/values/styles.xml b/fake-store/src/main/res/values/styles.xml new file mode 100644 index 0000000000000000000000000000000000000000..adb2305d275dd3d4c3f0954ef38142275f4dc2f4 --- /dev/null +++ b/fake-store/src/main/res/values/styles.xml @@ -0,0 +1,7 @@ + + + + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8c0fb64a8698b08ecc4158d828ca593c4928e9dd..62d4c053550b91381bbd28b1afc82d634bf73a8a 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.jar.license b/gradle/wrapper/gradle-wrapper.jar.license new file mode 100644 index 0000000000000000000000000000000000000000..c48920566b44e6864db0801a831ea33907cc40f1 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.jar.license @@ -0,0 +1,2 @@ +Copyright 2015 the original author or authors. +SPDX-License-Identifier: Apache-2.0 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8b3fd0a11ebe85a3c70438d98ba43a9bd8000c60..e2993c8f1823de062101c99f45477f9f9dd72fac 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,8 @@ -#Fri Jan 30 12:07:36 CET 2015 +# SPDX-FileCopyrightText: 2015, microG Project Team +# SPDX-License-Identifier: CC0-1.0 + distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip