22 Commits

Author SHA1 Message Date
LineageOS Infra
f32205c417 Automatic translation import
Change-Id: I8595564c923636bcc682918835167bf3655e5602
2025-04-01 15:14:04 +00:00
Michael W
0342bb3121 Updater: Fix warnings
* Unused imports
* Unused code
* Unused resources
* Set.isEmpty() instead of .size() == 0
* try-with-resources

Change-Id: Ia9351986c62e8e5f8d4615f6146827b891f55f9e
2025-03-07 19:13:04 +00:00
Michael W
33d63d627d Updater: Use Java 11
This is what AOSP uses since SDK 32

Change-Id: I6401a14cd2a00f8e3b8d0fe8ec3ff9ec215bd9c7
2025-03-07 19:13:04 +00:00
Michael W
9918f7ef91 Updater: Bump minSdk to 32
* We use features that are only available on 31 and up (system colors)
  anyway
* We can use Java 11 instead of 1.8 (which we already can use when not
  using gradle, but that way AS also recognizes it)

Change-Id: Ie2ea1e77b1954bde44f06b63e6c09979d0e91c17
2025-03-07 19:13:04 +00:00
Michael W
fbdb5570a5 Updater: Update gradle plugin to 8.7.3
Following AS recommendations

Change-Id: Ib3ad9be87b21e4b8a98ad3e07d3f0af2aa42cabe
2025-03-07 19:13:04 +00:00
Michael W
e28d157a8c Updater: Update gradle wrapper to 8.9
7.5 is not supported by AS anymore

Change-Id: I961776da6c387a16c092e88fdc4423d97cb4b7c7
2025-03-07 19:13:04 +00:00
Michael W
a9d7673d1d Updater: Add welcome message with instructions
Make it clear for everyone before even clicking anything that updates
are not incremental and old ones can be deleted

Change-Id: Ifcc31958d9324899a267741141ff66b10f62edc1
2025-03-07 19:13:04 +00:00
LineageOS Infra
ec85854518 Automatic translation import
Change-Id: I0c36cb9569beebd8d242e8e57865c9d23df9496c
2025-03-01 17:50:28 +00:00
Nolen Johnson
e92031f1ec !fixup Updater: Allow Updater to handle major upgrades via property
* Missing semicolon in the final PS, but more importantly,
  unreachable statement.

Change-Id: Ie064e750e6c91e2689eb8d3faca459b4c30c1ab3
2025-02-18 05:26:08 +00:00
Nolen Johnson
c9159bf47b Updater: Allow Updater to handle major upgrades via property
* If the user has GMS installed, they'll need to install an updated
  copy, as addon.d won't restore it, and if it did it likely wouldn't
  work. So we can't support this unconditionally.
* If the user has no-GMS, this should be totally fine to do, so the
  user could set the property, upgrade, and go on their merry way.
  This use-case is why I didn't make this an `ro.` property.
* If someone building LineageOS builds GMS into the images, upgrade
  via this method would also be feasible.

Change-Id: If2a6e6767dcb182d3dbd2a95c81a940fdb53547e
2025-02-18 03:18:07 +00:00
Michael W
5ab3076f91 Updater: Show "no items" view after deleting last update
Currently after removing the last update from the list, you end up
with a completely empty list. It should look like when you open the app
again with no updates

Change-Id: I77f025baf2e20385d31b5e897b92ddf24680be99
2025-02-17 01:24:58 +00:00
LineageOS Infra
6fafcc4e7f Automatic translation import
Change-Id: Ib2bf80cfe87b70971a3d678c2e15c3cf330e8b7f
2025-02-15 15:47:30 +00:00
LineageOS Infra
e670f6e8cd Automatic translation import
Change-Id: I8a7d494342485ed3e4ca588dc04388814166eba8
2025-02-01 14:28:44 +00:00
LineageOS Infra
d044ba1dee Automatic translation import
Change-Id: I7bdad186119308897dc891a5b83c8e704e5e3621
2025-01-15 20:54:57 +00:00
Hridaya Prajapati
b551ebc472 Updater: Migrate away from deprecated ProgressDialog
Follow usage of AlertDialog with ProgressBar as documented in AOSP.
https://developer.android.com/reference/android/app/ProgressDialog

Change-Id: Ie410f839cb5495a4b37ce926d991d662861ef398
2025-01-04 12:26:03 +00:00
LineageOS Infra
d8e73e380c Automatic translation import
Change-Id: I65d59303983836bf6832aadbbb5c675f92d90745
2025-01-02 08:11:22 +00:00
Michael Bestas
a2e31f1f2d Revert "Updater: 20 and up are integers!"
This reverts commit 1ec0b8d1de.

Change-Id: I5b5c5bf825405d7a0b3720521cea343a0674fd40
2024-12-26 09:35:38 +00:00
Michael Bestas
b31dd16806 Revert "Updater: Handle NumberFormatException"
This reverts commit bf1646fa93.

Change-Id: I90e2bcbecbf04641e97957d0ad3f8964d9403d2f
2024-12-26 09:35:28 +00:00
LuK1337
a07c2fc48e Updater: Allow 22.X to 22.X+N OTAs
Change-Id: Ic4f5d94d4040bd744a372d3bb5090aba70e0688f
2024-12-24 11:06:17 +01:00
Timi
1d33cc3135 Updater: push-update: unroot on exit if zip exists
Change-Id: I10ccb345d02830337bc8aefa4f3d41e80e42d064
2024-12-17 18:19:02 +00:00
Giovanni Ricca
ed36157049 Updater: Set SYSTEM_UPDATE_SETTINGS priority higher than GMS
For whatever reason, when both SYSTEM_UPDATE_SETTINGS components have
the same priority and the first one is disabled (in this case, the GMS
one), it doesn't seem to fallback to the next enabled one and instead
shows a "No apps can perform this action" message. To avoid that, let's
just set higher priority.

9a6853 com.google.android.gms/.update.SystemUpdateActivity filter b9e590
  Action: "android.settings.SYSTEM_UPDATE_SETTINGS"
  Category: "android.intent.category.DEFAULT"
  mPriority=1, mOrder=0, mHasStaticPartialTypes=false, mHasDynamicPartialTypes=false

Change-Id: I886a714304fe6d1906af7e1702ecaf2238bd8cb0
2024-11-11 10:55:02 +01:00
LineageOS Infra
a72dadf7e3 Automatic translation import
Change-Id: I5740bd6f9c095b3e7d0a8207e7541f7506480931
2024-10-31 17:49:49 +00:00
48 changed files with 852 additions and 244 deletions

View File

@@ -34,7 +34,7 @@ android {
defaultConfig {
applicationId = "org.lineageos.updater"
minSdk = 30
minSdk = 32
targetSdk = 33
versionCode = 1
versionName = "1.0"
@@ -57,12 +57,12 @@ android {
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "1.8"
jvmTarget = "11"
}
signingConfigs {
@@ -81,6 +81,7 @@ android {
}
}
}
namespace = "org.lineageos.updater"
}
dependencies {

View File

@@ -30,7 +30,7 @@
android:exported="true"
android:theme="@style/AppTheme.NoActionBar"
android:launchMode="singleTop">
<intent-filter android:priority="1">
<intent-filter android:priority="2">
<action android:name="android.settings.SYSTEM_UPDATE_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2022 The LineageOS Project
* Copyright (C) 2017-2025 The LineageOS Project
* Copyright (C) 2020-2022 SHIFT GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,13 +23,10 @@ import android.net.Uri;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import org.json.JSONException;
import org.lineageos.updater.controller.UpdaterController;
import org.lineageos.updater.controller.UpdaterService;
import org.lineageos.updater.misc.StringGenerator;
import org.lineageos.updater.misc.Utils;
import org.lineageos.updater.model.Update;
import org.lineageos.updater.model.UpdateInfo;
import org.lineageos.updater.model.UpdateStatus;
import java.io.File;
@@ -41,7 +38,6 @@ import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.text.DateFormat;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

View File

@@ -31,7 +31,6 @@ import androidx.preference.PreferenceManager;
import org.lineageos.updater.misc.BuildInfoUtils;
import org.lineageos.updater.misc.Constants;
import org.lineageos.updater.misc.StringGenerator;
import org.lineageos.updater.misc.Utils;
import java.text.DateFormat;
@@ -62,7 +61,7 @@ public class UpdaterReceiver extends BroadcastReceiver {
String buildDate = StringGenerator.getDateLocalizedUTC(context,
DateFormat.MEDIUM, preferences.getLong(Constants.PREF_INSTALL_NEW_TIMESTAMP, 0));
String buildInfo = context.getString(R.string.list_build_version_date,
Utils.getDisplayVersion(BuildInfoUtils.getBuildVersion()), buildDate);
BuildInfoUtils.getBuildVersion(), buildDate);
Intent notificationIntent = new Intent(context, UpdatesActivity.class);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent,

View File

@@ -17,7 +17,6 @@ package org.lineageos.updater;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.app.UiModeManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -110,8 +109,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
});
private UpdateImporter mUpdateImporter;
@SuppressWarnings("deprecation")
private ProgressDialog importDialog;
private AlertDialog importDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -147,6 +145,12 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
} else if (UpdaterController.ACTION_UPDATE_REMOVED.equals(intent.getAction())) {
String downloadId = intent.getStringExtra(UpdaterController.EXTRA_DOWNLOAD_ID);
mAdapter.removeItem(downloadId);
List<UpdateInfo> sortedUpdates =
mUpdaterService.getUpdaterController().getUpdates();
if (sortedUpdates.isEmpty()) {
findViewById(R.id.no_new_updates_view).setVisibility(View.VISIBLE);
findViewById(R.id.recycler_view).setVisibility(View.GONE);
}
}
}
};
@@ -181,7 +185,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
TextView headerTitle = findViewById(R.id.header_title);
headerTitle.setText(getString(R.string.header_title_text,
Utils.getDisplayVersion(BuildInfoUtils.getBuildVersion())));
BuildInfoUtils.getBuildVersion()));
updateLastCheckedString();
@@ -226,6 +230,8 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
findViewById(R.id.refresh).setOnClickListener(v -> downloadUpdatesList(true));
findViewById(R.id.preferences).setOnClickListener(v -> showPreferencesDialog());
}
maybeShowWelcomeMessage();
}
@Override
@@ -304,14 +310,18 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
}
@Override
@SuppressWarnings("deprecation")
public void onImportStarted() {
if (importDialog != null && importDialog.isShowing()) {
importDialog.dismiss();
}
importDialog = ProgressDialog.show(this, getString(R.string.local_update_import),
getString(R.string.local_update_import_progress), true, false);
importDialog = new AlertDialog.Builder(this)
.setTitle(R.string.local_update_import)
.setView(R.layout.progress_dialog)
.setCancelable(false)
.create();
importDialog.show();
}
@Override
@@ -657,4 +667,19 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
})
.show();
}
private void maybeShowWelcomeMessage() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean alreadySeen = preferences.getBoolean(Constants.HAS_SEEN_WELCOME_MESSAGE, false);
if (alreadySeen) {
return;
}
new AlertDialog.Builder(this)
.setTitle(R.string.welcome_title)
.setMessage(R.string.welcome_message)
.setPositiveButton(R.string.info_dialog_ok, (dialog, which) -> preferences.edit()
.putBoolean(Constants.HAS_SEEN_WELCOME_MESSAGE, true)
.apply())
.show();
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2024 The LineageOS Project
* Copyright (C) 2017-2025 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,12 +15,10 @@
*/
package org.lineageos.updater;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.net.Uri;
import android.os.BatteryManager;
import android.os.PowerManager;
import android.text.SpannableString;
@@ -40,8 +38,6 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ContextThemeWrapper;
@@ -55,7 +51,6 @@ import com.google.android.material.snackbar.Snackbar;
import org.lineageos.updater.controller.UpdaterController;
import org.lineageos.updater.controller.UpdaterService;
import org.lineageos.updater.misc.BuildInfoUtils;
import org.lineageos.updater.misc.Constants;
import org.lineageos.updater.misc.StringGenerator;
import org.lineageos.updater.misc.Utils;
@@ -280,7 +275,7 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
String buildDate = StringGenerator.getDateLocalizedUTC(mActivity,
DateFormat.LONG, update.getTimestamp());
String buildVersion = mActivity.getString(R.string.list_build_version,
Utils.getDisplayVersion(update.getVersion()));
update.getVersion());
viewHolder.mBuildDate.setText(buildDate);
viewHolder.mBuildVersion.setText(buildVersion);
viewHolder.mBuildVersion.setCompoundDrawables(null, null, null, null);
@@ -607,7 +602,7 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
private boolean isBatteryLevelOk() {
Intent intent = mActivity.registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
if (!intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false)) {
if (intent == null || !intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false)) {
return true;
}
int percent = Math.round(100.f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100) /

View File

@@ -256,7 +256,6 @@ class ABUpdateInstaller {
}
private void installationDone(boolean needsReboot) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
String id = needsReboot ? mDownloadId : null;
PreferenceManager.getDefaultSharedPreferences(mContext).edit()
.putString(Constants.PREF_NEEDS_REBOOT_ID, id)

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2022 The LineageOS Project
* Copyright (C) 2017-2025 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -522,7 +522,7 @@ public class UpdaterController {
}
public boolean isVerifyingUpdate() {
return mVerifyingUpdates.size() > 0;
return !mVerifyingUpdates.isEmpty();
}
public boolean isVerifyingUpdate(String downloadId) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2022 The LineageOS Project
* Copyright (C) 2017-2025 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -38,7 +38,6 @@ import androidx.preference.PreferenceManager;
import org.lineageos.updater.R;
import org.lineageos.updater.UpdaterReceiver;
import org.lineageos.updater.UpdatesActivity;
import org.lineageos.updater.misc.BuildInfoUtils;
import org.lineageos.updater.misc.Constants;
import org.lineageos.updater.misc.StringGenerator;
import org.lineageos.updater.misc.Utils;
@@ -46,7 +45,6 @@ import org.lineageos.updater.model.Update;
import org.lineageos.updater.model.UpdateInfo;
import org.lineageos.updater.model.UpdateStatus;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.NumberFormat;
@@ -127,7 +125,7 @@ public class UpdaterService extends Service {
} else if (UpdaterController.ACTION_UPDATE_REMOVED.equals(intent.getAction())) {
final boolean isLocalUpdate = Update.LOCAL_ID.equals(downloadId);
Bundle extras = mNotificationBuilder.getExtras();
if (extras != null && !isLocalUpdate && downloadId.equals(
if (!isLocalUpdate && downloadId != null && downloadId.equals(
extras.getString(UpdaterController.EXTRA_DOWNLOAD_ID))) {
mNotificationBuilder.setExtras(null);
UpdateInfo update = mUpdaterController.getUpdate(downloadId);

View File

@@ -39,6 +39,7 @@ public final class Constants {
public static final String UNCRYPT_FILE_EXT = ".uncrypt";
public static final String PROP_AB_DEVICE = "ro.build.ab_update";
public static final String PROP_ALLOW_MAJOR_UPGRADES = "lineage.updater.allow_major_upgrades";
public static final String PROP_BUILD_DATE = "ro.build.date.utc";
public static final String PROP_BUILD_VERSION = "ro.lineage.build.version";
public static final String PROP_BUILD_VERSION_INCREMENTAL = "ro.build.version.incremental";
@@ -58,4 +59,5 @@ public final class Constants {
public static final String UPDATE_RECOVERY_PROPERTY = "persist.vendor.recovery_update";
public static final String HAS_SEEN_INFO_DIALOG = "has_seen_info_dialog";
public static final String HAS_SEEN_WELCOME_MESSAGE = "has_seen_welcome_message";
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2023 The LineageOS Project
* Copyright (C) 2017-2025 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -66,17 +66,6 @@ public class Utils {
return new File(context.getString(R.string.download_path));
}
public static File getExportPath(Context context) {
File dir = new File(context.getExternalFilesDir(null),
context.getString(R.string.export_path));
if (!dir.isDirectory()) {
if (dir.exists() || !dir.mkdirs()) {
throw new RuntimeException("Could not create directory");
}
}
return dir;
}
public static File getCachedUpdateList(Context context) {
return new File(context.getCacheDir(), "updates.json");
}
@@ -112,11 +101,32 @@ public class Utils {
return true;
}
private static boolean compareVersions(String a, String b, boolean allowMajorUpgrades) {
try {
int majorA = Integer.parseInt(a.split("\\.")[0]);
int minorA = Integer.parseInt(a.split("\\.")[1]);
int majorB = Integer.parseInt(b.split("\\.")[0]);
int minorB = Integer.parseInt(b.split("\\.")[1]);
// Return early and allow if we allow major version upgrades
return (allowMajorUpgrades && majorA > majorB)
|| (majorA == majorB && minorA >= minorB);
} catch (ArrayIndexOutOfBoundsException | NumberFormatException e) {
return false;
}
}
public static boolean canInstall(UpdateBaseInfo update) {
boolean allowMajorUpgrades = SystemProperties.getBoolean(
Constants.PROP_ALLOW_MAJOR_UPGRADES, false);
return (SystemProperties.getBoolean(Constants.PROP_UPDATER_ALLOW_DOWNGRADING, false) ||
update.getTimestamp() > SystemProperties.getLong(Constants.PROP_BUILD_DATE, 0)) &&
update.getVersion().equalsIgnoreCase(
SystemProperties.get(Constants.PROP_BUILD_VERSION));
compareVersions(
update.getVersion(),
SystemProperties.get(Constants.PROP_BUILD_VERSION),
allowMajorUpgrades);
}
public static List<UpdateInfo> parseJson(File file, boolean compatibleOnly)
@@ -317,10 +327,11 @@ public class Utils {
}
// Ideally the database is empty when we get here
UpdatesDbHelper dbHelper = new UpdatesDbHelper(context);
List<String> knownPaths = new ArrayList<>();
for (UpdateInfo update : dbHelper.getUpdates()) {
knownPaths.add(update.getFile().getAbsolutePath());
try (UpdatesDbHelper dbHelper = new UpdatesDbHelper(context)) {
for (UpdateInfo update : dbHelper.getUpdates()) {
knownPaths.add(update.getFile().getAbsolutePath());
}
}
for (File file : files) {
if (!knownPaths.contains(file.getAbsolutePath())) {
@@ -413,15 +424,4 @@ public class Utils {
public static boolean isRecoveryUpdateExecPresent() {
return new File(Constants.UPDATE_RECOVERY_EXEC).exists();
}
public static String getDisplayVersion(String version) {
float floatVersion = 0;
try {
floatVersion = Float.parseFloat(version);
} catch (NumberFormatException ignored) {
// ignore
}
// Lineage 20 and up should only be integer values (we don't have minor versions anymore)
return (floatVersion >= 20) ? String.valueOf((int)floatVersion) : version;
}
}

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2025 The LineageOS Project
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.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:padding="24dp">
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
app:indicatorColor="?android:attr/colorAccent"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="16dp"
android:text="@string/local_update_import_progress"
android:textColor="?android:attr/textColorPrimary"
android:textSize="16sp" />
</LinearLayout>

View File

@@ -48,10 +48,10 @@
<string name="reboot">Reaniciar</string>
<string name="menu_refresh">Anovar</string>
<string name="menu_preferences">Preferencies</string>
<string name="menu_auto_updates_check">Comprobación d\'anovamientos</string>
<string name="menu_auto_updates_check_interval_daily">Caldía</string>
<string name="menu_auto_updates_check_interval_weekly">Selmanalmente</string>
<string name="menu_auto_updates_check_interval_monthly">Mensualmente</string>
<string name="menu_auto_updates_check">Busca d\'anovamientos</string>
<string name="menu_auto_updates_check_interval_daily">Diaria</string>
<string name="menu_auto_updates_check_interval_weekly">Selmanal</string>
<string name="menu_auto_updates_check_interval_monthly">Mensual</string>
<string name="menu_auto_updates_check_interval_never">Enxamás</string>
<string name="menu_auto_delete_updates">Desaniciar los anovamientos al instalalos</string>
<string name="menu_delete_update">Desaniciar</string>
@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Hebo un fallu al importar l\'anovamientu llocal</string>
<string name="local_update_import_install">Instalar</string>
<string name="local_update_name">Anovamientu llocal</string>
<string name="welcome_title">Afáyate</string>
<string name="welcome_message">Decátate que cuando hai múltiples anovamientos disponibles nun ye necesario instalalos unu a unu, siempre pues instalar l\'últimu direutamente y desaniciar los antiguos pa lliberar espaciu d\'almacenamientu.</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Yerli güncəlləmə daxilə köçürülmədi</string>
<string name="local_update_import_install">Quraşdır</string>
<string name="local_update_name">Yerli güncəlləmə</string>
<string name="welcome_title">Xoş gəlmisiniz</string>
<string name="welcome_message">Lütfən yadda saxlayın ki, bir neçə güncəlləmə mövcud olduqda, bunları tək-tək güncəlləməyə ehtiyac yoxdur. Həmişə birbaşa ən son versiyanı quraşdıra, daha sonra anbar sahəsini boşaltmaq üçün köhnə güncəlləmələri əminliklə silə bilərsiniz.</string>
</resources>

View File

@@ -24,13 +24,13 @@
<string name="download_paused_error_notification">Грешка при изтегляне</string>
<string name="download_completed_notification">Изтеглянето приключи</string>
<string name="download_starting_notification">Започни сваляне</string>
<string name="update_failed_notification">Актуализацията прекратена</string>
<string name="update_failed_notification">Актуализацията е неуспешна</string>
<string name="installation_suspended_notification">Инсталацията е прекратена</string>
<string name="new_updates_found_title">Нови актуализации</string>
<string name="text_download_speed">%1$s, %2$s/s</string>
<string name="pause_button">Пауза</string>
<string name="resume_button">Възобнови</string>
<string name="suspend_button">Прекратено</string>
<string name="suspend_button">Прекрати</string>
<string name="installing_update">Инсталиране на пакета за актуализация</string>
<string name="installing_update_error">Грешка при инсталиране</string>
<string name="installing_update_finished">Актуализацията е инсталирана</string>
@@ -42,7 +42,7 @@
<string name="reboot">Рестартиране</string>
<string name="menu_refresh">Опресняване</string>
<string name="menu_preferences">Настройки</string>
<string name="menu_auto_updates_check">Автоматична проверка за актуализациите</string>
<string name="menu_auto_updates_check">Автоматична проверка за актуализации</string>
<string name="menu_auto_updates_check_interval_daily">Ежедневно</string>
<string name="menu_auto_updates_check_interval_weekly">Ежеседмично</string>
<string name="menu_auto_updates_check_interval_monthly">Ежемесечно</string>
@@ -106,4 +106,6 @@
<string name="new_updates_channel_title">Нови актуализации</string>
<string name="ongoing_channel_title">Текущи изтегляния</string>
<string name="update_failed_channel_title">Актуализацията прекратена</string>
<string name="welcome_title">Добре дошли</string>
<string name="welcome_message">Моля, имайте предвид, че когато са налични множество актуализации, няма нужда да инсталирате всяка една, а само най-скорошната и след това да можете да триете стари актуализации, за да пестите място</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">No s\'ha pogut importar l\'actualització local</string>
<string name="local_update_import_install">Instal·la</string>
<string name="local_update_name">Actualització local</string>
<string name="welcome_title">Us donem la benvinguda</string>
<string name="welcome_message">Tingueu en compte que quan hi ha diverses actualitzacions disponibles, no cal instal·lar actualització a actualització, sempre podeu instal·lar l\'última directament i a continuació, suprimir les actualitzacions antigues de manera segura per alliberar espai.</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Failed to import local update</string>
<string name="local_update_import_install">Install</string>
<string name="local_update_name">Local update</string>
<string name="welcome_title">Welcome</string>
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Failed to import local update</string>
<string name="local_update_import_install">Install</string>
<string name="local_update_name">Local update</string>
<string name="welcome_title">Welcome</string>
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Failed to import local update</string>
<string name="local_update_import_install">Install</string>
<string name="local_update_name">Local update</string>
<string name="welcome_title">Welcome</string>
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Failed to import local update</string>
<string name="local_update_import_install">Install</string>
<string name="local_update_name">Local update</string>
<string name="welcome_title">Welcome</string>
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
</resources>

View File

@@ -48,26 +48,26 @@
<string name="reboot">Reiniciar</string>
<string name="menu_refresh">Actualizar</string>
<string name="menu_preferences">Preferencias</string>
<string name="menu_auto_updates_check">Comprobación de actualizaciones automática</string>
<string name="menu_auto_updates_check_interval_daily">Diario</string>
<string name="menu_auto_updates_check">Comprobación automática de actualizaciones</string>
<string name="menu_auto_updates_check_interval_daily">Diaria</string>
<string name="menu_auto_updates_check_interval_weekly">Semanal</string>
<string name="menu_auto_updates_check_interval_monthly">Mensual</string>
<string name="menu_auto_updates_check_interval_never">Nunca</string>
<string name="menu_auto_delete_updates">Borrar actualizaciones luego de instalar</string>
<string name="menu_auto_delete_updates">Borrar las actualizaciones una vez instaladas</string>
<string name="menu_delete_update">Borrar</string>
<string name="menu_copy_url">Copiar URL</string>
<string name="menu_export_update">Exportar actualización</string>
<string name="menu_show_changelog">Mostrar registro de cambios</string>
<string name="menu_ab_perf_mode">Priorizar el proceso de actualización</string>
<string name="menu_update_recovery">Actualizar partición de recuperación (recovery)</string>
<string name="toast_forced_update_recovery">Es imposible desactivar en este dispositivo las actualizaciones del Modo de Recuperación («Recovery») de Lineage.</string>
<string name="toast_forced_update_recovery">Es imposible desactivar las actualizaciones del modo de recuperación («Recovery») de Lineage en este dispositivo.</string>
<string name="snack_updates_found">Se encontraron nuevas actualizaciones</string>
<string name="snack_no_updates_found">No se encontraron nuevas actualizaciones</string>
<string name="snack_updates_check_failed">Error en la comprobación de actualizaciones. Por favor, verifique la conexión a Internet e inténtalo nuevamente.</string>
<string name="snack_updates_check_failed">Error en la comprobación de actualizaciones. Por favor, verifica la conexión a Internet e inténtalo más tarde.</string>
<string name="snack_download_failed">Descarga fallida. Compruebe la conexión a Internet e inténtelo nuevamente.</string>
<string name="snack_download_verification_failed">La verificación de la actualización falló.</string>
<string name="snack_download_verification_failed">Ha fallado la verificación de la actualización.</string>
<string name="snack_download_verified">Descarga completada.</string>
<string name="snack_update_not_installable">Esta actualización no puede instalarse encima de la versión actual.</string>
<string name="snack_update_not_installable">Esta actualización no puede instalarse sobre la versión actual.</string>
<string name="header_title_text">LineageOS\n%1$s</string>
<string name="header_android_version">Android <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
<string name="header_last_updates_check">Última comprobación: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> (<xliff:g id="time" example="01:23">%2$s</xliff:g>)</string>
@@ -98,15 +98,15 @@
<string name="toast_already_exporting">Ya se está exportando una actualización</string>
<string name="toast_export_started">Exportación iniciada</string>
<plurals name="eta_seconds">
<item quantity="one">Falta 1 segundo</item>
<item quantity="other">Faltan <xliff:g id="count">%d</xliff:g> segundos</item>
<item quantity="one">Queda 1 segundo</item>
<item quantity="other">Quedan <xliff:g id="count">%d</xliff:g> segundos</item>
</plurals>
<plurals name="eta_minutes">
<item quantity="one">Falta 1 minuto</item>
<item quantity="other">Faltan <xliff:g id="count">%d</xliff:g> minutos</item>
<item quantity="one">Queda 1 minuto</item>
<item quantity="other">Quedan <xliff:g id="count">%d</xliff:g> minutos</item>
</plurals>
<plurals name="eta_hours">
<item quantity="one">1 hora restante</item>
<item quantity="one">Queda 1 hora</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> horas restantes</item>
</plurals>
<string name="update_over_metered_network_title">Advertencia</string>
@@ -114,7 +114,7 @@
<string name="checkbox_metered_network_warning">No mostrar de nuevo</string>
<string name="menu_metered_network_warning">Aviso de consumo de datos</string>
<string name="blocked_update_dialog_title">Actualización bloqueada</string>
<string name="blocked_update_dialog_message">Esta actualización no puede instalarse usando la aplicación «Actualizador». Lea <xliff:g id="info_url">%1$s</xliff:g> para más información.</string>
<string name="blocked_update_dialog_message">Esta actualización no puede instalarse usando la aplicación «Actualizador». Lee <xliff:g id="info_url">%1$s</xliff:g> para más información.</string>
<string name="export_channel_title">Exportación finalizada</string>
<string name="new_updates_channel_title">Nuevas actualizaciones</string>
<string name="ongoing_channel_title">Descargas en curso</string>
@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Error al importar actualización local</string>
<string name="local_update_import_install">Instalar</string>
<string name="local_update_name">Actualización local</string>
<string name="welcome_title">Te damos la bienvenida</string>
<string name="welcome_message">Ten en cuenta que cuando hay varias actualizaciones disponibles, no es necesario actualizar una tras otra, siempre puedes instalar la más reciente directamente y luego eliminar de forma segura las actualizaciones antiguas para liberar espacio de almacenamiento.</string>
</resources>

View File

@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2017-2024 The LineageOS Project
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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">به‌روز کننده</string>
<string name="display_name">به‌روز کننده</string>
<string name="verification_failed_notification">تایید با خطا مواجه شد</string>
<string name="verifying_download_notification">در حال تایید به‌روزرسانی</string>
<string name="downloading_notification">در حال بارگیری</string>
<string name="download_paused_notification">بارگیری متوقف شد</string>
<string name="download_paused_error_notification">خطای بارگیری</string>
<string name="download_completed_notification">بارگیری کامل شد</string>
<string name="download_starting_notification">در حال آغاز بارگیری</string>
<string name="update_failed_notification">به‌روز رسانی شکست خورد</string>
<string name="installation_suspended_notification">فرآیند نصب متوقف شد</string>
<string name="new_updates_found_title">به‌روز رسانی جدید</string>
<string name="text_download_speed">%1$s، %2$s/ث</string>
<string name="pause_button">مکث</string>
<string name="resume_button">ادامه</string>
<string name="suspend_button">معلق</string>
<string name="installing_update">در حال نصب بسته به روز</string>
<string name="installing_update_error">خطا در نصب</string>
<string name="installing_update_finished">به‌روزرسانی نصب شد</string>
<string name="finalizing_package">در حال نهایی شدن نصب بسته</string>
<string name="preparing_ota_first_boot">آماده‌سازی برای روشن شدن اولیه</string>
<string name="dialog_prepare_zip_message">آماده‌سازی اولیه به روز رسانی</string>
<string name="dialog_battery_low_title">باتری کم</string>
<string name="dialog_battery_low_message_pct">سطح باتری بسیار کم است، شما نیاز به حداقل <xliff:g id="percent_discharging">%1$d</xliff:g>%% باتری برای ادامه دارید و <xliff:g id="percent_charging">%2$d</xliff:g>%% اگر در حال شارژ است.</string>
<string name="dialog_scratch_mounted_message"><![CDATA[ لطفاً دستورات زیر را اجرا کنید و دوباره به‌روز رسانی را امتحان کنید:\n
• adb root\n
• adb enable-verity\n
• adb reboot
]]></string>
<string name="dialog_scratch_mounted_title">با نصب OverlayFS نمی توان به‌روز رسانی را نصب کرد</string>
<string name="reboot">راه‌اندازی مجدد</string>
<string name="menu_refresh">تازه سازی</string>
<string name="menu_preferences">ترجیحات</string>
<string name="menu_auto_updates_check">بررسی خودکار نسخه های به روز</string>
<string name="menu_auto_updates_check_interval_daily">روزانه</string>
<string name="menu_auto_updates_check_interval_weekly">هفتگی</string>
<string name="menu_auto_updates_check_interval_monthly">ماهانه</string>
<string name="menu_auto_updates_check_interval_never">هرگز</string>
<string name="menu_auto_delete_updates">حذف نسخه به روز وقتی نصب شد</string>
<string name="menu_delete_update">حذف</string>
<string name="menu_copy_url">کپی آدرس</string>
<string name="menu_export_update">صادر کردن نسخه‌ی بروز</string>
<string name="menu_show_changelog">نمایش تغییرات</string>
<string name="menu_ab_perf_mode">به روز رسانی با اولویت بالا</string>
<string name="menu_update_recovery">به‌روز رسانی ریکاوری</string>
<string name="toast_forced_update_recovery">غیرفعال کردن به روزرسانی های ریکاوری Lineage در این دستگاه غیرممکن است.</string>
<string name="snack_updates_found">نسخه های جدید یافت شد</string>
<string name="snack_no_updates_found">به‌روزرسانی جدیدی یافت نشد</string>
<string name="snack_updates_check_failed">بررسی نسخه به روز انجام نشد. اتصال اینترنت خود را بررسی و دوباره سعی کنید.</string>
<string name="snack_download_failed">بارگیری انجام نشد. اتصال اینترنت خود را بررسی و دوباره تلاش کنید.</string>
<string name="snack_download_verification_failed">تأیید به‌روزرسانی با خطا روبه‌رو شد.</string>
<string name="snack_download_verified">بارگیری کامل شد.</string>
<string name="snack_update_not_installable">این نسخه جدید را نمی توان بر روی نسخه کنونی نصب کرد.</string>
<string name="header_title_text">LineageOS\n%1$s</string>
<string name="header_android_version">اندروید <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
<string name="header_last_updates_check">آخرین بررسی: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> (<xliff:g id="time" example="01:23">%2$s</xliff:g>)</string>
<string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
<string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> - <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
<string name="list_download_progress_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> از <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g></string>
<string name="list_download_progress_eta_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> از <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> (<xliff:g id="eta" example="3 minutes left">%3$s</xliff:g>)</string>
<string name="list_verifying_update">در حال تایید به‌روزرسانی</string>
<string name="list_no_updates">هیچ به‌روز رسانی جدیدی پیدا نشد. برای بررسی دستی به‌روز رسانی‌ها، از دکمهٔ تازه‌سازی استفاده کنید.</string>
<string name="action_download">بارگیری</string>
<string name="action_pause">مکث</string>
<string name="action_resume">ادامه</string>
<string name="action_install">نصب</string>
<string name="action_info">اطلاعات</string>
<string name="action_delete">حذف</string>
<string name="action_cancel">لغو</string>
<string name="confirm_delete_dialog_title">حذف فایل</string>
<string name="confirm_delete_dialog_message">آیا فایل نسخه به روز حذف شود؟</string>
<string name="apply_update_dialog_title">انجام به‌روزرسانی</string>
<string name="apply_update_dialog_message">شما در حال نصب &lt;xliff:g id="update_name"&gt;%1$s&lt;/xliff:g&gt; هستید.\n\nاگر &lt;xliff:g id="ok"&gt;%2$s&lt;/xliff را فشار دهید: g&gt;، دستگاه برای نصب به‌روزرسانی، خود را در حالت بازیابی مجدد راه‌اندازی می‌کند.\n\nتوجه: این ویژگی به یک بازیابی سازگار نیاز دارد یا به‌روزرسانی‌ها باید به صورت دستی نصب شوند.</string>
<string name="apply_update_dialog_message_ab">شما در حال نصب &lt;xliff:g id="update_name"&gt;%1$s&lt;/xliff:g&gt; هستید.\n\nاگر &lt;xliff:g id="ok"&gt;%2$s&lt;/xliff را فشار دهید: g&gt;، دستگاه شروع به نصب در پس‌زمینه می‌کند.\n\nپس از تکمیل، از شما خواسته می‌شود راه‌اندازی مجدد کنید.</string>
<string name="cancel_installation_dialog_message">لغو نصب می‌کنید؟</string>
<string name="label_download_url">نشانی بارگیری</string>
<string name="toast_download_url_copied">نشانی رونوشت شد</string>
<string name="dialog_export_title">صادر کردن نسخه به‌روز</string>
<string name="notification_export_success">نسخه به‌روز صادر شد</string>
<string name="notification_export_fail">خطا در صادر کردن</string>
<string name="toast_already_exporting">قبلا به‌روزرسانی صادر شده</string>
<string name="toast_export_started">صادرات آغاز شد</string>
<plurals name="eta_seconds">
<item quantity="one">۱ ثانیه مانده</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> ثانیه مانده</item>
</plurals>
<plurals name="eta_minutes">
<item quantity="one">1 دقیقه مانده است</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> دقیقه مانده</item>
</plurals>
<plurals name="eta_hours">
<item quantity="one">۱ ساعت مانده</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> ساعت مانده</item>
</plurals>
<string name="update_over_metered_network_title">هشدار</string>
<string name="update_over_metered_network_message">شما در حال بارگیری یک بسته بروز رسانی بر روی یک شبکه محدود شده یا سیم کارت هستید که احتمالا ممکن است باعث مصرف داده زیاد می شود. آیا می خواهید ادامه بدهید؟</string>
<string name="checkbox_metered_network_warning">دوباره نشان داده نشود</string>
<string name="menu_metered_network_warning">هشدار شبکه محدود شده</string>
<string name="blocked_update_dialog_title">بروز رسانی مسدود شد</string>
<string name="blocked_update_dialog_message">این به‌روزرسانی با استفاده از برنامه بروز کننده قابل نصب نیست. لطفاً برای اطلاعات بیشتر <xliff:g id="info_url">%1$s</xliff:g> را بخوانید.</string>
<string name="export_channel_title">تکمیل صادرات</string>
<string name="new_updates_channel_title">به‌‎روزرسانی‎‌های تازه</string>
<string name="ongoing_channel_title">بارگیری های جاری</string>
<string name="update_failed_channel_title">به‌روز رسانی شکست خورد</string>
<string name="info_dialog_title">آیا می‌دانستید؟</string>
<string name="info_dialog_message">به روز رسانی های LineageOS بسته های نصب کامل هستند. این بدان معناست که همیشه می‌توانید فقط آخرین به‌روزرسانی را نصب کنید، حتی اگر برخی از آن‌ها را در این بین رد کرده باشید!</string>
<string name="info_dialog_ok">از اطلاعات شما سپاسگذاریم!</string>
<string name="local_update_import">به‌روزرسانی داخلی</string>
<string name="local_update_import_progress">وارد کردن به‌روزرسانی محلی\u2026</string>
<string name="local_update_import_success">%1$s وارد شد. آیا مایل به نصب هستید؟</string>
<string name="local_update_import_failure">به‌روزرسانی داخلی با شکست مواجه شد</string>
<string name="local_update_import_install">نصب</string>
<string name="local_update_name">به‌روزرسانی داخلی</string>
<string name="welcome_title">خوش آمدید</string>
<string name="welcome_message">لطفاً توجه داشته باشید که وقتی چندین به‌روزرسانی موجود است، نیازی به نصب تک‌به‌تک آنها نیست. شما می‌توانید به‌طور مستقیم جدیدترین به‌روزرسانی را نصب کنید و سپس با خیال راحت، به‌روزرسانی‌های قدیمی‌تر را حذف کنید تا فضای ذخیره‌سازی آزاد شود.</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Importazion inzornament locâl falide</string>
<string name="local_update_import_install">Instale</string>
<string name="local_update_name">Inzornament locâl</string>
<string name="welcome_title">Benvignûts</string>
<string name="welcome_message">Fâs câs che cuant che a son disponibii plui inzornaments, no covente inzornâ in progression l\'un dal un, tu puedis simpri instalâ daurman l\'ultin e dopo eliminâ in sigurece i inzornaments vieris par liberâ spazi di archiviazion.</string>
</resources>

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2017-2024 The LineageOS Project
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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Nuashonróir</string>
<string name="display_name">Nuashonróir</string>
<string name="verification_failed_notification">Theip ar an bhfíorú</string>
<string name="verifying_download_notification">Nuashonrú á fhíorú</string>
<string name="downloading_notification">Ag íosluchtú</string>
<string name="download_paused_notification">Íoslódáil ar sos</string>
<string name="download_paused_error_notification">Earráid íoslódáil</string>
<string name="download_completed_notification">Íoslódáil críochnaithe</string>
<string name="download_starting_notification">Ag tosú íoslódáil</string>
<string name="update_failed_notification">Theip ar an nuashonrú</string>
<string name="installation_suspended_notification">Suiteáil ar fionraí</string>
<string name="new_updates_found_title">Nuashonruithe nua</string>
<string name="text_download_speed">%1$s, %2$s/s</string>
<string name="pause_button">Sos</string>
<string name="resume_button">Tosaigh arís</string>
<string name="suspend_button">Fionraí</string>
<string name="installing_update">Ag suiteáil pacáiste nuashonraithe</string>
<string name="installing_update_error">Earráid a shuiteáil</string>
<string name="installing_update_finished">Nuashonrú suiteáilte</string>
<string name="finalizing_package">Ag suiteáil pacáiste a thabhairt chun críche</string>
<string name="preparing_ota_first_boot">Ag ullmhú don chéad tosaithe</string>
<string name="dialog_prepare_zip_message">Réamh-ullmhúchán nuashonraithe</string>
<string name="dialog_battery_low_title">Ceallraí íseal</string>
<string name="dialog_battery_low_message_pct">Tá leibhéal an cheallraí ró-íseal, ní mór duit ar a laghad <xliff:g id="percent_discharging">%1$d</xliff:g> %% den cheallraí chun leanúint ar aghaidh, <xliff:g id="percent_charging">%2$d</xliff:g>%% má tá tú ag muirearú.</string>
<string name="dialog_scratch_mounted_message"><![CDATA[Rith na horduithe seo a leanas agus bain triail eile as an nuashonrú:\n
• adb root\n
• adb enable-verity\n
• adb reboot
]]></string>
<string name="dialog_scratch_mounted_title">Ní féidir an nuashonrú a shuiteáil le OverlayFS suite</string>
<string name="reboot">Atosaigh</string>
<string name="menu_refresh">Athnuaigh</string>
<string name="menu_preferences">Roghanna</string>
<string name="menu_auto_updates_check">Seiceáil nuashonruithe uathoibríoch</string>
<string name="menu_auto_updates_check_interval_daily">Uair sa lá</string>
<string name="menu_auto_updates_check_interval_weekly">Uair sa tseachtain</string>
<string name="menu_auto_updates_check_interval_monthly">Uair sa mhí</string>
<string name="menu_auto_updates_check_interval_never">Riamh</string>
<string name="menu_auto_delete_updates">Scrios nuashonruithe nuair a shuiteáiltear iad</string>
<string name="menu_delete_update">Scrios</string>
<string name="menu_copy_url">Cóipeáil URL</string>
<string name="menu_export_update">Easpórtáil nuashonrú</string>
<string name="menu_show_changelog">Taispeáin loga na n-athruithe</string>
<string name="menu_ab_perf_mode">Tabhair tosaíocht don phróiseas nuashonraithe</string>
<string name="menu_update_recovery">Nuashonraigh aisghabháil</string>
<string name="toast_forced_update_recovery">Tá sé dodhéanta nuashonruithe Lineage Recovery a dhíchumasú ar an ngléas seo.</string>
<string name="snack_updates_found">Nuashonruithe nua aimsithe</string>
<string name="snack_no_updates_found">Níor aimsíodh aon nuashonruithe nua</string>
<string name="snack_updates_check_failed">Theip ar an tseiceáil nuashonraithe. Seiceáil do cheangal idirlín agus bain triail eile as ar ball.</string>
<string name="snack_download_failed">Theip ar an íoslódáil. Seiceáil do cheangal idirlín agus bain triail eile as ar ball.</string>
<string name="snack_download_verification_failed">Theip ar fhíorú an nuashonraithe.</string>
<string name="snack_download_verified">Íoslódáil críochnaithe.</string>
<string name="snack_update_not_installable">Ní féidir an nuashonrú seo a shuiteáil ar bharr an leagan reatha.</string>
<string name="header_title_text">LineageOS\n%1$s</string>
<string name="header_android_version">Android <xliff:g id="version" sampla="7.1.2">%1$s</xliff:g></string>
<string name="header_last_updates_check">Seiceáladh seo caite: <xliff:g id="date" example="1 Eanáir 1970">%1$s</xliff:g> (<xliff:g id="time" sampla="01:23">%2$s</xliff:g>)</string>
<string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
<string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> - <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
<string name="list_download_progress_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> of <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g></string>
<string name="list_download_progress_eta_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> of <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> (<xliff:g id="eta" example="3 minutes left">%3$s</xliff:g>)</string>
<string name="list_verifying_update">Nuashonrú á fhíorú</string>
<string name="list_no_updates">Níor aimsíodh aon nuashonruithe nua. Chun seiceáil de láimh le haghaidh nuashonruithe nua, úsáid an cnaipe Athnuaigh.</string>
<string name="action_download">Íosluchtaigh</string>
<string name="action_pause">Sos</string>
<string name="action_resume">Tosaigh arís</string>
<string name="action_install">Suiteáil</string>
<string name="action_info">Eolas</string>
<string name="action_delete">Scrios</string>
<string name="action_cancel">Cealaigh</string>
<string name="confirm_delete_dialog_title">Scrios an comhad</string>
<string name="confirm_delete_dialog_message">Scrios comhad uasdátaigh ?</string>
<string name="apply_update_dialog_title">Cuir nuashonrú</string>
<string name="apply_update_dialog_message">Tá tú ar tí &lt;xliff:g id="update_name"&gt;%1$s&lt;/xliff:g&gt; a shuiteáil.\n\nMá bhrúíonn tú &lt;xliff:g id="ok"&gt;%2$s&lt;/xliff: g&gt;, atosóidh an gléas é féin sa mhodh athshlánaithe chun an nuashonrú a shuiteáil.\n\nNóta: Teastaíonn Aisghabháil comhoiriúnach don ghné seo nó beidh gá le nuashonruithe a shuiteáil de láimh.</string>
<string name="apply_update_dialog_message_ab">Tá tú ar tí &lt;xliff:g id="update_name"&gt;%1$s&lt;/xliff:g&gt; a shuiteáil.\n\nMá bhrúíonn tú &lt;xliff:g id="ok"&gt;%2$s&lt;/xliff: g&gt;, cuirfear tús leis an ngléas a shuiteáil sa chúlra.\n\nNuair a bheidh sé críochnaithe, tabharfar leid duit é a atosú.</string>
<string name="cancel_installation_dialog_message">Cealaigh an tsuiteáil?</string>
<string name="label_download_url">Íoslódáil URL</string>
<string name="toast_download_url_copied">URL Chóipeáil</string>
<string name="dialog_export_title">Nuashonrú easpórtála</string>
<string name="notification_export_success">Easpórtáil an nuashonrú</string>
<string name="notification_export_fail">Earráid easpórtála</string>
<string name="toast_already_exporting">Ag easpórtáil nuashonrú cheana féin</string>
<string name="toast_export_started">Thosaigh easpórtáil</string>
<plurals name="eta_seconds">
<item quantity="one">1 soicind fágtha</item>
<item quantity="two"><xliff:g id="count">%d</xliff:g> soicind fágtha</item>
<item quantity="few"><xliff:g id="count">%d</xliff:g> soicind fágtha</item>
<item quantity="many"><xliff:g id="count">%d</xliff:g> soicind fágtha</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> soicind fágtha</item>
</plurals>
<plurals name="eta_minutes">
<item quantity="one">1 nóiméad fágtha</item>
<item quantity="two"><xliff:g id="count">%d</xliff:g> nóiméad fágtha</item>
<item quantity="few"><xliff:g id="count">%d</xliff:g> nóiméad fágtha</item>
<item quantity="many"><xliff:g id="count">%d</xliff:g> nóiméad fágtha</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> nóiméad fágtha</item>
</plurals>
<plurals name="eta_hours">
<item quantity="one">1 uair fágtha</item>
<item quantity="two"><xliff:g id="count">%d</xliff:g> uair fágtha</item>
<item quantity="few"><xliff:g id="count">%d</xliff:g> uair fágtha</item>
<item quantity="many"><xliff:g id="count">%d</xliff:g> uair fágtha</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> uair fágtha</item>
</plurals>
<string name="update_over_metered_network_title">Rabhadh</string>
<string name="update_over_metered_network_message">Tá tú ar tí pacáiste nuashonraithe a íoslódáil thar líonra méadraithe agus is dócha go mbeidh sé ina chúis le húsáid ard sonraí. Ar mhaith leat dul ar aghaidh?</string>
<string name="checkbox_metered_network_warning">Ná taispeáin arís</string>
<string name="menu_metered_network_warning">Rabhadh líonra méadraithe</string>
<string name="blocked_update_dialog_title">Nuashonrú bactha</string>
<string name="blocked_update_dialog_message">Ní féidir an nuashonrú seo a shuiteáil leis an aip nuashonraithe. Léigh <xliff:g id="info_url">%1$s</xliff:g> le haghaidh tuilleadh eolais.</string>
<string name="export_channel_title">Críochnú onnmhairithe</string>
<string name="new_updates_channel_title">Nuashonruithe nua</string>
<string name="ongoing_channel_title">Íoslódálacha leanúnacha</string>
<string name="update_failed_channel_title">Theip ar an nuashonrú</string>
<string name="info_dialog_title">An raibh a fhios agat?</string>
<string name="info_dialog_message">Is pacáistí suiteála iomlána iad nuashonruithe LineageOS. Ciallaíonn sé sin nach féidir leat ach an nuashonrú is déanaí a shuiteáil i gcónaí, fiú mura ndearna tú roinnt eatarthu!</string>
<string name="info_dialog_ok">Go raibh maith agat as an eolas!</string>
<string name="local_update_import">Nuashonrú áitiúil</string>
<string name="local_update_import_progress">Nuashonrú logánta á iompórtáil\u2026</string>
<string name="local_update_import_success">Iompórtáladh %1$s. Ar mhaith leat é a shuiteáil?</string>
<string name="local_update_import_failure">Theip ar iompórtáil an nuashonrú áitiúil</string>
<string name="local_update_import_install">Suiteáil</string>
<string name="local_update_name">Nuashonrú áitiúil</string>
<string name="welcome_title">Fáilte</string>
<string name="welcome_message">Tabhair faoi deara le do thoil, nuair a bhíonn nuashonruithe iolracha ar fáil, níl aon ghá le nuashonrú ar nuashonrú, is féidir leat an ceann is déanaí a shuiteáil go díreach i gcónaí, agus ansin sean-nuashonruithe a scriosadh go sábháilte chun spás stórála a shaoradh.</string>
</resources>

View File

@@ -129,4 +129,6 @@ illetve, ha éppen tölt, akkor még <xliff:g id="percent_charging">%2$d</xliff:
<string name="local_update_import_failure">Nem sikerült importálni a helyi frissítést</string>
<string name="local_update_import_install">Telepítés</string>
<string name="local_update_name">Helyi frissítés</string>
<string name="welcome_title">Üdvözöljük</string>
<string name="welcome_message">Vegye figyelembe, hogy ha több frissítés is elérhető, nem szükséges mindet telepítenie, csak kizárólag a legfrissebbet, majd biztonságosan törölheti a régi frissítéseket, hogy tárhelyet szabadítson fel.</string>
</resources>

View File

@@ -128,4 +128,6 @@
<string name="local_update_import_failure">Importazione aggiornamento locale fallita</string>
<string name="local_update_import_install">Installa</string>
<string name="local_update_name">Aggiornamento locale</string>
<string name="welcome_title">Benvenuto</string>
<string name="welcome_message">Quando sono disponibili più aggiornamenti, non c\'è bisogno di installarli tutti: è sempre possibile installare direttamente quello più recente, e quindi eliminare in modo sicuro i vecchi aggiornamenti per liberare spazio di archiviazione.</string>
</resources>

View File

@@ -125,4 +125,6 @@
<string name="local_update_import_failure">ローカルアップデートのインポートに失敗しました</string>
<string name="local_update_import_install">インストール</string>
<string name="local_update_name">ローカルアップデート</string>
<string name="welcome_title">ようこそ</string>
<string name="welcome_message">複数のアップデートが利用可能な場合、順番にアップデートする必要はありません。 古いアップデートは削除してストレージ容量を空けて、最新のアップデートだけをインストールしてください。</string>
</resources>

View File

@@ -125,4 +125,6 @@
<string name="local_update_import_failure">로컬 업데이트를 가져오지 못했습니다.</string>
<string name="local_update_import_install">설치</string>
<string name="local_update_name">로컬 업데이트</string>
<string name="welcome_title">환영합니다</string>
<string name="welcome_message">여러 버전의 업데이트가 있을 때, 모든 업데이트를 하나하나 설치할 필요는 없습니다. 가장 마지막 업데이트만 설치한 다음 오래된 업데이트 파일은 삭제하여 저장소 공간을 확보할 수 있습니다.</string>
</resources>

View File

@@ -134,4 +134,6 @@
<string name="local_update_import_failure">Nie udało się zaimportować aktualizacji lokalnej</string>
<string name="local_update_import_install">Zainstaluj</string>
<string name="local_update_name">Aktualizacja lokalna</string>
<string name="welcome_title">Witaj</string>
<string name="welcome_message">Pamiętaj, że gdy dostępne są wielokrotne aktualizacje, nie ma potrzeby aktualizować po aktualizacji, zawsze możesz zainstalować najnowszą wersję bezpośrednio, a następnie bezpiecznie usuwać stare aktualizacje, aby zwolnić miejsce w pamięci.</string>
</resources>

View File

@@ -19,17 +19,17 @@
<string name="display_name">Atualizador</string>
<string name="verification_failed_notification">Falha na verificação</string>
<string name="verifying_download_notification">Verificando atualização</string>
<string name="downloading_notification">Baixando</string>
<string name="downloading_notification">Download</string>
<string name="download_paused_notification">Download pausado</string>
<string name="download_paused_error_notification">Erro ao baixar</string>
<string name="download_completed_notification">Download concluído</string>
<string name="download_starting_notification">Iniciando download</string>
<string name="update_failed_notification">Falha ao atualizar</string>
<string name="update_failed_notification">Falha na atualização</string>
<string name="installation_suspended_notification">Instalação suspensa</string>
<string name="new_updates_found_title">Novas atualizações</string>
<string name="text_download_speed">%1$s, %2$s/s</string>
<string name="pause_button">Pausar</string>
<string name="resume_button">Continuar</string>
<string name="resume_button">Retomar</string>
<string name="suspend_button">Suspender</string>
<string name="installing_update">Instalando o pacote de atualização</string>
<string name="installing_update_error">Erro de instalação</string>
@@ -38,7 +38,7 @@
<string name="preparing_ota_first_boot">Preparando-se para a primeira inicialização</string>
<string name="dialog_prepare_zip_message">Preparação preliminar de atualização</string>
<string name="dialog_battery_low_title">Bateria fraca</string>
<string name="dialog_battery_low_message_pct">O nível da bateria está muito baixo, precisando de, pelo menos, <xliff:g id="percent_discharging">%1$d</xliff:g>%% de bateria para continuar, ou <xliff:g id="percent_charging">%2$d</xliff:g>%% se estiver carregando.</string>
<string name="dialog_battery_low_message_pct">O nível da bateria está muito baixo, é preciso de pelo menos <xliff:g id="percent_discharging">%1$d</xliff:g>%% de bateria para continuar, ou <xliff:g id="percent_charging">%2$d</xliff:g>%% se estiver carregando.</string>
<string name="dialog_scratch_mounted_message"><![CDATA[ Execute os seguintes comandos e tente atualizar novamente:\n
• adb root\n
• adb enable-verity\n
@@ -48,29 +48,29 @@
<string name="reboot">Reiniciar</string>
<string name="menu_refresh">Atualizar</string>
<string name="menu_preferences">Preferências</string>
<string name="menu_auto_updates_check">Autoverificar por atualizações</string>
<string name="menu_auto_updates_check">Automaticamente buscar atualizações</string>
<string name="menu_auto_updates_check_interval_daily">Diariamente</string>
<string name="menu_auto_updates_check_interval_weekly">Semanalmente</string>
<string name="menu_auto_updates_check_interval_monthly">Mensalmente</string>
<string name="menu_auto_updates_check_interval_never">Nunca</string>
<string name="menu_auto_delete_updates">Excluir pacotes instalados</string>
<string name="menu_auto_delete_updates">Excluir pacotes instalados</string>
<string name="menu_delete_update">Excluir</string>
<string name="menu_copy_url">Copiar URL</string>
<string name="menu_export_update">Exportar atualização</string>
<string name="menu_show_changelog">Mostrar alterações</string>
<string name="menu_ab_perf_mode">Priorizar o processo de atualização</string>
<string name="menu_update_recovery">Atualizar a recuperação</string>
<string name="menu_update_recovery">Atualizar recuperação</string>
<string name="toast_forced_update_recovery">Não é possível desativar as atualizações do Lineage Recovery neste dispositivo.</string>
<string name="snack_updates_found">Nova atualização disponível</string>
<string name="snack_updates_found">Novas atualizações disponíveis</string>
<string name="snack_no_updates_found">Não foram encontradas novas atualizações</string>
<string name="snack_updates_check_failed">Falha ao procurar por atualizações. Verifique sua conexão com a internet e tente novamente.</string>
<string name="snack_updates_check_failed">Falha ao buscar atualizações. Verifique sua conexão com a internet e tente novamente.</string>
<string name="snack_download_failed">Falha ao baixar a atualização. Verifique sua conexão com a internet e tente novamente.</string>
<string name="snack_download_verification_failed">Falha na verificação da atualização.</string>
<string name="snack_download_verified">Download concluído.</string>
<string name="snack_update_not_installable">Esta atualização não pode ser instalada por cima da versão atual.</string>
<string name="header_title_text">LineageOS\n%1$s</string>
<string name="header_android_version">Android <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
<string name="header_last_updates_check">Última verificação: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> às <xliff:g id="time" example="01:23">%2$s</xliff:g></string>
<string name="header_last_updates_check">Última busca: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> às <xliff:g id="time" example="01:23">%2$s</xliff:g></string>
<string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
<string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> - <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
<string name="list_download_progress_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> de <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g></string>
@@ -79,7 +79,7 @@
<string name="list_no_updates">Não foram encontradas novas atualizações. Use o botão Atualizar para buscar por novas atualizações manualmente.</string>
<string name="action_download">Baixar</string>
<string name="action_pause">Pausar</string>
<string name="action_resume">Continuar</string>
<string name="action_resume">Retomar</string>
<string name="action_install">Instalar</string>
<string name="action_info">Informações</string>
<string name="action_delete">Excluir</string>
@@ -90,8 +90,8 @@
<string name="apply_update_dialog_message">Você está prestes a instalar <xliff:g id="update_name">%1$s</xliff:g>.\n\nSe você pressionar <xliff:g id="ok">%2$s</xliff:g>, o dispositivo será reiniciado no modo de recuperação para instalar a atualização.\n\nObservação: Esse recurso requer uma recuperação compatível ou as atualizações precisarão ser instaladas manualmente.</string>
<string name="apply_update_dialog_message_ab">Você está prestes a instalar <xliff:g id="update_name">%1$s</xliff:g>.\n\nSe você pressionar <xliff:g id="ok">%2$s</xliff:g>, a instalação do dispositivo começará em segundo plano.\n\nDepois de concluído, você será solicitado a reiniciar o dispositivo.</string>
<string name="cancel_installation_dialog_message">Deseja cancelar a instalação?</string>
<string name="label_download_url">URL de Download</string>
<string name="toast_download_url_copied">URL copiado</string>
<string name="label_download_url">URL de download </string>
<string name="toast_download_url_copied">URL copiada</string>
<string name="dialog_export_title">Exportando atualização</string>
<string name="notification_export_success">Atualização exportada</string>
<string name="notification_export_fail">Falha ao exportar</string>
@@ -109,23 +109,25 @@
<item quantity="one">1 hora restante</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> horas restantes</item>
</plurals>
<string name="update_over_metered_network_title">Aviso</string>
<string name="update_over_metered_network_message">Você está prestes a baixar um pacote de atualização usando os dados móveis, o que provavelmente causará um alto consumo de dados. Deseja continuar?</string>
<string name="update_over_metered_network_title">Alerta</string>
<string name="update_over_metered_network_message">Você está prestes a baixar um pacote de atualização em uma rede medida, o que provavelmente causará um alto consumo de dados. Deseja continuar?</string>
<string name="checkbox_metered_network_warning">Não mostrar novamente</string>
<string name="menu_metered_network_warning">Aviso de rede limitada</string>
<string name="menu_metered_network_warning">Alerta de rede limitada</string>
<string name="blocked_update_dialog_title">Atualização bloqueada</string>
<string name="blocked_update_dialog_message">Esta atualização não pode ser instalada pelo Atualizador. Leia <xliff:g id="info_url">%1$s</xliff:g> para obter mais informações.</string>
<string name="blocked_update_dialog_message">Esta atualização não pode ser instalada pelo app Atualizador. Leia <xliff:g id="info_url">%1$s</xliff:g> para mais informações.</string>
<string name="export_channel_title">Exportação concluída</string>
<string name="new_updates_channel_title">Novas atualizações</string>
<string name="ongoing_channel_title">Downloads em andamento</string>
<string name="update_failed_channel_title">Falha ao atualizar</string>
<string name="info_dialog_title">Você sabia?</string>
<string name="info_dialog_message">As atualizações do LineageOS são pacotes de instalação completos. Isso significa que você sempre pode instalar apenas a atualização mais recente, mesmo que você tenha ignorado versões anteriores!</string>
<string name="info_dialog_ok">Agradecemos o seu comentário!</string>
<string name="info_dialog_ok">Obrigado pela dica!</string>
<string name="local_update_import">Atualização local</string>
<string name="local_update_import_progress">Importando atualização local\u2026</string>
<string name="local_update_import_success">%1$s foi importado. Você quer instalá-lo?</string>
<string name="local_update_import_failure">Falha ao importar a atualização local</string>
<string name="local_update_import_install">Instalar</string>
<string name="local_update_name">Atualização local</string>
<string name="welcome_title">Boas vindas</string>
<string name="welcome_message">Observe que quando há várias atualizações disponíveis, não há necessidade de instalar todas, você sempre pode instalar a mais recente e então excluir atualizações antigas para liberar espaço de armazenamento.</string>
</resources>

View File

@@ -39,6 +39,12 @@
<string name="dialog_prepare_zip_message">Preparação preliminar de atualização</string>
<string name="dialog_battery_low_title">Bateria fraca</string>
<string name="dialog_battery_low_message_pct">O nível da bateria está demasiado baixo. Precisa de, pelo menos, <xliff:g id="percent_discharging">%1$d</xliff:g>%% de bateria para continuar, <xliff:g id="percent_charging">%2$d</xliff:g>%% se estiver a carregar.</string>
<string name="dialog_scratch_mounted_message"><![CDATA[ Por favor, execute os seguintes comandos e tente novamente a atualização:\n
• adb root\n
• adb enable-verity\n
• adb reboot
]]></string>
<string name="dialog_scratch_mounted_title">Não é possível instalar a atualização com OverlayFS montado</string>
<string name="reboot">Reiniciar</string>
<string name="menu_refresh">Atualizar</string>
<string name="menu_preferences">Preferências</string>
@@ -104,7 +110,9 @@
<item quantity="other"><xliff:g id="count">%d</xliff:g> horas restantes</item>
</plurals>
<string name="update_over_metered_network_title">Aviso</string>
<string name="update_over_metered_network_message">Está prestes a transferir uma atualização através de uma rede de acesso limitado, o que provavelmente irá resultar num elevado consumo de dados. Pretende continuar?</string>
<string name="checkbox_metered_network_warning">Não mostrar novamente</string>
<string name="menu_metered_network_warning">Aviso de rede de acesso limitado</string>
<string name="blocked_update_dialog_title">Atualização bloqueada</string>
<string name="blocked_update_dialog_message">Esta atualização não pode ser instalada usando a aplicação do atualizador. Por favor, leia <xliff:g id="info_url">%1$s </xliff:g> para mais informações.</string>
<string name="export_channel_title">Conclusão da exportação</string>
@@ -114,4 +122,12 @@
<string name="info_dialog_title">Sabias que?</string>
<string name="info_dialog_message">As atualizações do LineageOS são pacotes de instalação completa. Isso significa que podes instalar apenas a última atualização, mesmo que tenhas ignorado alguns deles!</string>
<string name="info_dialog_ok">Obrigado pela informação!</string>
<string name="local_update_import">Atualização local</string>
<string name="local_update_import_progress">A importar a atualização local\u2026</string>
<string name="local_update_import_success">%1$s foi importada. Pretende instalar?</string>
<string name="local_update_import_failure">Falha ao importar a atualização local</string>
<string name="local_update_import_install">Instalar</string>
<string name="local_update_name">Atualização local</string>
<string name="welcome_title">Bem-vindo</string>
<string name="welcome_message">Note que, quando há várias atualizações disponíveis, não há necessidade de instalá-las uma a uma. Pode sempre instalar a mais recente e eliminar as atualizações antigas para libertar espaço de armazenamento.</string>
</resources>

View File

@@ -131,4 +131,6 @@
<string name="local_update_import_failure">Eroare la importarea actualizării locale</string>
<string name="local_update_import_install">Instalați</string>
<string name="local_update_name">Actualizare locală</string>
<string name="welcome_title">Bun venit</string>
<string name="welcome_message">Vă rugăm să rețineți că, atunci când sunt disponibile mai multe actualizări, nu este nevoie să treceți prin fiecare dintre ele, ci puteți instala întotdeauna cea mai recentă în mod direct și apoi să ștergeți în siguranță actualizările vechi pentru a elibera spațiul de stocare.</string>
</resources>

View File

@@ -134,4 +134,6 @@
<string name="local_update_import_failure">Не удалось импортировать локальное обновление</string>
<string name="local_update_import_install">Установить</string>
<string name="local_update_name">Локальное обновление</string>
<string name="welcome_title">Добро пожаловать!</string>
<string name="welcome_message">Пожалуйста, обратите внимание, что при наличии нескольких обновлений нет необходимости переходить от одного обновления к другому. Вы всегда можете установить последнее, а затем безопасно удалить старые обновления, чтобы освободить место.</string>
</resources>

View File

@@ -134,4 +134,6 @@
<string name="local_update_import_failure">Uvoz lokalne posodobitve je spodletel</string>
<string name="local_update_import_install">Namesti</string>
<string name="local_update_name">Lokalna posodobitev</string>
<string name="welcome_title">Dobrodošli</string>
<string name="welcome_message">Vedite, da, ko je na voljo več posodobitev, ni potrebno namestiti vsake, vedno lahko neposredno namestite zadnjo in nato varno izbrišete stare posodobitve, da sprostite prostor na pomnilniku.</string>
</resources>

View File

@@ -15,6 +15,8 @@
limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Uppdaterare</string>
<string name="display_name">Uppdaterare</string>
<string name="verification_failed_notification">Verifieringen misslyckades</string>
<string name="verifying_download_notification">Verifierar uppdateringen</string>
<string name="downloading_notification">Laddar ner</string>
@@ -22,6 +24,7 @@
<string name="download_paused_error_notification">Nedladdningsfel</string>
<string name="download_completed_notification">Nedladdning slutförd</string>
<string name="download_starting_notification">Påbörjar nedladdning</string>
<string name="update_failed_notification">Uppdateringen misslyckades</string>
<string name="new_updates_found_title">Nya uppdateringar</string>
<string name="text_download_speed">%1$s, %2$s/s</string>
<string name="pause_button">Pausa</string>
@@ -32,6 +35,7 @@
<string name="dialog_battery_low_title">Låg batterinivå</string>
<string name="reboot">Starta om</string>
<string name="menu_refresh">Uppdatera</string>
<string name="menu_preferences">Egenskaper</string>
<string name="menu_auto_updates_check">Sök efter uppdateringar automatiskt</string>
<string name="menu_auto_updates_check_interval_daily">En gång om dagen</string>
<string name="menu_auto_updates_check_interval_weekly">En gång i veckan</string>
@@ -67,10 +71,23 @@
<string name="notification_export_success">Uppdatering exporterad</string>
<string name="notification_export_fail">Exporteringsfel</string>
<string name="toast_export_started">Exportering startad</string>
<plurals name="eta_seconds">
<item quantity="one">1 sekund kvar</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> sekunder kvar</item>
</plurals>
<plurals name="eta_minutes">
<item quantity="one">1 minut kvar</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> minuter kvar</item>
</plurals>
<plurals name="eta_hours">
<item quantity="one">1 timme kvar</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> timmar kvar</item>
</plurals>
<string name="update_over_metered_network_title">Varning</string>
<string name="update_over_metered_network_message">Du är på väg att ladda ner en uppdatering över mobilnätet vilket troligtvis kommer att orsaka hög dataanvändning. Vill du fortsätta?</string>
<string name="checkbox_metered_network_warning">Visa inte igen</string>
<string name="menu_metered_network_warning">Mobildatavarning</string>
<string name="blocked_update_dialog_title">Uppdateringen blockerades</string>
<string name="export_channel_title">Export slutförd</string>
<string name="new_updates_channel_title">Nya uppdateringar</string>
<string name="ongoing_channel_title">Pågående nedladdningar</string>

View File

@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2017-2024 The LineageOS Project
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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">இற்றைநர்</string>
<string name="display_name">இற்றைநர்</string>
<string name="verification_failed_notification">சரிபார்த்தல் தோல்வியுற்றது</string>
<string name="verifying_download_notification">இற்றையைச் சரிபார்க்கிறது</string>
<string name="downloading_notification">பதிவிறக்குகிறது</string>
<string name="download_paused_notification">பதிவிறக்கம் இடைநிறுத்தப்பட்டது</string>
<string name="download_paused_error_notification">பதிவிறக்கப் பிழை</string>
<string name="download_completed_notification">பதிவிறக்கம் முடிவுற்றது</string>
<string name="download_starting_notification">பதிவிறக்கம் தொடங்குகிறது</string>
<string name="update_failed_notification">இற்றை தோல்வியுற்றது</string>
<string name="installation_suspended_notification">நிறுவல் இடைநீக்கப்பட்டது</string>
<string name="new_updates_found_title">புதிய இற்றைகள்</string>
<string name="text_download_speed">%1$s, %2$s/s</string>
<string name="pause_button">இடைநிறுத்துக</string>
<string name="resume_button">மீண்டுந்தொடர்க</string>
<string name="suspend_button">இடைநீக்குக</string>
<string name="installing_update">இற்றைத் தொகுப்பு நிறுவுகிறது</string>
<string name="installing_update_error">நிறுவு பிழை</string>
<string name="installing_update_finished">இற்றை நிறுவப்பட்டது</string>
<string name="finalizing_package">தொகுப்பு நிறுவலை இறுதிப்படுத்துகிறது</string>
<string name="preparing_ota_first_boot">முதற்தொடக்கத்திற்கு ஏற்படுத்துகிறது</string>
<string name="dialog_prepare_zip_message">முதற்நிலை இற்றை ஏற்படுத்துதல்</string>
<string name="dialog_battery_low_title">குறைந்த மின்கலம்</string>
<string name="dialog_battery_low_message_pct">மின்கல நிலை மிகக்குறைவு; தொடர குறைந்தது <xliff:g id="percent_discharging">%1$d</xliff:g>%% மின்கலமாவது தேவை, மின்னூட்டலெனில், <xliff:g id="percent_charging">%2$d</xliff:g>%% மின்கலம் தேவை.</string>
<string name="dialog_scratch_mounted_message"><![CDATA[ பின்வரும் கட்டளைகளை இயக்கிய அப்புறம், இற்றையை மீண்டும் முயலவும்:\n
• adb root\n
• adb enable-verity\n
• adb reboot
]]></string>
<string name="dialog_scratch_mounted_title">OverlayFS ஏற்றப்பட்ட இற்றையை நிறுவ முடியாது</string>
<string name="reboot">மறு இயக்கம்</string>
<string name="menu_refresh">புதுக்குக</string>
<string name="menu_preferences">முன்விருப்பம்</string>
<string name="menu_auto_updates_check">தன்னியக்க இற்றைச் சரிபார்ப்பு</string>
<string name="menu_auto_updates_check_interval_daily">நாள் ஒரு முறை</string>
<string name="menu_auto_updates_check_interval_weekly">கிழமை ஒரு முறை</string>
<string name="menu_auto_updates_check_interval_monthly">திங்கள் ஒரு முறை</string>
<string name="menu_auto_updates_check_interval_never">என்றுமில்லை</string>
<string name="menu_auto_delete_updates">நிறுவப்பட்டபோது இற்றைகளை நீக்குக</string>
<string name="menu_delete_update">நீக்குக</string>
<string name="menu_copy_url">உரலியை நகலெடுக்க</string>
<string name="menu_export_update">இற்றையை ஏற்றுமதி செய்க</string>
<string name="menu_show_changelog">மாற்றுக்குறிப்பைக் காட்டுக</string>
<string name="menu_ab_perf_mode">இற்றைச் செயற்முறையை முன்னுரிமைப்படுத்துக</string>
<string name="menu_update_recovery">மீட்டெடுப்பை இற்றைப்படுத்துக</string>
<string name="toast_forced_update_recovery">Lineage மீட்டெடுப்பு இற்றைகளை முடக்குவது, இக்கருவியில் இயலாது.</string>
<string name="snack_updates_found">புதிய இற்றைகள் கிடைத்தன</string>
<string name="snack_no_updates_found">புதிய இற்றைகள் எவையும் கிடைக்கவில்லை</string>
<string name="snack_updates_check_failed">இற்றைச் சோதனை தோல்வியுற்றது; உங்கள் இணைய இணைப்பைச் சரிபார்த்த பிறகு, மீண்டும் முயற்சி செய்யவும்.</string>
<string name="snack_download_failed">பதிவிறக்கம் தோல்வியுற்றது; உங்கள் இணைய இணைப்பைச் சரிபார்த்த பிறகு, மீண்டும் முயற்சி செய்யவும்.</string>
<string name="snack_download_verification_failed">இற்றை சரிபார்ப்பு தோல்வியுற்றது.</string>
<string name="snack_download_verified">பதிவிறக்கம் முடிவுற்றது.</string>
<string name="snack_update_not_installable">தற்போதைய கட்டமைப்பின் மீது, இந்த இற்றையை நிறுவ முடியாது.</string>
<string name="header_title_text">LineageOS\n%1$s</string>
<string name="header_android_version">Android <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
<string name="header_last_updates_check">கடைசியாகச் சரிபார்க்கப்பட்டது: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> (<xliff:g id="time" example="01:23">%2$s</xliff:g>)</string>
<string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
<string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> - <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
<string name="list_download_progress_newer"><xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> இல் <xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g></string>
<string name="list_download_progress_eta_newer"><xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> இல் <xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> (<xliff:g id="eta" example="3 minutes left">%3$s</xliff:g>)</string>
<string name="list_verifying_update">இற்றையைச் சரிபார்க்கிறது</string>
<string name="list_no_updates">புதிய இற்றைகள் எவையும் கிடைக்கவில்லை; அவற்றைக் கைமுறையாகச் சரிபார்க்க, புதுப்பிப்பு விசையைப் பயன்படுத்துக.</string>
<string name="action_download">பதிவிறக்குக</string>
<string name="action_pause">இடைநிறுத்துக</string>
<string name="action_resume">மீண்டுந்தொடர்க</string>
<string name="action_install">நிறுவுக</string>
<string name="action_info">செய்தி</string>
<string name="action_delete">அழிக்க</string>
<string name="action_cancel">விலக்குக</string>
<string name="confirm_delete_dialog_title">கோப்பை நீக்குக</string>
<string name="confirm_delete_dialog_message">தேர்ந்தெடுக்கப்பட்ட இற்றைக் கோப்பை நீக்கவா?</string>
<string name="apply_update_dialog_title">இற்றையைச் செயற்படுத்துக</string>
<string name="apply_update_dialog_message"> <xliff:g id="update_name">%1$s</xliff:g>, என்பதை நீங்கள் நிறுவ உள்ளீர்; \n\nநீங்கள் <xliff:g id="ok">%2$s</xliff:g> என்பதை அழுத்தினால், இற்றையை நிறுவ கருவியானது தானாகவே மீட்டெடுப்பு முறையில் மறுதொடங்கும்.\n\nகுறிப்பு: இப்பண்புக்கூறுக்கு இணக்கமான மீட்டெடுப்பு தேவை; இல்லையெனில், இற்றைகளை கைமுறையாக நிறுவ வேண்டும்.</string>
<string name="apply_update_dialog_message_ab"><xliff:g id="update_name">%1$s</xliff:g>, என்பதை நீங்கள் நிறுவ உள்ளீர்; \n\nநீங்கள் <xliff:g id="ok">%2$s</xliff:g> என்பதை அழுத்தினால், பின்னணியில் கருவியானது நிறுவலைத் தொடங்கும்.\n\nமுடிந்ததும், மறு இயக்கம் செய்யும்படித் தூண்டப்படுவீர்.</string>
<string name="cancel_installation_dialog_message">நிறுவலை விலக்கவா?</string>
<string name="label_download_url">பதிவிறக்க உரலி</string>
<string name="toast_download_url_copied">உரலி நகலெடுக்கப்பட்டது</string>
<string name="dialog_export_title">இற்றை ஏற்றுமதி செய்தல்</string>
<string name="notification_export_success">இற்றை ஏற்றுமதி செய்யப்பட்டது</string>
<string name="notification_export_fail">ஏற்றுமதிப் பிழை</string>
<string name="toast_already_exporting">ஏற்கெனவே, ஒர் இற்றையை ஏற்றுமதி செய்கிறது</string>
<string name="toast_export_started">ஏற்றுமதி தொடங்கியது</string>
<plurals name="eta_seconds">
<item quantity="one">இன்னும் ஒரு நொடி</item>
<item quantity="other">இன்னும் <xliff:g id="count">%d</xliff:g> நொடி</item>
</plurals>
<plurals name="eta_minutes">
<item quantity="one">இன்னும் ஒரு நுணுத்தம்</item>
<item quantity="other">இன்னும் <xliff:g id="count">%d</xliff:g> நுணுத்தம்</item>
</plurals>
<plurals name="eta_hours">
<item quantity="one">இன்னும் ஒரு மணிநேரம்</item>
<item quantity="other">இன்னும் <xliff:g id="count">%d</xliff:g> மணிநேரம்</item>
</plurals>
<string name="update_over_metered_network_title">எச்சரிக்கை</string>
<string name="update_over_metered_network_message">வரம்பிட்ட பிணையத்தில் இற்றைத் தொகுப்பைப் பதிவிறக்க உள்ளீர்; இஃது உயர்ந்த தரவுப் பயன்பாட்டை ஏற்படுத்தக்கூடும்; நீங்கள் தொடர விரும்புகிறீரா?</string>
<string name="checkbox_metered_network_warning">மீண்டும் காட்ட வேண்டாம்</string>
<string name="menu_metered_network_warning">வரம்பிட்ட பிணைய எச்சரிக்கை</string>
<string name="blocked_update_dialog_title">இற்றை தடுக்கப்பட்டது</string>
<string name="blocked_update_dialog_message">இற்றைநர் செயலியைப் பயன்படுத்தி இவ்விற்றையை நிறுவ முடியாது. மேலும், தெரிவிப்புக்கு <xliff:g id="info_url">%1$s</xliff:g> இதைப் படிக்கவும்.</string>
<string name="export_channel_title">ஏற்றுமதி நிறைவுறல்</string>
<string name="new_updates_channel_title">புதிய இற்றைகள்</string>
<string name="ongoing_channel_title">நடப்புப் பதிவிறக்கங்கள்</string>
<string name="update_failed_channel_title">இற்றை தோல்வியுற்றது</string>
<string name="info_dialog_title">நீங்கள், அறிந்தீரா?</string>
<string name="info_dialog_message">LineageOS இற்றைகள் முழு நிறுவல் தொகுப்புகளாகும். அஃதாவது, நீங்கள் இடையில் சிலவற்றைத் தவிர்த்தாலும், எப்போதும் அண்மை இற்றையை மட்டுமே நிறுவ முடியும்!</string>
<string name="info_dialog_ok">தெரிவித்தலுக்கு நன்றி!</string>
<string name="local_update_import">உற்றிட இற்றை</string>
<string name="local_update_import_progress">உற்றிட இற்றையை இறக்குதல் \u2026</string>
<string name="local_update_import_success">%1$s என்பது இறக்கப்பட்டது; அதை நிறுவ வேண்டுமா?</string>
<string name="local_update_import_failure">உற்றிட இற்றை இறக்கல் தோல்வியுற்றது</string>
<string name="local_update_import_install">நிறுவுக</string>
<string name="local_update_name">உற்றிட இற்றை</string>
<string name="welcome_title">நல்வரவு</string>
<string name="welcome_message">இற்றைகள் பல கிடைக்கும்போது, ​​ஒவ்வொன்றாகச் செல்ல வேண்டியதில்லை என்பதை நினைவில் கொள்ளவும், நீர் எப்போதும் மிகப்பிந்தியதை நேரடியாக நிறுவலாம், பிறகு சேமிப்பிடத்தை விடுவிக்கப் பழைய இற்றைகளைப் பாதுகாப்பாக நீக்கலாம்.</string>
</resources>

View File

@@ -125,4 +125,6 @@
<string name="local_update_import_failure">Không nhập được bản cập nhật cục bộ</string>
<string name="local_update_import_install">Cài đặt</string>
<string name="local_update_name">Cập nhật cục bộ</string>
<string name="welcome_title">Chào mừng</string>
<string name="welcome_message">Xin lưu ý rằng khi có nhiều bản cập nhật khả dụng, bạn không cần phải cập nhật từng bản một. Bạn có thể cài đặt trực tiếp bản cập nhật mới nhất rồi xóa an toàn các bản cập nhật cũ hơn để giải phóng dung lượng lưu trữ.</string>
</resources>

View File

@@ -125,4 +125,6 @@
<string name="local_update_import_failure">导入本地更新失败</string>
<string name="local_update_import_install">安装</string>
<string name="local_update_name">本地更新</string>
<string name="welcome_title">欢迎</string>
<string name="welcome_message">请注意,当有多个更新可用时,无需逐个更新,可以直接安装最新的更新,然后安全地删除旧的更新以释放存储空间。</string>
</resources>

View File

@@ -9,5 +9,4 @@
<color name="tv_card_background">#222222</color>
<color name="inverted">#212121</color>
<color name="ic_background">#333333</color>
</resources>

View File

@@ -173,4 +173,7 @@
<string name="local_update_import_failure">Failed to import local update</string>
<string name="local_update_import_install">Install</string>
<string name="local_update_name">Local update</string>
<string name="welcome_title">Welcome</string>
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
</resources>

View File

@@ -19,15 +19,6 @@
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
<style name="TextAppearanceInverted" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/inverted</item>
</style>
<style name="TextAppearanceTransparent" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@android:color/transparent</item>
</style>
<style name="AppTheme.PopupMenuOverlapAnchor">
<item name="android:overlapAnchor">true</item>
<item name="android:dropDownVerticalOffset">8dp</item>

View File

@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "7.4.1" apply false
id("com.android.library") version "7.4.1" apply false
id("com.android.application") version "8.7.3" apply false
id("com.android.library") version "8.7.3" apply false
id("org.jetbrains.kotlin.android") version "1.7.10" apply false
}

View File

@@ -21,3 +21,5 @@ kotlin.code.style=official
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.defaults.buildfeatures.buildconfig=true
android.nonFinalResIds=false

Binary file not shown.

View File

@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

297
gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,69 +15,104 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +122,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,88 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

37
gradlew.bat vendored
View File

@@ -13,8 +13,10 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%" == "" @echo off
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +27,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -75,13 +78,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal

View File

@@ -24,6 +24,7 @@ fi
zip_path_device=$updates_dir/`basename "$zip_path"`
if adb shell test -f "$zip_path_device"; then
echo "$zip_path_device exists already"
adb unroot
exit 1
fi