diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a60fa75..6c385cf0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,10 +10,10 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'recursive' - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 17 - name: Run unit tests run: ./gradlew test - name: Android Test Report @@ -46,9 +46,9 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'recursive' - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 17 - name: Build debug APK run: ./gradlew assembleDebug diff --git a/app/build.gradle b/app/build.gradle index e04fc3ff..44c12b19 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,15 +4,17 @@ def keysFile = rootProject.file('keys.properties') android { - compileSdkVersion 32 + compileSdk 34 + namespace "org.secuso.privacyfriendlyweather" defaultConfig { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" applicationId "org.secuso.privacyfriendlyweather" minSdkVersion 17 - targetSdkVersion 32 - versionCode 17 - versionName "3.1.1" + targetSdkVersion 34 + versionCode 18 + versionName "3.1.2" + multiDexEnabled = true if (keysFile.exists()) { def keys = new Properties() @@ -29,12 +31,16 @@ android { i++ } + if (keyString == "") { + keyString = null + } + buildConfigField "String[]", "DEFAULT_API_KEYS", "{" + keyString + "}" } else { buildConfigField "String[]", "DEFAULT_API_KEYS", "{null}" } - buildConfigField "String", "BASE_URL", "\"https://api.openweathermap.org/data/2.5/\"" + buildConfigField "String", "BASE_URL", "\"https://api.openweathermap.org/data/3.0/\"" javaCompileOptions { annotationProcessorOptions { @@ -62,6 +68,10 @@ android { } } + buildFeatures { + buildConfig true + } + buildTypes { release { minifyEnabled false @@ -97,12 +107,15 @@ dependencies { implementation 'androidx.cardview:cardview:1.0.0' implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' - implementation 'androidx.room:room-runtime:2.4.3' - annotationProcessor 'androidx.room:room-compiler:2.4.3' - androidTestImplementation 'androidx.room:room-testing:2.4.3' + implementation 'androidx.room:room-runtime:2.6.1' + annotationProcessor 'androidx.room:room-compiler:2.6.1' + androidTestImplementation 'androidx.room:room-testing:2.6.1' def work_version = "2.7.1" implementation "androidx.work:work-runtime:$work_version" implementation "androidx.work:work-runtime-ktx:$work_version" androidTestImplementation "androidx.work:work-testing:$work_version" + + def multidex_version = "2.0.1" + implementation("androidx.multidex:multidex:$multidex_version") } diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java b/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java index 3c3f5ee0..57395cc4 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/PFAWeatherApplication.java @@ -1,9 +1,9 @@ package org.secuso.privacyfriendlyweather; -import android.app.Application; import android.util.Log; import androidx.annotation.NonNull; +import androidx.multidex.MultiDexApplication; import androidx.work.Configuration; import org.secuso.privacyfriendlybackup.api.pfa.BackupManager; @@ -11,7 +11,7 @@ import org.secuso.privacyfriendlyweather.backup.BackupRestorer; -public class PFAWeatherApplication extends Application implements Configuration.Provider { +public class PFAWeatherApplication extends MultiDexApplication implements Configuration.Provider { @Override public void onCreate() { diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java b/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java index dc5d09bd..f5f96602 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/activities/ForecastCityActivity.java @@ -1,7 +1,10 @@ package org.secuso.privacyfriendlyweather.activities; +import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; +import android.preference.PreferenceManager; +import android.text.method.LinkMovementMethod; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -19,6 +22,7 @@ import org.secuso.privacyfriendlyweather.database.data.CurrentWeatherData; import org.secuso.privacyfriendlyweather.database.data.Forecast; import org.secuso.privacyfriendlyweather.database.data.WeekForecast; +import org.secuso.privacyfriendlyweather.preferences.AppPreferencesManager; import org.secuso.privacyfriendlyweather.ui.updater.IUpdateableCityUI; import org.secuso.privacyfriendlyweather.ui.updater.ViewUpdater; import org.secuso.privacyfriendlyweather.ui.viewPager.WeatherPagerAdapter; @@ -27,6 +31,7 @@ public class ForecastCityActivity extends BaseActivity implements IUpdateableCityUI { private WeatherPagerAdapter pagerAdapter; + private AppPreferencesManager appPreferencesManager; private MenuItem refreshActionButton; private MenuItem rainviewerButton; @@ -73,7 +78,6 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_forecast_city); overridePendingTransition(0, 0); - //cityId = getIntent().getIntExtra("cityId", -1); //done in onResume initResources(); @@ -113,6 +117,20 @@ public void onPageScrollStateChanged(int state) {} } } + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + + if (appPreferencesManager.getOWMApiKey(this).equals(getString(R.string.settings_API_key_default))) { + TextView textView = new AlertDialog.Builder(this).setTitle(getString(R.string.dialog_app_api_deprecation_title)) + .setMessage(R.string.dialog_app_api_deprecation_description) + .setNeutralButton(android.R.string.ok, null) + .show() + .findViewById(android.R.id.message); + textView.setMovementMethod(LinkMovementMethod.getInstance()); + } + } + public void updatePageTitle() { if (getSupportActionBar() != null && pagerAdapter.getCount() > 0) { getSupportActionBar().setTitle(pagerAdapter.getPageTitleForActionBar(viewPager.getCurrentItem())); @@ -129,6 +147,7 @@ private void initResources() { viewPager = findViewById(R.id.viewPager); pagerAdapter = new WeatherPagerAdapter(this, getSupportFragmentManager()); noCityText = findViewById(R.id.noCitySelectedText); + appPreferencesManager = new AppPreferencesManager(PreferenceManager.getDefaultSharedPreferences(this)); } @Override diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java b/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java index 4c9823f8..acf51930 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/backup/BackupCreator.java @@ -28,7 +28,7 @@ public class BackupCreator implements IBackupCreator { @Override - public void writeBackup(@NotNull Context context, @NotNull OutputStream outputStream) { + public boolean writeBackup(@NotNull Context context, @NotNull OutputStream outputStream) { // lock application, so no changes can be made as long as this backup is created // depending on the size of the application - this could take a bit @@ -85,6 +85,6 @@ public void writeBackup(@NotNull Context context, @NotNull OutputStream outputSt } Log.d("PFA BackupCreator", "Backup created successfully"); - + return true; } } diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java b/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java index f5af8cfb..c3c96da0 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/preferences/AppPreferencesManager.java @@ -248,30 +248,6 @@ public boolean usingPersonalKey(Context context) { } public String getOWMApiKey(Context context) { - String noKeyString = context.getString(R.string.settings_API_key_default); - String prefValue = preferences.getString("API_key_value", noKeyString); - if (!prefValue.equals(noKeyString)) { - return prefValue; - } else { - String availableKeysString = preferences.getString("availble_keys", ""); - List availableKeys = new ArrayList<>(Arrays.asList(availableKeysString.split(","))); - - SharedPreferences.Editor editor = preferences.edit(); - - if(availableKeys.isEmpty() || availableKeysString.isEmpty()) { - // fill list with shuffled keys - availableKeys = new ArrayList<>(Arrays.asList(BuildConfig.DEFAULT_API_KEYS)); - Collections.shuffle(availableKeys); - } - - // get result and remove from possible keys - String result = availableKeys.get(0); - availableKeys.remove(result); - editor.putString("availble_keys", String.join(",", availableKeys)).commit(); - - return result; - } + return preferences.getString("API_key_value", context.getString(R.string.settings_API_key_default)); } - - } diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java index 95f0653c..51b80c4a 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidget.java @@ -85,12 +85,7 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); views.setOnClickPendingIntent(R.id.widget1day_layout, pendingIntent); diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java index 33e90e46..9604af70 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetFiveDayForecast.java @@ -148,12 +148,7 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); views.setOnClickPendingIntent(R.id.widget5day_layout, pendingIntent); // Instruct the widget manager to update the widget diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java index 44341e16..5e2d57ed 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetOneDayForecast.java @@ -133,12 +133,8 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget1day_layout, pendingIntent); // Instruct the widget manager to update the widget diff --git a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java index 4dba3fdd..ebcbbeef 100644 --- a/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java +++ b/app/src/main/java/org/secuso/privacyfriendlyweather/widget/WeatherWidgetThreeDayForecast.java @@ -137,12 +137,7 @@ public static void updateView(Context context, AppWidgetManager appWidgetManager Intent intent = new Intent(context, ForecastCityActivity.class); intent.putExtra("cityId", city.getCityId()); - PendingIntent pendingIntent; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, 0); - } + PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_IMMUTABLE); views.setOnClickPendingIntent(R.id.widget3day_layout, pendingIntent); diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c1882396..f311a81a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -140,7 +140,7 @@ Es wurde kein API Key bereitgestellt Wirklich den standard API Key wiederherstellen? API Key zurücksetzen - Privacy Friendly Wetter erhält die Wetterdaten von dem freien Service openweathermap.org. Dieser Service ist auf 1000 Anfragen pro Tag beschränkt. Sie könnten ihren eigenen API Key registrieren, um ihre eigenen 1000 Anfragen pro Tag zu bekommen. Andernfalls werden die Anfragen zwischen allen Benutzern von Privacy Friendly Wetter geteilt. + Privacy Friendly Wetter erhält die Wetterdaten von dem freien Service openweathermap.org. Dieser Service ist auf 1000 Anfragen pro Tag beschränkt. Sie müssen ihren eigenen API Key registrieren, um ihre 1000 Anfragen pro Tag zu bekommen. Setzen Sie das Interval der automatischen Updates Intervalle API Schlüssel @@ -204,4 +204,12 @@ Die Wetter-App ermöglicht Backups mit unserer Privacy Friendly Backup-App. Um diese Funktionalität zu aktivieren, wird die Berechtigung zum Verbinden mit Diensten benötigt. Wetterdaten zur Verfügung gestellt von: "Das OpenWeatherMap Logo ist lizensiert unter\nCreative Commons BY-SA." + App-Veraltung und API-Änderungen + + Am 1. Juni 2024 deaktiviert Open Weather seine alte API, daher sind die alten API-Schlüssel nicht mehr verwendbar. + Da die Privacy Friendly Weather App veraltet ist, werden wir uns nicht an API-Änderungen anpassen und die App wird nicht wie erwartet funktionieren. + + Wenn Sie diese App weiterhin verwenden möchten, besorgen Sie sich Ihren eigenen API-Schlüssel, indem Sie der OpenWeather-Anweisung folgen. + Nachdem Sie Ihren API-Schlüssel erhalten haben, legen Sie ihn in den Einstellungen fest. + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d2dc8e9b..1a521d2e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -133,7 +133,7 @@ Nessuna chiave API fornita Volete davvero ripristinare la chiave API di default? Reimpostare la chiave API - Privacy Friendly Weather riceve i dati meteo dal servizio gratuito openweathermap.org. Questo servizio è limitato a 1000 richieste al giorno. È possibile registrare la propria chiave API per ottenere le proprie 1000 richieste al giorno. In caso contrario, le richieste sono condivise tra tutti gli utenti di Privacy Friendly Weather. + Privacy Friendly Weather riceve i dati dal servizio gratuito di openweathermap.org. Questo servizio è limitato a 1000 chiamate al giorno. Devi registrare gratuitamente la tua chiave API per ricevere le tue 1000 chiamate. Impostare l\'intervallo di aggiornamento automatico Intervalli API Chiave @@ -203,4 +203,7 @@ L\'app meteo abilita i backup con la nostra app Privacy Friendly Backup. Per abilitare questa funzionalità, è necessario il permesso di legarsi ai servizi. Dati meteo forniti da: "Il logo di OpenWeatherMap è concesso in licenza sotto\nla licenza Creative Commons BY-SA." + Deprecazione dell\'app e modifiche all\'API + Dal 1 giugno 2024 Open Weather disattiva la sua vecchia API, pertanto le vecchie chiavi API non sono più utilizzabili. \n Poiché l\'app Meteo rispettosa della privacy è deprecata, non ci adatteremo ad alcuna modifica dell\'API e l\'app non funzionerà come previsto. Se vuoi continuare a utilizzare questa app, ottieni la tua chiave API seguendo le istruzioni OpenWeather. Dopo aver ottenuto la chiave API, impostala nelle impostazioni. + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b753b3e0..5ef84e53 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -185,7 +185,7 @@ No API Key provided Do you really want to reset to the default API key? Reset API key - Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You could register your own API key for free to get your own 1000 calls. Otherwise, calls are shared between all users of Privacy Friendly Weather. + Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You have to register your own API key for free to get your 1000 calls. Set the interval of automatic updates Intervals API Key @@ -257,5 +257,13 @@ The weather app enables backups with our Privacy Friendly Backup app. To enable this functionality, the permission to bind with services is needed. Weather data provided by: "OpenWeatherMap logo is licensed under\nCreative Commons BY-SA license." + アプリの非推奨と API の変更 + + 2024 年 6 月 1 日に、Open Weather は古い API を非アクティブ化するため、古い API キーは使用できなくなります。 + プライバシー フレンドリーな天気アプリは廃止されるため、API の変更に対応できず、アプリは期待どおりに機能しません。 + + このアプリを引き続き使用する場合は、OpenWeather の手順に従って独自の API キーを取得してください。 + APIキーを取得したら、設定でAPIキーを設定します。 + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 1cdd6db0..0d12e2ef 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -133,10 +133,10 @@ Nenhuma chave de API fornecida Deseja realmente redefinir a chave da API padrão? Redefinir chave de API - O Privacy Friendly Weather recebe dados meteorológicos do serviço gratuito openweathermap.org. Este serviço é limitado a 1000 pedidos por dia. Pode registar a sua própria chave API para obter os seus próprios 1000 pedidos por dia. Caso contrário, os pedidos são partilhados entre todos os utilizadores do Privacy Friendly Weather. Defina o intervalo de atualizações automáticas Intervalos Chave API + Privacy Friendly Weather recebe dados do serviço gratuito de openweathermap.org. Este serviço está limitado a 1000 chamadas por dia. Você precisa registrar sua própria chave de API gratuitamente para receber 1.000 chamadas. Inserir chave de API Redefinir chave de API Intervalo de atualização @@ -203,4 +203,12 @@ A aplicação meteorológica permite cópias de segurança com a nossa aplicação Privacy Friendly Backup. Para activar esta funcionalidade, é necessária a permissão de ligação com serviços. Dados meteorológicos fornecidos por: "O logótipo OpenWeatherMap está licenciado sob\nCreative Commons BY-SA licença." + Descontinuação de aplicativos e alterações de API + + Em 1º de junho de 2024, o Open Weather desativa sua API antiga, portanto, as chaves da API antigas não podem mais ser usadas. + Como o aplicativo Privacy Friendly Weather está obsoleto, não nos ajustaremos a nenhuma alteração na API e o aplicativo não funcionará conforme o esperado. + + Se você quiser continuar usando este aplicativo, obtenha sua própria chave de API seguindo as instruções do OpenWeather. + Depois de obter sua chave API, defina-a nas configurações. + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 51f2aa5e..b5465542 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -100,7 +100,7 @@ Miles API Key - Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You could register your own API key for free to get your own 1000 calls. Otherwise, calls are shared between all users of Privacy Friendly Weather. + Privacy Friendly Weather receives data from the free service of openweathermap.org. This service is limited to 1000 calls per day. You have to register your own API key for free to get your 1000 calls. Enter API Key No API Key provided Reset API Key @@ -174,6 +174,14 @@ Close Add + App Deprecation and API changes + + On 1st June, 2024 Open Weather deactivates its old API, therefore the old api keys are not usable anymore. + As the Privacy Friendly Weather App is deprecated, we won\'t adjust to any api changes and the app won\'t function as expected. + + If you want to continue using this app, get your own api key by following the OpenWeather instruction. + After obtaining your api key, set it in the settings. + Clear Sky diff --git a/build.gradle b/build.gradle index 67ac08cd..174e17eb 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.6.0" + ext.kotlin_version = "1.8.0" repositories { jcenter() @@ -11,7 +11,7 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:7.2.1' + classpath 'com.android.tools.build:gradle:8.1.2' 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 83d81f60..6fe2f0ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,4 +14,6 @@ # org.gradle.parallel=true org.gradle.jvmargs=-Xmx2048M android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 67a932e9..786627ef 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-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip diff --git a/keys.properties b/keys.properties deleted file mode 100644 index 91e35c83..00000000 --- a/keys.properties +++ /dev/null @@ -1,30 +0,0 @@ -0=6ce608ac284ab1c17e7b67488450b4bd -1=abf40562b349c94d0f3b9e7332b0f3f1 -2=497deb1e4cbe2f7418b2490c406773dd -3=3437ccf1c4b2b3171c27c2e750b85d7d -4=798fbf2eb2d4df14b36282c8d1ae7540 -5=a19ff31d93be58267f6e2d0c801ce8be -6=70ba27b72d52a009ad3fe12e476e6e6a -7=f49777ebe09354ae89fbbc4962e4d234 -8=419a879b8b5d2caae7a1473f02a27862 -9=ceb0f3ba09efc5aaec6b89339a11a641 -10=fc448b24d27d11e8ec56a3834d687c71 -11=077abdce2294a5ac939d36029a18feda -12=033ae6fe231b22a2984aa59ca36556c4 -13=11c13e922254727404fb2cd604286bf7 -14=7e4ea404fde6c0ba7525e0bf0c048f09 -15=f0c49746b10d1eefccc21125a50764c2 -16=27b5c234239423d6856274ce9ac5144d -17=d49ef98e224ec8429721f2aacb9f99e4 -18=4b42544998b67ba3b8209144f3a93475 -19=8e52c59dda777bc9de1addac842dea5c -20=9d2d0bdbad0dea03255962ab0cf724db -21=a35d0e57c0ee487d2e19449d18bb4cb7 -22=6743dffc1cfa1ea37b2b82921ad3cc30 -23=1b52a20ed42216168f4d520f91fcfa54 -24=b21f9468a62ddb3aeccebefc02743a8b -25=63e5c0cab61d906e7708e483140bcabc -26=828f4e88b661c5e973e71c95807da832 -27=c6608256b307be7c2859a2c60a1684a5 -28=c6267e13fa07e9f47f143bcb26166bf2 -29=c6aecc65269822fc32e000353730a478 diff --git a/libs b/libs index ec782fb3..ac8e3a0c 160000 --- a/libs +++ b/libs @@ -1 +1 @@ -Subproject commit ec782fb3ca894589a7be56af8acecad600b372b5 +Subproject commit ac8e3a0ca2df3b212815585bf55be0b187b21e71