Merge pull request #25 from Iamlooker/root-installation

Root installation
This commit is contained in:
LooKeR 2021-10-13 00:35:41 +05:30 committed by GitHub
commit a2bb4632fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
59 changed files with 923 additions and 1198 deletions

View File

@ -1,7 +1,5 @@
--- ---
name: Bug report name: Bug report about: Create a report to help us improve title: ''
about: Create a report to help us improve
title: ''
labels: '' labels: ''
assignees: '' assignees: ''
@ -12,6 +10,7 @@ A clear and concise description of what the bug is.
**To Reproduce** **To Reproduce**
Steps to reproduce the behavior: Steps to reproduce the behavior:
1. Go to '...' 1. Go to '...'
2. Click on '....' 2. Click on '....'
3. Scroll down to '....' 3. Scroll down to '....'
@ -24,15 +23,17 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem. If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):** **Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari] - OS: [e.g. iOS]
- Version [e.g. 22] - Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):** **Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1] - Device: [e.g. iPhone6]
- Browser [e.g. stock browser, safari] - OS: [e.g. iOS8.1]
- Version [e.g. 22] - Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context** **Additional context**
Add any other context about the problem here. Add any other context about the problem here.

View File

@ -1,7 +1,5 @@
--- ---
name: Custom issue template name: Custom issue template about: Describe this issue template's purpose here. title: ''
about: Describe this issue template's purpose here.
title: ''
labels: '' labels: ''
assignees: '' assignees: ''

View File

@ -1,7 +1,5 @@
--- ---
name: Feature request name: Feature request about: Suggest an idea for this project title: ''
about: Suggest an idea for this project
title: ''
labels: '' labels: ''
assignees: '' assignees: ''

View File

@ -6,7 +6,8 @@ Material-ify with Droid-ify.
Unofficial F-Droid client with Material UI. Unofficial F-Droid client with Material UI.
This app is an Direct Adaptation/Modification of [Foxy-Droid](https://github.com/kitsunyan/foxy-droid/) This app is an Direct Adaptation/Modification
of [Foxy-Droid](https://github.com/kitsunyan/foxy-droid/)
### Features ### Features
@ -14,14 +15,15 @@ This app is an Direct Adaptation/Modification of [Foxy-Droid](https://github.com
* No cards or inappropriate animations * No cards or inappropriate animations
* Fast repository syncing * Fast repository syncing
* Standard Android components and minimal dependencies * Standard Android components and minimal dependencies
### Screenshots ### Screenshots
<img src="metadata/en-US/images/screenshots/home-light.png" width="48%" /><img src="metadata/en-US/images/screenshots/app-light.png" width="48%" /><img src="metadata/en-US/images/screenshots/home-dark.png" width="48%" /><img src="metadata/en-US/images/screenshots/app-dark.png" width="48%" /><img src="metadata/en-US/images/screenshots/home-amoled.png" width="48%" /><img src="metadata/en-US/images/screenshots/app-amoled.png" width="48%" /> <img src="metadata/en-US/images/screenshots/home-light.png" width="48%" /><img src="metadata/en-US/images/screenshots/app-light.png" width="48%" /><img src="metadata/en-US/images/screenshots/home-dark.png" width="48%" /><img src="metadata/en-US/images/screenshots/app-dark.png" width="48%" /><img src="metadata/en-US/images/screenshots/home-amoled.png" width="48%" /><img src="metadata/en-US/images/screenshots/app-amoled.png" width="48%" />
## Building and Installing ## Building and Installing
Specify your Android SDK path either using the `ANDROID_HOME` environment variable, or by filling out the `sdk.dir` Specify your Android SDK path either using the `ANDROID_HOME` environment variable, or by filling
out the `sdk.dir`
property in `local.properties`. property in `local.properties`.
Signing can be done automatically using `keystore.properties` as follows: Signing can be done automatically using `keystore.properties` as follows:
@ -33,8 +35,10 @@ key.alias=key-alias
key.password=key-password key.password=key-password
``` ```
Run `./gradlew assembleRelease` to build the package, which can be installed using the Android package manager. Run `./gradlew assembleRelease` to build the package, which can be installed using the Android
package manager.
## License ## License
Droid-ify is available under the terms of the GNU General Public License v3 or later. Copyright © 2020 Iamlooker. Droid-ify is available under the terms of the GNU General Public License v3 or later. Copyright ©
2020 Iamlooker.

View File

@ -1,27 +0,0 @@
#!/bin/bash
set -e
cd "`dirname "$0"`"
dimensions=(mdpi:1 hdpi:1.5 xhdpi:2 xxhdpi:3 xxxhdpi:4)
res='../src/main/res'
cp 'launcher.svg' 'launcher-foreground.svg'
inkscape --select circle --verb EditDelete --verb=FileSave --verb=FileQuit \
'launcher-foreground.svg'
for dimension in ${dimensions[@]}; do
resource="${dimension%:*}"
scale="${dimension#*:}"
mkdir -p "$res/mipmap-$resource" "$res/drawable-$resource"
size="`bc <<< "48 * $scale"`"
inkscape 'launcher.svg' -a 15:15:93:93 -w "$size" -h "$size" \
-e "$res/mipmap-$resource/ic_launcher.png"
optipng "$res/mipmap-$resource/ic_launcher.png"
size="`bc <<< "108 * $scale"`"
inkscape 'launcher-foreground.svg' -w "$size" -h "$size" \
-e "$res/drawable-$resource/ic_launcher_foreground.png"
optipng "$res/drawable-$resource/ic_launcher_foreground.png"
done
rm 'launcher-foreground.svg'

View File

@ -1,273 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
style="enable-background:new"
id="svg3"
version="1.1"
viewBox="0 0 108 108"
height="108"
width="108">
<metadata
id="metadata55">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs17">
<clipPath
id="paper-clip"
clipPathUnits="userSpaceOnUse">
<path
id="paper-clip-path"
d="m 67.759585,28.469613 -18.355472,18.146485 -21.453125,-4.732422 9.087891,24.064453 25.894536,12.974609 12.37695,-23.86914 -1.93359,-0.66211 z" />
</clipPath>
<filter
id="paper-inner-shadow">
<feFlood
id="feFlood6"
result="flood"
flood-color="rgb(0,0,0)"
flood-opacity="0.2" />
<feComposite
id="feComposite8"
result="composite1"
operator="in"
in2="SourceGraphic"
in="flood" />
<feGaussianBlur
id="feGaussianBlur10"
result="blur"
stdDeviation="2"
in="composite1" />
<feOffset
id="feOffset12"
result="offset"
dy="0"
dx="0" />
<feComposite
id="feComposite14"
result="composite2"
operator="over"
in2="offset"
in="SourceGraphic" />
</filter>
<filter
id="paper-edge-1"
style="color-interpolation-filters:sRGB">
<feFlood
id="feFlood958"
result="flood"
flood-color="rgb(0,0,0)"
flood-opacity="0.2" />
<feComposite
id="feComposite960"
result="composite1"
operator="out"
in2="SourceGraphic"
in="flood" />
<feGaussianBlur
id="feGaussianBlur962"
result="blur"
stdDeviation="0"
in="composite1" />
<feOffset
id="feOffset964"
result="offset"
dy="0.2"
dx="0.2" />
<feComposite
id="feComposite966"
result="composite2"
operator="atop"
in2="SourceGraphic"
in="offset" />
</filter>
<filter
id="paper-edge-2"
style="color-interpolation-filters:sRGB">
<feFlood
id="feFlood1388"
result="flood"
flood-color="rgb(255,255,255)"
flood-opacity="0.2" />
<feComposite
id="feComposite1390"
result="composite1"
operator="out"
in2="SourceGraphic"
in="flood" />
<feGaussianBlur
id="feGaussianBlur1392"
result="blur"
stdDeviation="0"
in="composite1" />
<feOffset
id="feOffset1394"
result="offset"
dy="-0.1"
dx="0.3" />
<feComposite
id="feComposite1396"
result="composite2"
operator="atop"
in2="SourceGraphic"
in="offset" />
</filter>
<filter
id="paper-shadow"
style="color-interpolation-filters:sRGB">
<feFlood
id="feFlood1506"
result="flood"
flood-color="rgb(0,0,0)"
flood-opacity="0.4" />
<feComposite
id="feComposite1508"
result="composite1"
operator="in"
in2="SourceGraphic"
in="flood" />
<feGaussianBlur
id="feGaussianBlur1510"
result="blur"
stdDeviation="2"
in="composite1" />
<feOffset
id="feOffset1512"
result="offset"
dy="0"
dx="0" />
<feComposite
id="feComposite1514"
result="composite2"
operator="over"
in2="offset"
in="SourceGraphic" />
</filter>
<filter
id="circle-shadow"
style="color-interpolation-filters:sRGB">
<feFlood
id="feFlood1626"
result="flood"
flood-color="rgb(255,255,255)"
flood-opacity="0.2" />
<feComposite
id="feComposite1628"
result="composite1"
operator="out"
in2="SourceGraphic"
in="flood" />
<feGaussianBlur
id="feGaussianBlur1630"
result="blur"
stdDeviation="0"
in="composite1" />
<feOffset
id="feOffset1632"
result="offset"
dy="0.5"
dx="0" />
<feComposite
id="feComposite1634"
result="fbSourceGraphic"
operator="atop"
in2="SourceGraphic"
in="offset" />
<feFlood
in="fbSourceGraphic"
result="flood"
flood-color="rgb(0,0,0)"
flood-opacity="0.2"
id="feFlood1640" />
<feComposite
result="composite1"
operator="out"
in="flood"
id="feComposite1642"
in2="fbSourceGraphic" />
<feGaussianBlur
result="blur"
stdDeviation="0"
in="composite1"
id="feGaussianBlur1644" />
<feOffset
result="offset"
dy="-0.5"
dx="0"
id="feOffset1646" />
<feComposite
result="fbSourceGraphic"
operator="atop"
in="offset"
id="feComposite1648"
in2="fbSourceGraphic" />
<feFlood
in="fbSourceGraphic"
result="flood"
flood-color="rgb(0,0,0)"
flood-opacity="0.2"
id="feFlood1664" />
<feComposite
result="composite1"
operator="in"
in="flood"
id="feComposite1666"
in2="fbSourceGraphic" />
<feGaussianBlur
result="blur"
stdDeviation="1"
in="composite1"
id="feGaussianBlur1668" />
<feOffset
result="offset"
dy="1"
dx="0"
id="feOffset1670" />
<feComposite
result="composite2"
operator="over"
in="fbSourceGraphic"
id="feComposite1672"
in2="offset" />
</filter>
</defs>
<circle
r="36"
cy="54"
cx="54"
id="circle"
style="fill:#262c38;filter:url(#circle-shadow)" />
<g
style="filter:url(#paper-shadow)"
id="paper-group">
<path
d="m 67.75836,28.470764 -23.382292,23.115602 -0.0887,1.254642 29.189963,2.017946 z"
style="fill:#1976d2"
id="paper-4" />
<path
style="fill:#47a2fc;filter:url(#paper-inner-shadow)"
d="m 27.949219,41.884766 9.08789,24.064453 25.894532,12.974609 12.376953,-23.86914 -22.298828,-7.638672 v -0.002 z"
clip-path="url(#paper-clip)"
id="paper-3" />
<path
d="m 53.009473,47.414648 -15.970174,18.53113 25.894116,12.97696 z"
style="fill:#1976d2;filter:url(#paper-edge-1)"
id="paper-2" />
<path
style="fill:#47a2fc;filter:url(#paper-edge-2)"
d="m 53.009766,47.414016 9.923828,31.503906 12.375,-23.865234 z"
id="paper-1" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -5,21 +5,17 @@ import android.app.Application
import android.app.job.JobInfo import android.app.job.JobInfo
import android.app.job.JobScheduler import android.app.job.JobScheduler
import android.content.* import android.content.*
import android.content.pm.PackageInfo
import com.looker.droidify.content.Cache import com.looker.droidify.content.Cache
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.content.ProductPreferences import com.looker.droidify.content.ProductPreferences
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
import com.looker.droidify.entity.InstalledItem
import com.looker.droidify.index.RepositoryUpdater import com.looker.droidify.index.RepositoryUpdater
import com.looker.droidify.network.Downloader import com.looker.droidify.network.Downloader
import com.looker.droidify.network.PicassoDownloader import com.looker.droidify.network.PicassoDownloader
import com.looker.droidify.service.Connection import com.looker.droidify.service.Connection
import com.looker.droidify.service.SyncService import com.looker.droidify.service.SyncService
import com.looker.droidify.utility.Utils import com.looker.droidify.utility.Utils.toInstalledItem
import com.looker.droidify.utility.extension.android.Android import com.looker.droidify.utility.extension.android.Android
import com.looker.droidify.utility.extension.android.singleSignature
import com.looker.droidify.utility.extension.android.versionCodeCompat
import com.squareup.picasso.OkHttp3Downloader import com.squareup.picasso.OkHttp3Downloader
import com.squareup.picasso.Picasso import com.squareup.picasso.Picasso
import java.net.InetSocketAddress import java.net.InetSocketAddress
@ -27,10 +23,6 @@ import java.net.Proxy
@Suppress("unused") @Suppress("unused")
class MainApplication : Application() { class MainApplication : Application() {
private fun PackageInfo.toInstalledItem(): InstalledItem {
val signatureString = singleSignature?.let(Utils::calculateHash).orEmpty()
return InstalledItem(packageName, versionName.orEmpty(), versionCodeCompat, signatureString)
}
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()

View File

@ -26,6 +26,8 @@ import com.looker.droidify.service.Connection
import com.looker.droidify.service.DownloadService import com.looker.droidify.service.DownloadService
import com.looker.droidify.utility.RxUtils import com.looker.droidify.utility.RxUtils
import com.looker.droidify.utility.Utils import com.looker.droidify.utility.Utils
import com.looker.droidify.utility.Utils.startPackageInstaller
import com.looker.droidify.utility.Utils.startUpdate
import com.looker.droidify.utility.extension.android.* import com.looker.droidify.utility.extension.android.*
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.core.Observable
@ -134,7 +136,6 @@ class ProductFragment() : ScreenFragment(), ProductAdapter.Callbacks {
} }
addOnScrollListener(scrollListener) addOnScrollListener(scrollListener)
addItemDecoration(adapter.gridItemDecoration) addItemDecoration(adapter.gridItemDecoration)
// addItemDecoration(DividerItemDecoration(context, adapter::configureDivider))
savedInstanceState?.getParcelable<ProductAdapter.SavedState>(STATE_ADAPTER) savedInstanceState?.getParcelable<ProductAdapter.SavedState>(STATE_ADAPTER)
?.let(adapter::restoreState) ?.let(adapter::restoreState)
layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER) layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER)
@ -385,27 +386,7 @@ class ProductFragment() : ScreenFragment(), ProductAdapter.Callbacks {
ProductAdapter.Action.INSTALL, ProductAdapter.Action.INSTALL,
ProductAdapter.Action.UPDATE -> { ProductAdapter.Action.UPDATE -> {
val installedItem = installed?.installedItem val installedItem = installed?.installedItem
val productRepository = Product.findSuggested(products, installedItem) { it.first } startUpdate(packageName, installedItem, products, downloadConnection)
val compatibleReleases = productRepository?.first?.selectedReleases.orEmpty()
.filter { installedItem == null || installedItem.signature == it.signature }
val release = if (compatibleReleases.size >= 2) {
compatibleReleases
.filter { it.platforms.contains(Android.primaryPlatform) }
.minByOrNull { it.platforms.size }
?: compatibleReleases.minByOrNull { it.platforms.size }
?: compatibleReleases.firstOrNull()
} else {
compatibleReleases.firstOrNull()
}
val binder = downloadConnection.binder
if (productRepository != null && release != null && binder != null) {
binder.enqueue(
packageName,
productRepository.first.name,
productRepository.second,
release
)
} else Unit
} }
ProductAdapter.Action.LAUNCH -> { ProductAdapter.Action.LAUNCH -> {
val launcherActivities = installed?.launcherActivities.orEmpty() val launcherActivities = installed?.launcherActivities.orEmpty()

View File

@ -1,7 +1,6 @@
package com.looker.droidify.screen package com.looker.droidify.screen
import android.content.Intent import android.content.Intent
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Parcel import android.os.Parcel
import android.view.ViewGroup import android.view.ViewGroup
@ -11,11 +10,10 @@ import android.widget.Toolbar
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Cache
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.database.CursorOwner import com.looker.droidify.database.CursorOwner
import com.looker.droidify.utility.KParcelable import com.looker.droidify.utility.KParcelable
import com.looker.droidify.utility.extension.android.Android import com.looker.droidify.utility.Utils.startPackageInstaller
import com.looker.droidify.utility.extension.resources.getDrawableFromAttr import com.looker.droidify.utility.extension.resources.getDrawableFromAttr
import com.looker.droidify.utility.extension.text.nullIfEmpty import com.looker.droidify.utility.extension.text.nullIfEmpty
@ -217,11 +215,7 @@ abstract class ScreenActivity : FragmentActivity() {
is SpecialIntent.Install -> { is SpecialIntent.Install -> {
val packageName = specialIntent.packageName val packageName = specialIntent.packageName
if (!packageName.isNullOrEmpty()) { if (!packageName.isNullOrEmpty()) {
val fragment = currentFragment specialIntent.cacheFileName?.let { startPackageInstaller(it) }
if (fragment !is ProductFragment || fragment.packageName != packageName) {
pushFragment(ProductFragment(packageName))
}
specialIntent.cacheFileName?.let(::startPackageInstaller)
} }
Unit Unit
} }
@ -242,20 +236,6 @@ abstract class ScreenActivity : FragmentActivity() {
} }
} }
internal fun startPackageInstaller(cacheFileName: String) {
val (uri, flags) = if (Android.sdk(24)) {
Pair(Cache.getReleaseUri(this, cacheFileName), Intent.FLAG_GRANT_READ_URI_PERMISSION)
} else {
Pair(Uri.fromFile(Cache.getReleaseFile(this, cacheFileName)), 0)
}
// TODO Handle deprecation
@Suppress("DEPRECATION")
startActivity(
Intent(Intent.ACTION_INSTALL_PACKAGE)
.setDataAndType(uri, "application/vnd.android.package-archive").setFlags(flags)
)
}
internal fun navigateProduct(packageName: String) = pushFragment(ProductFragment(packageName)) internal fun navigateProduct(packageName: String) = pushFragment(ProductFragment(packageName))
internal fun navigateRepositories() = pushFragment(RepositoriesFragment()) internal fun navigateRepositories() = pushFragment(RepositoriesFragment())
internal fun navigatePreferences() = pushFragment(SettingsFragment()) internal fun navigatePreferences() = pushFragment(SettingsFragment())

View File

@ -19,6 +19,7 @@ import com.looker.droidify.BuildConfig
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.utility.extension.resources.* import com.looker.droidify.utility.extension.resources.*
import com.topjohnwu.superuser.Shell
import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.disposables.Disposable
@ -125,7 +126,7 @@ class SettingsFragment : ScreenFragment() {
} }
} }
addText( addText(
title = "Droid-ify", title = getString(R.string.application_name),
summary = "v ${BuildConfig.VERSION_NAME}" summary = "v ${BuildConfig.VERSION_NAME}"
) )
} }
@ -181,6 +182,9 @@ class SettingsFragment : ScreenFragment() {
preferences[Preferences.Key.ProxyHost]?.setEnabled(enabled) preferences[Preferences.Key.ProxyHost]?.setEnabled(enabled)
preferences[Preferences.Key.ProxyPort]?.setEnabled(enabled) preferences[Preferences.Key.ProxyPort]?.setEnabled(enabled)
} }
preferences[Preferences.Key.RootPermission]?.setEnabled(
Shell.getCachedShell()?.isRoot ?: Shell.getShell().isRoot
)
if (key == Preferences.Key.Theme) { if (key == Preferences.Key.Theme) {
requireActivity().recreate() requireActivity().recreate()
} }

View File

@ -14,6 +14,7 @@ import com.looker.droidify.Common
import com.looker.droidify.MainActivity import com.looker.droidify.MainActivity
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Cache import com.looker.droidify.content.Cache
import com.looker.droidify.content.Preferences
import com.looker.droidify.entity.Release import com.looker.droidify.entity.Release
import com.looker.droidify.entity.Repository import com.looker.droidify.entity.Repository
import com.looker.droidify.network.Downloader import com.looker.droidify.network.Downloader
@ -300,9 +301,17 @@ class DownloadService : ConnectionService<DownloadService.Binder>() {
stateSubject.onNext(State.Success(task.packageName, task.name, task.release) { stateSubject.onNext(State.Success(task.packageName, task.name, task.release) {
consumed = true consumed = true
}) })
if (!consumed) { if (consumed || (Preferences[Preferences.Key.RootPermission])) {
showNotificationInstall(task) PendingIntent.getBroadcast(
} this,
0,
Intent(this, Receiver::class.java)
.setAction("$ACTION_INSTALL.${task.packageName}")
.putExtra(EXTRA_CACHE_FILE_NAME, task.release.cacheFileName),
PendingIntent.FLAG_UPDATE_CURRENT
)
.send()
} else showNotificationInstall(task)
} }
private fun validatePackage(task: Task, file: File): ValidationError? { private fun validatePackage(task: Task, file: File): ValidationError? {
@ -436,7 +445,7 @@ class DownloadService : ConnectionService<DownloadService.Binder>() {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe { result, throwable -> .subscribe { result, throwable ->
currentTask = null currentTask = null
throwable?.printStackTrace() throwable.printStackTrace()
if (result == null || !result.success) { if (result == null || !result.success) {
showNotificationError( showNotificationError(
task, task,

View File

@ -1,15 +1,31 @@
package com.looker.droidify.utility package com.looker.droidify.utility
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.pm.PackageInfo
import android.content.pm.Signature import android.content.pm.Signature
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.net.Uri
import android.provider.Settings import android.provider.Settings
import android.util.Log
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Cache
import com.looker.droidify.content.Preferences
import com.looker.droidify.entity.InstalledItem
import com.looker.droidify.entity.Product
import com.looker.droidify.entity.Repository
import com.looker.droidify.service.Connection
import com.looker.droidify.service.DownloadService
import com.looker.droidify.utility.extension.android.Android import com.looker.droidify.utility.extension.android.Android
import com.looker.droidify.utility.extension.android.singleSignature
import com.looker.droidify.utility.extension.android.versionCodeCompat
import com.looker.droidify.utility.extension.resources.getColorFromAttr import com.looker.droidify.utility.extension.resources.getColorFromAttr
import com.looker.droidify.utility.extension.resources.getDrawableCompat import com.looker.droidify.utility.extension.resources.getDrawableCompat
import com.looker.droidify.utility.extension.text.hex import com.looker.droidify.utility.extension.text.hex
import com.topjohnwu.superuser.Shell
import java.io.File
import java.security.MessageDigest import java.security.MessageDigest
import java.security.cert.Certificate import java.security.cert.Certificate
import java.security.cert.CertificateEncodingException import java.security.cert.CertificateEncodingException
@ -21,6 +37,11 @@ object Utils {
.apply { setTintList(context.getColorFromAttr(tintAttrResId)) } .apply { setTintList(context.getColorFromAttr(tintAttrResId)) }
} }
fun PackageInfo.toInstalledItem(): InstalledItem {
val signatureString = singleSignature?.let(Utils::calculateHash).orEmpty()
return InstalledItem(packageName, versionName.orEmpty(), versionCodeCompat, signatureString)
}
fun getDefaultApplicationIcons(context: Context): Pair<Drawable, Drawable> { fun getDefaultApplicationIcons(context: Context): Pair<Drawable, Drawable> {
val progressIcon: Drawable = val progressIcon: Drawable =
createDefaultApplicationIcon(context, android.R.attr.textColorSecondary) createDefaultApplicationIcon(context, android.R.attr.textColorSecondary)
@ -78,4 +99,92 @@ object Utils {
) != 0f ) != 0f
} }
} }
internal fun Activity.startPackageInstaller(cacheFileName: String) {
val file = Cache.getReleaseFile(this, cacheFileName)
if (Preferences[Preferences.Key.RootPermission]) {
val commandBuilder = StringBuilder()
val verifyState = getVerifyState()
if (verifyState == "1") commandBuilder.append("settings put global verifier_verify_adb_installs 0 ; ")
commandBuilder.append(getPackageInstallCommand(file))
commandBuilder.append(" ; settings put global verifier_verify_adb_installs $verifyState")
val result = Shell.su(commandBuilder.toString()).exec()
if (result.isSuccess) Shell.su("${getUtilBoxPath()} rm ${quote(file.absolutePath)}")
} else {
val (uri, flags) = if (Android.sdk(24)) {
Pair(
Cache.getReleaseUri(this, cacheFileName),
Intent.FLAG_GRANT_READ_URI_PERMISSION
)
} else {
Pair(Uri.fromFile(file), 0)
}
// TODO Handle deprecation
@Suppress("DEPRECATION")
startActivity(
Intent(Intent.ACTION_INSTALL_PACKAGE)
.setDataAndType(uri, "application/vnd.android.package-archive").setFlags(flags)
)
}
}
fun startUpdate(
packageName: String,
installedItem: InstalledItem?,
products: List<Pair<Product, Repository>>,
downloadConnection: Connection<DownloadService.Binder, DownloadService>
) {
val productRepository = Product.findSuggested(products, installedItem) { it.first }
val compatibleReleases = productRepository?.first?.selectedReleases.orEmpty()
.filter { installedItem == null || installedItem.signature == it.signature }
val release = if (compatibleReleases.size >= 2) {
compatibleReleases
.filter { it.platforms.contains(Android.primaryPlatform) }
.minByOrNull { it.platforms.size }
?: compatibleReleases.minByOrNull { it.platforms.size }
?: compatibleReleases.firstOrNull()
} else {
compatibleReleases.firstOrNull()
}
val binder = downloadConnection.binder
if (productRepository != null && release != null && binder != null) {
binder.enqueue(
packageName,
productRepository.first.name,
productRepository.second,
release
)
} else Unit
}
private fun getPackageInstallCommand(cacheFile: File): String =
"cat \"${cacheFile.absolutePath}\" | pm install -t -r -S ${cacheFile.length()}"
private fun getVerifyState(): String =
Shell.sh("settings get global verifier_verify_adb_installs").exec().out[0]
private fun quote(string: String) =
"\"${string.replace(Regex("""[\\$"`]""")) { c -> "\\${c.value}" }}\""
private fun getUtilBoxPath(): String {
listOf("toybox", "busybox").forEach {
var shellResult = Shell.su("which $it").exec()
if (shellResult.out.isNotEmpty()) {
val utilBoxPath = shellResult.out.joinToString("")
if (utilBoxPath.isNotEmpty()) {
val utilBoxQuoted = quote(utilBoxPath)
shellResult = Shell.su("$utilBoxQuoted --version").exec()
if (shellResult.out.isNotEmpty()) {
val utilBoxVersion = shellResult.out.joinToString("")
Log.i(
this.javaClass.canonicalName,
"Using Utilbox $it : $utilBoxQuoted $utilBoxVersion"
)
}
return utilBoxQuoted
}
}
}
return ""
}
} }

View File

@ -1,19 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<set <set xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator <objectAnimator
android:propertyName="alpha" android:duration="100"
android:valueFrom="0" android:interpolator="@android:interpolator/decelerate_quad"
android:valueTo="1" android:propertyName="alpha"
android:duration="100" android:valueFrom="0"
android:interpolator="@android:interpolator/decelerate_quad" /> android:valueTo="1" />
<objectAnimator <objectAnimator
android:propertyName="percentTranslationY" android:duration="175"
android:valueFrom="0.08" android:interpolator="@android:interpolator/decelerate_quad"
android:valueTo="0" android:propertyName="percentTranslationY"
android:duration="175" android:valueFrom="0.08"
android:interpolator="@android:interpolator/decelerate_quad" /> android:valueTo="0" />
</set> </set>

View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<objectAnimator <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:duration="175" />
android:duration="175" />

View File

@ -1,20 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<set <set xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator <objectAnimator
android:propertyName="alpha" android:duration="75"
android:valueFrom="1" android:interpolator="@android:interpolator/linear"
android:valueTo="0" android:propertyName="alpha"
android:startOffset="50" android:startOffset="50"
android:duration="75" android:valueFrom="1"
android:interpolator="@android:interpolator/linear" /> android:valueTo="0" />
<objectAnimator <objectAnimator
android:propertyName="percentTranslationY" android:duration="125"
android:valueFrom="0" android:interpolator="@android:interpolator/accelerate_quad"
android:valueTo="0.08" android:propertyName="percentTranslationY"
android:duration="125" android:valueFrom="0"
android:interpolator="@android:interpolator/accelerate_quad" /> android:valueTo="0.08" />
</set> </set>

View File

@ -1,13 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<selector <selector xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<item <item android:alpha="0.3" android:color="@color/accent_default_dark" android:state_enabled="false" />
android:state_enabled="false"
android:color="@color/accent_default_dark"
android:alpha="0.3" />
<item <item android:color="@color/accent_default_dark" />
android:color="@color/accent_default_dark" />
</selector> </selector>

View File

@ -1,13 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<selector <selector xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<item <item android:alpha="0.26" android:color="@color/accent_default_light" android:state_enabled="false" />
android:state_enabled="false"
android:color="@color/accent_default_light"
android:alpha="0.26" />
<item <item android:color="@color/accent_default_light" />
android:color="@color/accent_default_light" />
</selector> </selector>

View File

@ -1,13 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<selector <selector xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<item <item android:alpha="0.3" android:color="@color/error_default_dark" android:state_enabled="false" />
android:state_enabled="false"
android:color="@color/error_default_dark"
android:alpha="0.3" />
<item <item android:color="@color/error_default_dark" />
android:color="@color/error_default_dark" />
</selector> </selector>

View File

@ -1,13 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<selector <selector xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<item <item android:alpha="0.26" android:color="@color/error_default_light" android:state_enabled="false" />
android:state_enabled="false"
android:color="@color/error_default_light"
android:alpha="0.26" />
<item <item android:color="@color/error_default_light" />
android:color="@color/error_default_light" />
</selector> </selector>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?attr/colorOnBackground" /> <solid android:color="?attr/colorOnBackground" />
<corners android:radius="10dp"/> <corners android:radius="10dp" />
</shape> </shape>

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/textColor" android:fillColor="?android:attr/textColor"
android:pathData="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" /> android:pathData="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="96dp"
android:width="96dp" android:height="96dp"
android:height="96dp" android:viewportWidth="96"
android:viewportWidth="96" android:viewportHeight="96">
android:viewportHeight="96">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M48 4C23.699 4 4 23.699 4 48C4 72.301 23.699 92 48 92C72.301 92 92 72.301 92 48C92 23.699 72.301 4 android:pathData="M48 4C23.699 4 4 23.699 4 48C4 72.301 23.699 92 48 92C72.301 92 92 72.301 92 48C92 23.699 72.301 4
48 4zM28.125 29.102C28.938 29.05 29.867 29.412 30.602 30.146L36.609 36.152A26.1 26.1 0 0 1 48 33.5A26.1 26.1 0 0 1 48 4zM28.125 29.102C28.938 29.05 29.867 29.412 30.602 30.146L36.609 36.152A26.1 26.1 0 0 1 48 33.5A26.1 26.1 0 0 1
59.4 36.143L65.398 30.146C66.574 28.971 68.245 28.751 69.146 29.652C70.047 30.553 69.826 32.223 68.65 33.398L 59.4 36.143L65.398 30.146C66.574 28.971 68.245 28.751 69.146 29.652C70.047 30.553 69.826 32.223 68.65 33.398L
63.449 38.602A26.1 26.1 0 0 1 74.1 59.6A26.1 26.1 0 0 1 74.092 59.801L21.91 59.801A26.1 26.1 0 0 1 21.9 59.6A26.1 63.449 38.602A26.1 26.1 0 0 1 74.1 59.6A26.1 26.1 0 0 1 74.092 59.801L21.91 59.801A26.1 26.1 0 0 1 21.9 59.6A26.1

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M20.54 5.23l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88 .21-1.16 .55L3.46 5.23C3.17 5.57 3 android:pathData="M20.54 5.23l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88 .21-1.16 .55L3.46 5.23C3.17 5.57 3
6.02 3 6.5V19c0 1.1 .9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5L6.5 12H10v-2h4v2h3.5L12 17.5zM 6.02 3 6.5V19c0 1.1 .9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5L6.5 12H10v-2h4v2h3.5L12 17.5zM
5.12 5l.81-1h12l.94 1H5.12z" /> 5.12 5l.81-1h12l.94 1H5.12z" />

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/textColor" android:fillColor="?android:attr/textColor"
android:pathData="M12 17.005L3.996 9 5.41 7.586 12 14.176 18.59 7.586 20.005 9Z" /> android:pathData="M12 17.005L3.996 9 5.41 7.586 12 14.176 18.59 7.586 20.005 9Z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0 android:pathData="M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0
-.96 .06-1.41 .17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05 .33-.09 .66-.09 1v1H4v2h2v1c0 -.96 .06-1.41 .17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05 .33-.09 .66-.09 1v1H4v2h2v1c0
.34 .04 .67 .09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33 .09-.66 .09-1v-1h2v-2h-2v .34 .04 .67 .09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33 .09-.66 .09-1v-1h2v-2h-2v
-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z" /> -1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z" />

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z" /> android:pathData="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M10.08 10.86c.05-.33 .16-.62 .3-.87s.34-.46 .59-.62c.24-.15 .54-.22 .91-.23 .23 .01 .44 .05 .63 android:pathData="M10.08 10.86c.05-.33 .16-.62 .3-.87s.34-.46 .59-.62c.24-.15 .54-.22 .91-.23 .23 .01 .44 .05 .63
.13 .2 .09 .38 .21 .52 .36s.25 .33 .34 .53 .13 .42 .14 .64h1.79c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5 .13 .2 .09 .38 .21 .52 .36s.25 .33 .34 .53 .13 .42 .14 .64h1.79c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5
-1.08-.66-.88-.23-1.39-.23c-.65 0-1.22 .11-1.7 .34s-.88 .53-1.2 .92-.56 .84-.71 1.36S8 11.29 8 11.87v.27c0 .58 .08 -1.08-.66-.88-.23-1.39-.23c-.65 0-1.22 .11-1.7 .34s-.88 .53-1.2 .92-.56 .84-.71 1.36S8 11.29 8 11.87v.27c0 .58 .08
1.12 .23 1.64s.39 .97 .71 1.35 .72 .69 1.2 .91 1.05 .34 1.7 .34c.47 0 .91-.08 1.32-.23s.77-.36 1.08-.63 .56-.58 1.12 .23 1.64s.39 .97 .71 1.35 .72 .69 1.2 .91 1.05 .34 1.7 .34c.47 0 .91-.08 1.32-.23s.77-.36 1.08-.63 .56-.58

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M6 19c0 1.1 .9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" /> android:pathData="M6 19c0 1.1 .9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M19.441 9.596C19.777 7.351 18.067 6.144 15.729 5.338L16.488 2.297 14.636 1.835 13.898 4.797C13.411 android:pathData="M19.441 9.596C19.777 7.351 18.067 6.144 15.729 5.338L16.488 2.297 14.636 1.835 13.898 4.797C13.411
4.675 12.911 4.561 12.414 4.448L13.158 1.467 11.307 1.005 10.548 4.046C10.145 3.954 9.75 3.863 9.366 3.768l.002 4.675 12.911 4.561 12.414 4.448L13.158 1.467 11.307 1.005 10.548 4.046C10.145 3.954 9.75 3.863 9.366 3.768l.002
-.009L6.814 3.121 6.321 5.098c0 0 1.374 .315 1.345 .334 .75 .187 .886 .683 .863 1.077L7.665 9.975c.052 .013 .119 -.009L6.814 3.121 6.321 5.098c0 0 1.374 .315 1.345 .334 .75 .187 .886 .683 .863 1.077L7.665 9.975c.052 .013 .119
.032 .193 .062-.062-.015-.128-.032-.196-.049L6.451 14.842c-.092 .228-.324 .57-.849 .44 .018 .027-1.346-.336-1.346 .032 .193 .062-.062-.015-.128-.032-.196-.049L6.451 14.842c-.092 .228-.324 .57-.849 .44 .018 .027-1.346-.336-1.346

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M9.461 3C5.183 3 3 5.464 3 10.064v3.213 6.438L7.19 15.52v-4.902c0-1.906 .505-3.118 2.199-3.391 android:pathData="M9.461 3C5.183 3 3 5.464 3 10.064v3.213 6.438L7.19 15.52v-4.902c0-1.906 .505-3.118 2.199-3.391
.592-.116 1.824-.075 2.607-.075v2.911c0 .027 .004 .074 .01 .098 .033 .118 .139 .204 .266 .204 .071 0 .138-.037 .592-.116 1.824-.075 2.607-.075v2.911c0 .027 .004 .074 .01 .098 .033 .118 .139 .204 .266 .204 .071 0 .138-.037
.207-.105l7.262-7.259-4.875-.001zM21 4.285L16.81 8.48v4.902c0 1.906-.505 3.118-2.199 3.391-.592 .116-1.824 .075 .207-.105l7.262-7.259-4.875-.001zM21 4.285L16.81 8.48v4.902c0 1.906-.505 3.118-2.199 3.391-.592 .116-1.824 .075
-2.607 .075v-2.911c0-.026-.004-.074-.01-.098-.033-.118-.139-.204-.266-.204-.071 0-.138 .037-.207 .105L4.258 20.999 -2.607 .075v-2.911c0-.026-.004-.074-.01-.098-.033-.118-.139-.204-.266-.204-.071 0-.138 .037-.207 .105L4.258 20.999

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M11.393 1.347L8.018 1.869 5.253 13.43c-.16 .682-.244 1.325-.251 1.927-.007 .604 .116 1.136 .37 1.6 android:pathData="M11.393 1.347L8.018 1.869 5.253 13.43c-.16 .682-.244 1.325-.251 1.927-.007 .604 .116 1.136 .37 1.6
.254 .465 .675 .831 1.262 1.1 .588 .268 1.397 .402 2.428 .402v-.002L9.716 15.781C9.339 15.752 9.045 15.687 8.834 .254 .465 .675 .831 1.262 1.1 .588 .268 1.397 .402 2.428 .402v-.002L9.716 15.781C9.339 15.752 9.045 15.687 8.834
15.585 8.624 15.484 8.475 15.35 8.388 15.183 8.301 15.016 8.261 14.823 8.269 14.605c.007-.217 .04-.457 .098-.718zm 15.585 8.624 15.484 8.475 15.35 8.388 15.183 8.301 15.016 8.261 14.823 8.269 14.605c.007-.217 .04-.457 .098-.718zm
5.201 5.184c-.871 0-1.68 .069-2.428 .207-.747 .138-1.412 .294-1.992 .468L8.559 22.27H11.782l.98-3.941c.493 .087 5.201 5.184c-.871 0-1.68 .069-2.428 .207-.747 .138-1.412 .294-1.992 .468L8.559 22.27H11.782l.98-3.941c.493 .087

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="m11.065 16.274l1.039-3.913 2.46-.899 .612-2.3-.021-.057-2.422 .885 1.745-6.571H9.53L7.248 11.994 android:pathData="m11.065 16.274l1.039-3.913 2.46-.899 .612-2.3-.021-.057-2.422 .885 1.745-6.571H9.53L7.248 11.994
5.342 12.69 4.713 15.061 6.617 14.366 5.272 19.419H18.443l.844-3.145h-8.222" /> 5.342 12.69 4.713 15.061 6.617 14.366 5.272 19.419H18.443l.844-3.145h-8.222" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22A10 10 0 0 0 18.043 19.951L15.469 17.377A6.4 6.4 0 0 1 12 android:pathData="M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22A10 10 0 0 0 18.043 19.951L15.469 17.377A6.4 6.4 0 0 1 12
18.4A6.4 6.4 0 0 1 5.6 12A6.4 6.4 0 0 1 12 5.6A6.4 6.4 0 0 1 15.465 6.627L18.047 4.045A10 10 0 0 0 12 2zM19.951 18.4A6.4 6.4 0 0 1 5.6 12A6.4 6.4 0 0 1 12 5.6A6.4 6.4 0 0 1 15.465 6.627L18.047 4.045A10 10 0 0 0 12 2zM19.951
5.957L17.377 8.531A6.4 6.4 0 0 1 18.4 12A6.4 6.4 0 0 1 17.373 15.465L19.955 18.047A10 10 0 0 0 22 12A10 10 0 0 0 5.957L17.377 8.531A6.4 6.4 0 0 1 18.4 12A6.4 6.4 0 0 1 17.373 15.465L19.955 18.047A10 10 0 0 0 22 12A10 10 0 0 0
19.951 5.957z" /> 19.951 5.957z" />

View File

@ -3,7 +3,7 @@
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M11.8,10.9c-2.27,-0.59 -3,-1.2 -3,-2.15 0,-1.09 1.01,-1.85 2.7,-1.85 1.78,0 2.44,0.85 2.5,2.1h2.21c-0.07,-1.72 -1.12,-3.3 -3.21,-3.81V3h-3v2.16c-1.94,0.42 -3.5,1.68 -3.5,3.61 0,2.31 1.91,3.46 4.7,4.13 2.5,0.6 3,1.48 3,2.41 0,0.69 -0.49,1.79 -2.7,1.79 -2.06,0 -2.87,-0.92 -2.98,-2.1h-2.2c0.12,2.19 1.76,3.42 3.68,3.83V21h3v-2.15c1.95,-0.37 3.5,-1.5 3.5,-3.55 0,-2.84 -2.43,-3.81 -4.7,-4.4z" /> android:pathData="M11.8,10.9c-2.27,-0.59 -3,-1.2 -3,-2.15 0,-1.09 1.01,-1.85 2.7,-1.85 1.78,0 2.44,0.85 2.5,2.1h2.21c-0.07,-1.72 -1.12,-3.3 -3.21,-3.81V3h-3v2.16c-1.94,0.42 -3.5,1.68 -3.5,3.61 0,2.31 1.91,3.46 4.7,4.13 2.5,0.6 3,1.48 3,2.41 0,0.69 -0.49,1.79 -2.7,1.79 -2.06,0 -2.87,-0.92 -2.98,-2.1h-2.2c0.12,2.19 1.76,3.42 3.68,3.83V21h3v-2.15c1.95,-0.37 3.5,-1.5 3.5,-3.55 0,-2.84 -2.43,-3.81 -4.7,-4.4z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39 .39-1.02 0-1.41l-2.34-2.34c-.39 android:pathData="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39 .39-1.02 0-1.41l-2.34-2.34c-.39
-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" /> -.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M20 4H4c-1.1 0-1.99 .9-1.99 2L2 18c0 1.1 .9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5 android:pathData="M20 4H4c-1.1 0-1.99 .9-1.99 2L2 18c0 1.1 .9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5
V6l8 5 8-5v2z" /> V6l8 5 8-5v2z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89 .07 .14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 android:pathData="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89 .07 .14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93
0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54 .72-1.21 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54 .72-1.21
-3.5-2.08V8H12z" /> -3.5-2.08V8H12z" />

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1 .89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 android:pathData="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1 .89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83
9.83 1.41 1.41L19 6.41V10h2V3h-7z" /> 9.83 1.41 1.41L19 6.41V10h2V3h-7z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M23 12l-2.44-2.78 .34-3.68-3.61-.82-1.89-3.18L12 3 8.6 1.54 6.71 4.72l-3.61 .81 .34 3.68L1 12l2.44 android:pathData="M23 12l-2.44-2.78 .34-3.68-3.61-.82-1.89-3.18L12 3 8.6 1.54 6.71 4.72l-3.61 .81 .34 3.68L1 12l2.44
2.78-.34 3.69 3.61 .82 1.89 3.18L12 21l3.4 1.46 1.89-3.18 3.61-.82-.34-3.68L23 12zm-10 5h-2v-2h2v2zm0-4h-2V7 2.78-.34 3.69 3.61 .82 1.89 3.18L12 21l3.4 1.46 1.89-3.18 3.61-.82-.34-3.68L23 12zm-10 5h-2v-2h2v2zm0-4h-2V7
h2v6z" /> h2v6z" />

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M13 7h-2v2h2V7zm0 4h-2v6h2v-6zm4-9.99L7 1c-1.1 0-2 .9-2 2v18c0 1.1 .9 2 2 2h10c1.1 0 2-.9 2-2V3c0 android:pathData="M13 7h-2v2h2V7zm0 4h-2v6h2v-6zm4-9.99L7 1c-1.1 0-2 .9-2 2v18c0 1.1 .9 2 2 2h10c1.1 0 2-.9 2-2V3c0
-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z" /> -1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66 android:pathData="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66
-5.33-4-8-4z" /> -5.33-4-8-4z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M9 2L7.17 4L4 4C2.9 4 2 4.9 2 6L2 18C2 19.1 2.9 20 4 20L20 20C21.1 20 22 19.1 22 18L22 6C22 4.9 android:pathData="M9 2L7.17 4L4 4C2.9 4 2 4.9 2 6L2 18C2 19.1 2.9 20 4 20L20 20C21.1 20 22 19.1 22 18L22 6C22 4.9
21.1 4 20 4L16.83 4L15 2L9 2zM12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 21.1 4 20 4L16.83 4L15 2L9 2zM12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17C9.24 17 7 14.76 7 12C7 9.24 9.24
7 12 7zM12 8.801A3.2 3.2 0 0 0 8.801 12A3.2 3.2 0 0 0 12 15.199A3.2 3.2 0 0 0 15.199 12A3.2 3.2 0 0 0 7 12 7zM12 8.801A3.2 3.2 0 0 0 8.801 12A3.2 3.2 0 0 0 12 15.199A3.2 3.2 0 0 0 15.199 12A3.2 3.2 0 0 0
12 8.801z" /> 12 8.801z" />

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7 android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7
-7.93 0-.62 .08-1.21 .21-1.79L9 15v1c0 1.1 .9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H -7.93 0-.62 .08-1.21 .21-1.79L9 15v1c0 1.1 .9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H
8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" /> 8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" />

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1 .89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s android:pathData="M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1 .89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s
1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z" /> 1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 android:pathData="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5
16c1.61 0 3.09-.59 4.23-1.57l.27 .28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 16c1.61 0 3.09-.59 4.23-1.57l.27 .28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01
14 9.5 11.99 14 9.5 14z" /> 14 9.5 11.99 14 9.5 14z" />

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z" /> android:pathData="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z" />
</vector> </vector>

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0 android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0
-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01 .25-1.97 .7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 -4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01 .25-1.97 .7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8
8v3l4-4-4-4v3z" /> 8v3l4-4-4-4v3z" />

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:width="24dp" android:height="24dp"
android:height="24dp" android:viewportWidth="24"
android:viewportWidth="24" android:viewportHeight="24">
android:viewportHeight="24">
<path <path
android:fillColor="?android:attr/colorBackground" android:fillColor="?android:attr/colorBackground"
android:pathData="M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6 android:pathData="M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6
-4h2V7h4V5h-4V3h-2v6z" /> -4h2V7h4V5h-4V3h-2v6z" />
</vector> </vector>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid <solid
android:angle="0" android:angle="0"
android:color="@null"/> android:color="@null" />
<corners android:radius="6dp" /> <corners android:radius="6dp" />

View File

@ -31,9 +31,9 @@
android:id="@+id/fragment_content" android:id="@+id/fragment_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:paddingHorizontal="10dp"
android:paddingTop="10dp"
android:layout_weight="1" android:layout_weight="1"
android:background="?android:attr/colorBackground" /> android:background="?android:attr/colorBackground"
android:paddingHorizontal="10dp"
android:paddingTop="10dp" />
</com.looker.droidify.widget.FragmentLinearLayout> </com.looker.droidify.widget.FragmentLinearLayout>

View File

@ -1,33 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:background="?android:attr/selectableItemBackground">
<ImageView
android:id="@+id/icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:scaleType="centerInside"
android:layout_gravity="center"
android:tint="?android:attr/textColorSecondary"
android:tintMode="src_in"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:background="?android:attr/selectableItemBackground"
android:layout_marginStart="32dp" android:orientation="horizontal"
android:paddingTop="16dp" android:paddingStart="16dp"
android:paddingBottom="16dp" android:paddingEnd="16dp">
android:textColor="?android:attr/textColor"
android:textSize="16sp" /> <ImageView
android:id="@+id/icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:tint="?android:attr/textColorSecondary"
android:tintMode="src_in"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_weight="1"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:textColor="?android:attr/textColor"
android:textSize="16sp" />
</LinearLayout> </LinearLayout>

View File

@ -3,8 +3,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingVertical="8dp" android:paddingHorizontal="16dp"
android:paddingHorizontal="16dp"> android:paddingVertical="8dp">
<TextView <TextView
android:id="@+id/title" android:id="@+id/title"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/> <background android:drawable="@color/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/> <background android:drawable="@color/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

View File

@ -1,160 +1,160 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="action_failed">A ação falhou</string> <string name="action_failed">A ação falhou</string>
<string name="add_repository">Adicionar repositório</string> <string name="add_repository">Adicionar repositório</string>
<string name="address">Endereço</string> <string name="address">Endereço</string>
<string name="all_applications">Todos os aplicativos</string> <string name="all_applications">Todos os aplicativos</string>
<string name="all_applications_up_to_date">Todos os aplicativos estão atualizados</string> <string name="all_applications_up_to_date">Todos os aplicativos estão atualizados</string>
<string name="already_exists">Já existe</string> <string name="already_exists">Já existe</string>
<string name="always">Sempre</string> <string name="always">Sempre</string>
<string name="amoled">Amoled</string> <string name="amoled">Amoled</string>
<string name="anti_features">Características indesejadas</string> <string name="anti_features">Características indesejadas</string>
<string name="application">Aplicativo</string> <string name="application">Aplicativo</string>
<string name="application_not_found">Aplicativo não encontrado</string> <string name="application_not_found">Aplicativo não encontrado</string>
<string name="author_email">Email do autor</string> <string name="author_email">Email do autor</string>
<string name="author_website">Página do autor</string> <string name="author_website">Página do autor</string>
<string name="available">Disponível</string> <string name="available">Disponível</string>
<string name="bug_tracker">Rastreador de erros</string> <string name="bug_tracker">Rastreador de erros</string>
<string name="cancel">Cancelar</string> <string name="cancel">Cancelar</string>
<string name="cant_edit_sync_DESC">Não é possível editar o repositório pois ele está sincronizando no momento.</string> <string name="cant_edit_sync_DESC">Não é possível editar o repositório pois ele está sincronizando no momento.</string>
<string name="changelog">Lista de mudanças</string> <string name="changelog">Lista de mudanças</string>
<string name="changes">Mudanças</string> <string name="changes">Mudanças</string>
<string name="checking_repository">Checando o repositório</string> <string name="checking_repository">Checando o repositório</string>
<string name="compiled_for_debugging">Compilado para depuração</string> <string name="compiled_for_debugging">Compilado para depuração</string>
<string name="confirmation">Confirmação</string> <string name="confirmation">Confirmação</string>
<string name="connecting">Conectando</string> <string name="connecting">Conectando</string>
<string name="contains_non_free_media">Contém mídia não livre</string> <string name="contains_non_free_media">Contém mídia não livre</string>
<string name="could_not_download_FORMAT">Não foi possível baixar %s</string> <string name="could_not_download_FORMAT">Não foi possível baixar %s</string>
<string name="could_not_sync_FORMAT">Não foi possível sincronizar %s</string> <string name="could_not_sync_FORMAT">Não foi possível sincronizar %s</string>
<string name="could_not_validate_FORMAT">Não foi possível validar %s</string> <string name="could_not_validate_FORMAT">Não foi possível validar %s</string>
<string name="dark">Escuro</string> <string name="dark">Escuro</string>
<string name="date_added">Data de adição</string> <string name="date_added">Data de adição</string>
<string name="delete">Excluir</string> <string name="delete">Excluir</string>
<string name="delete_repository_DESC">Tem certeza que deseja excluir o repositório?</string> <string name="delete_repository_DESC">Tem certeza que deseja excluir o repositório?</string>
<string name="description">Descrição</string> <string name="description">Descrição</string>
<string name="details">Detalhes</string> <string name="details">Detalhes</string>
<string name="donate">Doar</string> <string name="donate">Doar</string>
<string name="downloaded_FORMAT">Baixado %s</string> <string name="downloaded_FORMAT">Baixado %s</string>
<string name="downloading">Baixando</string> <string name="downloading">Baixando</string>
<string name="downloading_FORMAT">Baixando %s</string> <string name="downloading_FORMAT">Baixando %s</string>
<string name="edit_repository">Editar repositório</string> <string name="edit_repository">Editar repositório</string>
<string name="file_format_error_DESC">Formato de arquivo inválido.</string> <string name="file_format_error_DESC">Formato de arquivo inválido.</string>
<string name="fingerprint">Fingerprint</string> <string name="fingerprint">Fingerprint</string>
<string name="has_advertising">Contém anúncio</string> <string name="has_advertising">Contém anúncio</string>
<string name="has_non_free_dependencies">Possui dependências não livres</string> <string name="has_non_free_dependencies">Possui dependências não livres</string>
<string name="has_security_vulnerabilities">Possui vulnerabilidades de segurança</string> <string name="has_security_vulnerabilities">Possui vulnerabilidades de segurança</string>
<string name="http_error_DESC">Resposta de servidor inválida.</string> <string name="http_error_DESC">Resposta de servidor inválida.</string>
<string name="http_proxy">Proxy HTTP</string> <string name="http_proxy">Proxy HTTP</string>
<string name="ignore_all_updates">Ignorar todas as atualizações</string> <string name="ignore_all_updates">Ignorar todas as atualizações</string>
<string name="ignore_this_update">Ignorar essa atualização</string> <string name="ignore_this_update">Ignorar essa atualização</string>
<string name="incompatible_api_DESC_FORMAT">Sua %1$s (Versão da API %2$d) não é suportado. %3$s</string> <string name="incompatible_api_DESC_FORMAT">Sua %1$s (Versão da API %2$d) não é suportado. %3$s</string>
<string name="incompatible_api_max_DESC_FORMAT">A versão máxima da API é %d.</string> <string name="incompatible_api_max_DESC_FORMAT">A versão máxima da API é %d.</string>
<string name="incompatible_api_min_DESC_FORMAT">A versão mínima da API é %d.</string> <string name="incompatible_api_min_DESC_FORMAT">A versão mínima da API é %d.</string>
<string name="incompatible_features_DESC">Funcionalidades que estão faltando.</string> <string name="incompatible_features_DESC">Funcionalidades que estão faltando.</string>
<string name="incompatible_older_DESC">Esta versão é mais antiga que a instalada no seu dispositivo. <string name="incompatible_older_DESC">Esta versão é mais antiga que a instalada no seu dispositivo.
Desinstale a primeiro.</string> Desinstale a primeiro.</string>
<string name="incompatible_platforms_DESC_FORMAT">Sua %1$s plataforma não é suportada. <string name="incompatible_platforms_DESC_FORMAT">Sua %1$s plataforma não é suportada.
Plataformas suportadas: %2$s.</string> Plataformas suportadas: %2$s.</string>
<string name="incompatible_signature_DESC">Esta versão é assinada com um certificado diferente do que está <string name="incompatible_signature_DESC">Esta versão é assinada com um certificado diferente do que está
instalado no seu dispositivo. Desinstale-a primeiro.</string> instalado no seu dispositivo. Desinstale-a primeiro.</string>
<string name="incompatible_version">Versão incompatível</string> <string name="incompatible_version">Versão incompatível</string>
<string name="incompatible_versions">Versões incompatíveis</string> <string name="incompatible_versions">Versões incompatíveis</string>
<string name="incompatible_versions_summary">Mostrar versões de aplicativos incompatíveis com o dispositivo</string> <string name="incompatible_versions_summary">Mostrar versões de aplicativos incompatíveis com o dispositivo</string>
<string name="incompatible_with_FORMAT">Incompatível com %s</string> <string name="incompatible_with_FORMAT">Incompatível com %s</string>
<string name="install">Instalar</string> <string name="install">Instalar</string>
<string name="installed">Instalado</string> <string name="installed">Instalado</string>
<string name="integrity_check_error_DESC">Não foi possível verificar a integridade.</string> <string name="integrity_check_error_DESC">Não foi possível verificar a integridade.</string>
<string name="invalid_address">Endereço inválido</string> <string name="invalid_address">Endereço inválido</string>
<string name="invalid_fingerprint_format">Formato de fingerprint inválido</string> <string name="invalid_fingerprint_format">Formato de fingerprint inválido</string>
<string name="invalid_metadata_error_DESC">Metadado inválido.</string> <string name="invalid_metadata_error_DESC">Metadado inválido.</string>
<string name="invalid_permissions_error_DESC">Permissão inválido.</string> <string name="invalid_permissions_error_DESC">Permissão inválido.</string>
<string name="invalid_signature_error_DESC">Assinatura inválida.</string> <string name="invalid_signature_error_DESC">Assinatura inválida.</string>
<string name="invalid_username_format">Formato de nome do usuário inválido</string> <string name="invalid_username_format">Formato de nome do usuário inválido</string>
<string name="last_update">Última atualização</string> <string name="last_update">Última atualização</string>
<string name="launch">Abrir</string> <string name="launch">Abrir</string>
<string name="license">Licença</string> <string name="license">Licença</string>
<string name="license_FORMAT">Licença %s</string> <string name="license_FORMAT">Licença %s</string>
<string name="light">Claro</string> <string name="light">Claro</string>
<string name="link_copied_to_clipboard">Link copiado para a área de transferência</string> <string name="link_copied_to_clipboard">Link copiado para a área de transferência</string>
<string name="links">Links</string> <string name="links">Links</string>
<string name="merging_FORMAT">Incorporando %s</string> <string name="merging_FORMAT">Incorporando %s</string>
<string name="name">Nome</string> <string name="name">Nome</string>
<string name="network_error_DESC">Erro da rede.</string> <string name="network_error_DESC">Erro da rede.</string>
<string name="never">Nunca</string> <string name="never">Nunca</string>
<string name="new_updates_available">Novas atualizações disponíveis</string> <string name="new_updates_available">Novas atualizações disponíveis</string>
<plurals name="new_updates_DESC_FORMAT"> <plurals name="new_updates_DESC_FORMAT">
<item quantity="one">%d nova atualização.</item> <item quantity="one">%d nova atualização.</item>
<item quantity="other">%d novas atualizações.</item> <item quantity="other">%d novas atualizações.</item>
</plurals> </plurals>
<string name="no_applications_available">Não há aplicativos disponíveis</string> <string name="no_applications_available">Não há aplicativos disponíveis</string>
<string name="no_applications_installed">Nenhum aplicativo instalado</string> <string name="no_applications_installed">Nenhum aplicativo instalado</string>
<string name="no_description_available_DESC">Nenhuma descrição disponível.</string> <string name="no_description_available_DESC">Nenhuma descrição disponível.</string>
<string name="no_matching_applications_found">Nenhum aplicativo correspondente encontrado</string> <string name="no_matching_applications_found">Nenhum aplicativo correspondente encontrado</string>
<string name="no_proxy">Sem proxy</string> <string name="no_proxy">Sem proxy</string>
<string name="notify_about_updates">Notificar sobre atualizações</string> <string name="notify_about_updates">Notificar sobre atualizações</string>
<string name="notify_about_updates_summary">Mostrar uma notificação quando atualizações estiverem disponíveis</string> <string name="notify_about_updates_summary">Mostrar uma notificação quando atualizações estiverem disponíveis</string>
<string name="number_of_applications">Número de aplicativos</string> <string name="number_of_applications">Número de aplicativos</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="only_compatible_with_FORMAT">Somente compatível com %s</string> <string name="only_compatible_with_FORMAT">Somente compatível com %s</string>
<string name="only_on_wifi">Somente no Wi-Fi</string> <string name="only_on_wifi">Somente no Wi-Fi</string>
<string name="open_DESC_FORMAT">Abrir %s?</string> <string name="open_DESC_FORMAT">Abrir %s?</string>
<string name="other">Outro</string> <string name="other">Outro</string>
<string name="parsing_index_error_DESC">Não foi possível analisar o arquivo de índice.</string> <string name="parsing_index_error_DESC">Não foi possível analisar o arquivo de índice.</string>
<string name="password">Senha</string> <string name="password">Senha</string>
<string name="password_missing">Falta a senha</string> <string name="password_missing">Falta a senha</string>
<string name="permissions">Permissões</string> <string name="permissions">Permissões</string>
<string name="plus_more_FORMAT">+%d mais</string> <string name="plus_more_FORMAT">+%d mais</string>
<string name="settings">Configurações</string> <string name="settings">Configurações</string>
<string name="processing_FORMAT">Processando %1$s</string> <string name="processing_FORMAT">Processando %1$s</string>
<string name="project_website">Página do projeto</string> <string name="project_website">Página do projeto</string>
<string name="promotes_non_free_network_services">Promove serviços de rede não livres</string> <string name="promotes_non_free_network_services">Promove serviços de rede não livres</string>
<string name="promotes_non_free_software">Promove software não livre</string> <string name="promotes_non_free_software">Promove software não livre</string>
<string name="provided_by_FORMAT">Disponibilizado por %s</string> <string name="provided_by_FORMAT">Disponibilizado por %s</string>
<string name="proxy">Proxy</string> <string name="proxy">Proxy</string>
<string name="proxy_host">Servidor de Proxy</string> <string name="proxy_host">Servidor de Proxy</string>
<string name="proxy_port">Porta de Proxy</string> <string name="proxy_port">Porta de Proxy</string>
<string name="proxy_type">Tipo de Proxy</string> <string name="proxy_type">Tipo de Proxy</string>
<string name="repositories">Repositórios</string> <string name="repositories">Repositórios</string>
<string name="repository">Repositório</string> <string name="repository">Repositório</string>
<string name="repository_not_used_DESC">Este repositório ainda não foi usado. Você precisa o ativar para visualizar <string name="repository_not_used_DESC">Este repositório ainda não foi usado. Você precisa o ativar para visualizar
os aplicativos que ele fornece.</string> os aplicativos que ele fornece.</string>
<string name="repository_unsigned_DESC">Sem assinatura. Não foi possível verificar a lista de aplicativos. Tenha cuidado ao baixar <string name="repository_unsigned_DESC">Sem assinatura. Não foi possível verificar a lista de aplicativos. Tenha cuidado ao baixar
aplicativos de repositórios sem assinatura.</string> aplicativos de repositórios sem assinatura.</string>
<string name="requires_FORMAT">Requer %s</string> <string name="requires_FORMAT">Requer %s</string>
<string name="save">Salvar</string> <string name="save">Salvar</string>
<string name="saving_details">Salvando detalhes</string> <string name="saving_details">Salvando detalhes</string>
<string name="screenshots">Capturas de tela</string> <string name="screenshots">Capturas de tela</string>
<string name="search">Pesquisar</string> <string name="search">Pesquisar</string>
<string name="select_mirror">Selecione um mirror</string> <string name="select_mirror">Selecione um mirror</string>
<string name="show_more">Mostrar mais</string> <string name="show_more">Mostrar mais</string>
<string name="show_older_versions">Mostrar versões antigas</string> <string name="show_older_versions">Mostrar versões antigas</string>
<string name="signature_FORMAT">Assinatura %s</string> <string name="signature_FORMAT">Assinatura %s</string>
<string name="signed_using_unsafe_algorithm">Assinado usando um algoritmo inseguro</string> <string name="signed_using_unsafe_algorithm">Assinado usando um algoritmo inseguro</string>
<string name="skip">Pular</string> <string name="skip">Pular</string>
<string name="socks_proxy">SOCKS proxy</string> <string name="socks_proxy">SOCKS proxy</string>
<string name="sorting_order">Ordenar por</string> <string name="sorting_order">Ordenar por</string>
<string name="source_code">Código fonte</string> <string name="source_code">Código fonte</string>
<string name="source_code_no_longer_available">Código fonte não está mais disponível</string> <string name="source_code_no_longer_available">Código fonte não está mais disponível</string>
<string name="suggested">Sugerido</string> <string name="suggested">Sugerido</string>
<string name="sync_repositories">Sincronizar repositórios</string> <string name="sync_repositories">Sincronizar repositórios</string>
<string name="sync_repositories_automatically">Sincronizar repositórios automaticamente</string> <string name="sync_repositories_automatically">Sincronizar repositórios automaticamente</string>
<string name="syncing">Sincronizando</string> <string name="syncing">Sincronizando</string>
<string name="syncing_FORMAT">Sincronizando %s</string> <string name="syncing_FORMAT">Sincronizando %s</string>
<string name="system">Sistema</string> <string name="system">Sistema</string>
<string name="tap_to_install_DESC">Toque para instalar.</string> <string name="tap_to_install_DESC">Toque para instalar.</string>
<string name="theme">Tema</string> <string name="theme">Tema</string>
<string name="tracks_or_reports_your_activity">Rastreia ou relata sua atividade</string> <string name="tracks_or_reports_your_activity">Rastreia ou relata sua atividade</string>
<string name="uninstall">Desinstalar</string> <string name="uninstall">Desinstalar</string>
<string name="unknown">Desconhecido</string> <string name="unknown">Desconhecido</string>
<string name="unknown_error_DESC">Error desconhecido.</string> <string name="unknown_error_DESC">Error desconhecido.</string>
<string name="unknown_FORMAT">Desconhecido: %s</string> <string name="unknown_FORMAT">Desconhecido: %s</string>
<string name="unsigned">Sem assinatura</string> <string name="unsigned">Sem assinatura</string>
<string name="unstable_updates">Atualizações instáveis</string> <string name="unstable_updates">Atualizações instáveis</string>
<string name="unstable_updates_summary">Sugerir instalar versões instáveis</string> <string name="unstable_updates_summary">Sugerir instalar versões instáveis</string>
<string name="unverified">Não verificado</string> <string name="unverified">Não verificado</string>
<string name="update">Atualização</string> <string name="update">Atualização</string>
<string name="updates">Atualizações</string> <string name="updates">Atualizações</string>
<string name="upstream_source_code_is_not_free">O código fonte original não é livre</string> <string name="upstream_source_code_is_not_free">O código fonte original não é livre</string>
<string name="username">Nome de usuário</string> <string name="username">Nome de usuário</string>
<string name="username_missing">Falta o nome de usuário</string> <string name="username_missing">Falta o nome de usuário</string>

View File

@ -1,160 +1,160 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="action_failed">操作失败</string> <string name="action_failed">操作失败</string>
<string name="add_repository">添加存储库</string> <string name="add_repository">添加存储库</string>
<string name="address">地址</string> <string name="address">地址</string>
<string name="all_applications">全部应用</string> <string name="all_applications">全部应用</string>
<string name="all_applications_up_to_date">所有应用都是最新的</string> <string name="all_applications_up_to_date">所有应用都是最新的</string>
<string name="already_exists">已经存在</string> <string name="already_exists">已经存在</string>
<string name="always">总是</string> <string name="always">总是</string>
<string name="amoled">Amoled</string> <string name="amoled">Amoled</string>
<string name="anti_features">不需要的特征</string> <string name="anti_features">不需要的特征</string>
<string name="application">应用</string> <string name="application">应用</string>
<string name="application_not_found">应用未找到</string> <string name="application_not_found">应用未找到</string>
<string name="author_email">作者邮箱</string> <string name="author_email">作者邮箱</string>
<string name="author_website">作者网站</string> <string name="author_website">作者网站</string>
<string name="available">可用</string> <string name="available">可用</string>
<string name="bug_tracker">错误追踪器</string> <string name="bug_tracker">错误追踪器</string>
<string name="cancel">取消</string> <string name="cancel">取消</string>
<string name="cant_edit_sync_DESC">无法编辑存储库,因为它现在正在同步。</string> <string name="cant_edit_sync_DESC">无法编辑存储库,因为它现在正在同步。</string>
<string name="changelog">变更日志</string> <string name="changelog">变更日志</string>
<string name="changes">变更</string> <string name="changes">变更</string>
<string name="checking_repository">检查存储库</string> <string name="checking_repository">检查存储库</string>
<string name="compiled_for_debugging">编译调试</string> <string name="compiled_for_debugging">编译调试</string>
<string name="confirmation">确认</string> <string name="confirmation">确认</string>
<string name="connecting">连接中</string> <string name="connecting">连接中</string>
<string name="contains_non_free_media">包含非自由媒体</string> <string name="contains_non_free_media">包含非自由媒体</string>
<string name="could_not_download_FORMAT">无法下载 %s</string> <string name="could_not_download_FORMAT">无法下载 %s</string>
<string name="could_not_sync_FORMAT">无法同步 %s</string> <string name="could_not_sync_FORMAT">无法同步 %s</string>
<string name="could_not_validate_FORMAT">无法验证 %s</string> <string name="could_not_validate_FORMAT">无法验证 %s</string>
<string name="dark">暗色</string> <string name="dark">暗色</string>
<string name="date_added">添加日期</string> <string name="date_added">添加日期</string>
<string name="delete">删除</string> <string name="delete">删除</string>
<string name="delete_repository_DESC">您确定要删除此存储库吗?</string> <string name="delete_repository_DESC">您确定要删除此存储库吗?</string>
<string name="description">描述</string> <string name="description">描述</string>
<string name="details">详情</string> <string name="details">详情</string>
<string name="donate">捐助</string> <string name="donate">捐助</string>
<string name="downloaded_FORMAT">已下载 %s</string> <string name="downloaded_FORMAT">已下载 %s</string>
<string name="downloading">下载中</string> <string name="downloading">下载中</string>
<string name="downloading_FORMAT">正在下载 %s</string> <string name="downloading_FORMAT">正在下载 %s</string>
<string name="edit_repository">编辑存储库</string> <string name="edit_repository">编辑存储库</string>
<string name="file_format_error_DESC">文件格式无效。</string> <string name="file_format_error_DESC">文件格式无效。</string>
<string name="fingerprint">指纹</string> <string name="fingerprint">指纹</string>
<string name="has_advertising">包含广告</string> <string name="has_advertising">包含广告</string>
<string name="has_non_free_dependencies">包含非自由依赖</string> <string name="has_non_free_dependencies">包含非自由依赖</string>
<string name="has_security_vulnerabilities">包含安全漏洞</string> <string name="has_security_vulnerabilities">包含安全漏洞</string>
<string name="http_error_DESC">服务器响应无效。</string> <string name="http_error_DESC">服务器响应无效。</string>
<string name="http_proxy">HTTP 代理</string> <string name="http_proxy">HTTP 代理</string>
<string name="ignore_all_updates">忽略所有更新</string> <string name="ignore_all_updates">忽略所有更新</string>
<string name="ignore_this_update">忽略此更新</string> <string name="ignore_this_update">忽略此更新</string>
<string name="incompatible_api_DESC_FORMAT">您的 %1$sAPI 版本 %2$d不受支持。 %3$s</string> <string name="incompatible_api_DESC_FORMAT">您的 %1$sAPI 版本 %2$d不受支持。 %3$s</string>
<string name="incompatible_api_max_DESC_FORMAT">最大 API 版本为 %d。</string> <string name="incompatible_api_max_DESC_FORMAT">最大 API 版本为 %d。</string>
<string name="incompatible_api_min_DESC_FORMAT">最小 API 版本为 %d。</string> <string name="incompatible_api_min_DESC_FORMAT">最小 API 版本为 %d。</string>
<string name="incompatible_features_DESC">缺少的功能。</string> <string name="incompatible_features_DESC">缺少的功能。</string>
<string name="incompatible_older_DESC">此版本比您设备上安装的版本旧。 <string name="incompatible_older_DESC">此版本比您设备上安装的版本旧。
请先卸载那个。</string> 请先卸载那个。</string>
<string name="incompatible_platforms_DESC_FORMAT">您的 %1$s 平台不受支持。 <string name="incompatible_platforms_DESC_FORMAT">您的 %1$s 平台不受支持。
支持的平台:%2$s。</string> 支持的平台:%2$s。</string>
<string name="incompatible_signature_DESC">此版本使用不同的证书签名 <string name="incompatible_signature_DESC">此版本使用不同的证书签名
之前安装在您设备上的。请先卸载那个。</string> 之前安装在您设备上的。请先卸载那个。</string>
<string name="incompatible_version">版本不兼容</string> <string name="incompatible_version">版本不兼容</string>
<string name="incompatible_versions">版本不兼容</string> <string name="incompatible_versions">版本不兼容</string>
<string name="incompatible_versions_summary">显示与设备不兼容的应用版本</string> <string name="incompatible_versions_summary">显示与设备不兼容的应用版本</string>
<string name="incompatible_with_FORMAT">与 %s 不兼容</string> <string name="incompatible_with_FORMAT">与 %s 不兼容</string>
<string name="install">安装</string> <string name="install">安装</string>
<string name="installed">已安装</string> <string name="installed">已安装</string>
<string name="integrity_check_error_DESC">无法检查完整性。</string> <string name="integrity_check_error_DESC">无法检查完整性。</string>
<string name="invalid_address">地址无效</string> <string name="invalid_address">地址无效</string>
<string name="invalid_fingerprint_format">指纹格式无效</string> <string name="invalid_fingerprint_format">指纹格式无效</string>
<string name="invalid_metadata_error_DESC">元数据无效。</string> <string name="invalid_metadata_error_DESC">元数据无效。</string>
<string name="invalid_permissions_error_DESC">权限无效。</string> <string name="invalid_permissions_error_DESC">权限无效。</string>
<string name="invalid_signature_error_DESC">签名无效。</string> <string name="invalid_signature_error_DESC">签名无效。</string>
<string name="invalid_username_format">用户名格式无效</string> <string name="invalid_username_format">用户名格式无效</string>
<string name="last_update">最近更新</string> <string name="last_update">最近更新</string>
<string name="launch">启动</string> <string name="launch">启动</string>
<string name="license">许可证</string> <string name="license">许可证</string>
<string name="license_FORMAT">许可证 %s</string> <string name="license_FORMAT">许可证 %s</string>
<string name="light">亮色</string> <string name="light">亮色</string>
<string name="link_copied_to_clipboard">链接已复制到剪贴板</string> <string name="link_copied_to_clipboard">链接已复制到剪贴板</string>
<string name="links">链接</string> <string name="links">链接</string>
<string name="merging_FORMAT">合并 %s</string> <string name="merging_FORMAT">合并 %s</string>
<string name="name">名称</string> <string name="name">名称</string>
<string name="network_error_DESC">网络错误.</string> <string name="network_error_DESC">网络错误.</string>
<string name="never">从不</string> <string name="never">从不</string>
<string name="new_updates_available">新的更新可用</string> <string name="new_updates_available">新的更新可用</string>
<plurals name="new_updates_DESC_FORMAT"> <plurals name="new_updates_DESC_FORMAT">
<item quantity="one">%d 个更新.</item> <item quantity="one">%d 个更新.</item>
<item quantity="other">%d 个更新.</item> <item quantity="other">%d 个更新.</item>
</plurals> </plurals>
<string name="no_applications_available">没有可用的应用</string> <string name="no_applications_available">没有可用的应用</string>
<string name="no_applications_installed">没有已安装的应用</string> <string name="no_applications_installed">没有已安装的应用</string>
<string name="no_description_available_DESC">没有可用的描述。</string> <string name="no_description_available_DESC">没有可用的描述。</string>
<string name="no_matching_applications_found">未找到匹配的应用</string> <string name="no_matching_applications_found">未找到匹配的应用</string>
<string name="no_proxy">无代理</string> <string name="no_proxy">无代理</string>
<string name="notify_about_updates">更新通知</string> <string name="notify_about_updates">更新通知</string>
<string name="notify_about_updates_summary">有可用更新时显示通知</string> <string name="notify_about_updates_summary">有可用更新时显示通知</string>
<string name="number_of_applications">应用数量</string> <string name="number_of_applications">应用数量</string>
<string name="ok">好的</string> <string name="ok">好的</string>
<string name="only_compatible_with_FORMAT">仅与 %s 兼容</string> <string name="only_compatible_with_FORMAT">仅与 %s 兼容</string>
<string name="only_on_wifi">仅连到 Wi-Fi 时</string> <string name="only_on_wifi">仅连到 Wi-Fi 时</string>
<string name="open_DESC_FORMAT">打开 %s</string> <string name="open_DESC_FORMAT">打开 %s</string>
<string name="other">其他</string> <string name="other">其他</string>
<string name="parsing_index_error_DESC">无法解析索引文件。</string> <string name="parsing_index_error_DESC">无法解析索引文件。</string>
<string name="password">密码</string> <string name="password">密码</string>
<string name="password_missing">缺少密码</string> <string name="password_missing">缺少密码</string>
<string name="permissions">权限</string> <string name="permissions">权限</string>
<string name="plus_more_FORMAT">+%d 个</string> <string name="plus_more_FORMAT">+%d 个</string>
<string name="settings">设置</string> <string name="settings">设置</string>
<string name="processing_FORMAT">正在处理 %1$s</string> <string name="processing_FORMAT">正在处理 %1$s</string>
<string name="project_website">项目网站</string> <string name="project_website">项目网站</string>
<string name="promotes_non_free_network_services">推广非自由网络服务</string> <string name="promotes_non_free_network_services">推广非自由网络服务</string>
<string name="promotes_non_free_software">推广非自由软件</string> <string name="promotes_non_free_software">推广非自由软件</string>
<string name="provided_by_FORMAT">由 %s 提供</string> <string name="provided_by_FORMAT">由 %s 提供</string>
<string name="proxy">代理</string> <string name="proxy">代理</string>
<string name="proxy_host">代理主机</string> <string name="proxy_host">代理主机</string>
<string name="proxy_port">代理端口</string> <string name="proxy_port">代理端口</string>
<string name="proxy_type">代理类型</string> <string name="proxy_type">代理类型</string>
<string name="repositories">存储库</string> <string name="repositories">存储库</string>
<string name="repository">存储库</string> <string name="repository">存储库</string>
<string name="repository_not_used_DESC">此存储库尚未使用。您需要启用它才能查看 <string name="repository_not_used_DESC">此存储库尚未使用。您需要启用它才能查看
它提供的应用程序。</string> 它提供的应用程序。</string>
<string name="repository_unsigned_DESC">未签名。无法验证此应用列表。小心下载 <string name="repository_unsigned_DESC">未签名。无法验证此应用列表。小心下载
来自未签名存储库的应用。</string> 来自未签名存储库的应用。</string>
<string name="requires_FORMAT">需要 %s</string> <string name="requires_FORMAT">需要 %s</string>
<string name="save">保存</string> <string name="save">保存</string>
<string name="saving_details">保存详情</string> <string name="saving_details">保存详情</string>
<string name="screenshots">截图</string> <string name="screenshots">截图</string>
<string name="search">搜索</string> <string name="search">搜索</string>
<string name="select_mirror">选择一个镜像</string> <string name="select_mirror">选择一个镜像</string>
<string name="show_more">显示更多</string> <string name="show_more">显示更多</string>
<string name="show_older_versions">显示旧版本</string> <string name="show_older_versions">显示旧版本</string>
<string name="signature_FORMAT">签名 %s</string> <string name="signature_FORMAT">签名 %s</string>
<string name="signed_using_unsafe_algorithm">使用不安全算法签名</string> <string name="signed_using_unsafe_algorithm">使用不安全算法签名</string>
<string name="skip">跳过</string> <string name="skip">跳过</string>
<string name="socks_proxy">SOCKS 代理</string> <string name="socks_proxy">SOCKS 代理</string>
<string name="sorting_order">排序顺序</string> <string name="sorting_order">排序顺序</string>
<string name="source_code">源代码</string> <string name="source_code">源代码</string>
<string name="source_code_no_longer_available">源代码不再可用</string> <string name="source_code_no_longer_available">源代码不再可用</string>
<string name="suggested">建议</string> <string name="suggested">建议</string>
<string name="sync_repositories">同步存储库</string> <string name="sync_repositories">同步存储库</string>
<string name="sync_repositories_automatically">自动同步存储库</string> <string name="sync_repositories_automatically">自动同步存储库</string>
<string name="syncing">同步中</string> <string name="syncing">同步中</string>
<string name="syncing_FORMAT">同步中 %s</string> <string name="syncing_FORMAT">同步中 %s</string>
<string name="system">系统</string> <string name="system">系统</string>
<string name="tap_to_install_DESC">点击安装。</string> <string name="tap_to_install_DESC">点击安装。</string>
<string name="theme">主题</string> <string name="theme">主题</string>
<string name="tracks_or_reports_your_activity">跟踪或报告您的活动</string> <string name="tracks_or_reports_your_activity">跟踪或报告您的活动</string>
<string name="uninstall">卸载</string> <string name="uninstall">卸载</string>
<string name="unknown">未知</string> <string name="unknown">未知</string>
<string name="unknown_error_DESC">未知错误。</string> <string name="unknown_error_DESC">未知错误。</string>
<string name="unknown_FORMAT">未知: %s</string> <string name="unknown_FORMAT">未知: %s</string>
<string name="unsigned">未签名</string> <string name="unsigned">未签名</string>
<string name="unstable_updates">不稳定的更新</string> <string name="unstable_updates">不稳定的更新</string>
<string name="unstable_updates_summary">建议安装不稳定的版本</string> <string name="unstable_updates_summary">建议安装不稳定的版本</string>
<string name="unverified">未验证</string> <string name="unverified">未验证</string>
<string name="update">更新</string> <string name="update">更新</string>
<string name="updates">更新</string> <string name="updates">更新</string>
<string name="upstream_source_code_is_not_free">上游源代码不是自由的</string> <string name="upstream_source_code_is_not_free">上游源代码不是自由的</string>
<string name="username">用户名</string> <string name="username">用户名</string>
<string name="username_missing">缺少用户名</string> <string name="username_missing">缺少用户名</string>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<attr name="colorError" format="color" /> <attr name="colorError" format="color" />
<attr name="colorOnBackground" format="reference" /> <attr name="colorOnBackground" format="reference" />
<attr name="subTextColor" format="reference" /> <attr name="subTextColor" format="reference" />
</resources> </resources>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<item type="id" name="sections_list" /> <item name="sections_list" type="id" />
<item type="id" name="divider_configuration" /> <item name="divider_configuration" type="id" />
<item type="id" name="fragment_pager" /> <item name="fragment_pager" type="id" />
<item type="id" name="main_content" /> <item name="main_content" type="id" />
<item type="id" name="preferences_list" /> <item name="preferences_list" type="id" />
<item type="id" name="toolbar_search" /> <item name="toolbar_search" type="id" />
</resources> </resources>

View File

@ -1,172 +1,172 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="action_failed">Action failed</string> <string name="action_failed">Action failed</string>
<string name="add_repository">Add repository</string> <string name="add_repository">Add repository</string>
<string name="address">Address</string> <string name="address">Address</string>
<string name="all_applications">All applications</string> <string name="all_applications">All applications</string>
<string name="all_applications_up_to_date">All applications up to date</string> <string name="all_applications_up_to_date">All applications up to date</string>
<string name="already_exists">Already exists</string> <string name="already_exists">Already exists</string>
<string name="always">Always</string> <string name="always">Always</string>
<string name="amoled">Amoled</string> <string name="amoled">Amoled</string>
<string name="anti_features">Anti-features</string> <string name="anti_features">Anti-features</string>
<string name="application">Application</string> <string name="application">Application</string>
<string name="application_name" translatable="false">Droid-ify</string> <string name="application_name" translatable="false">Droid-ify</string>
<string name="application_not_found">Application not found</string> <string name="application_not_found">Application not found</string>
<string name="author_email">Author email</string> <string name="author_email">Author email</string>
<string name="author_website">Author website</string> <string name="author_website">Author website</string>
<string name="available">Available</string> <string name="available">Available</string>
<string name="bug_tracker">Bug tracker</string> <string name="bug_tracker">Bug tracker</string>
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="cant_edit_sync_DESC">Cannot edit repository since it is syncing right now.</string> <string name="cant_edit_sync_DESC">Cannot edit repository since it is syncing right now.</string>
<string name="changelog">Changelog</string> <string name="changelog">Changelog</string>
<string name="changes">Changes</string> <string name="changes">Changes</string>
<string name="checking_repository">Checking repository</string> <string name="checking_repository">Checking repository</string>
<string name="compiled_for_debugging">Compiled for debugging</string> <string name="compiled_for_debugging">Compiled for debugging</string>
<string name="confirmation">Confirmation</string> <string name="confirmation">Confirmation</string>
<string name="connecting">Connecting</string> <string name="connecting">Connecting</string>
<string name="contains_non_free_media">Contains non-free media</string> <string name="contains_non_free_media">Contains non-free media</string>
<string name="could_not_download_FORMAT">Could not download %s</string> <string name="could_not_download_FORMAT">Could not download %s</string>
<string name="could_not_sync_FORMAT">Could not sync %s</string> <string name="could_not_sync_FORMAT">Could not sync %s</string>
<string name="could_not_validate_FORMAT">Could not validate %s</string> <string name="could_not_validate_FORMAT">Could not validate %s</string>
<string name="credits">Credits</string> <string name="credits">Credits</string>
<string name="dark">Dark</string> <string name="dark">Dark</string>
<string name="date_added">Date added</string> <string name="date_added">Date added</string>
<string name="delete">Delete</string> <string name="delete">Delete</string>
<string name="delete_repository_DESC">Are you sure you want to delete the repository?</string> <string name="delete_repository_DESC">Are you sure you want to delete the repository?</string>
<string name="description">Description</string> <string name="description">Description</string>
<string name="details">Details</string> <string name="details">Details</string>
<string name="donate">Donate</string> <string name="donate">Donate</string>
<string name="downloaded_FORMAT">Downloaded %s</string> <string name="downloaded_FORMAT">Downloaded %s</string>
<string name="downloading">Downloading</string> <string name="downloading">Downloading</string>
<string name="downloading_FORMAT">Downloading %s</string> <string name="downloading_FORMAT">Downloading %s</string>
<string name="edit_repository">Edit repository</string> <string name="edit_repository">Edit repository</string>
<string name="file_format_error_DESC">Invalid file format.</string> <string name="file_format_error_DESC">Invalid file format.</string>
<string name="fingerprint">Fingerprint</string> <string name="fingerprint">Fingerprint</string>
<string name="has_advertising">Has advertising</string> <string name="has_advertising">Has advertising</string>
<string name="has_non_free_dependencies">Has non-free dependencies</string> <string name="has_non_free_dependencies">Has non-free dependencies</string>
<string name="has_security_vulnerabilities">Has security vulnerabilities</string> <string name="has_security_vulnerabilities">Has security vulnerabilities</string>
<string name="http_error_DESC">Invalid server response.</string> <string name="http_error_DESC">Invalid server response.</string>
<string name="http_proxy">HTTP proxy</string> <string name="http_proxy">HTTP proxy</string>
<string name="ignore_all_updates">Ignore all updates</string> <string name="ignore_all_updates">Ignore all updates</string>
<string name="ignore_this_update">Ignore this update</string> <string name="ignore_this_update">Ignore this update</string>
<string name="incompatible_api_DESC_FORMAT">Your %1$s (API version %2$d) is not supported. %3$s</string> <string name="incompatible_api_DESC_FORMAT">Your %1$s (API version %2$d) is not supported. %3$s</string>
<string name="incompatible_api_max_DESC_FORMAT">Maximum API version is %d.</string> <string name="incompatible_api_max_DESC_FORMAT">Maximum API version is %d.</string>
<string name="incompatible_api_min_DESC_FORMAT">Minimum API version is %d.</string> <string name="incompatible_api_min_DESC_FORMAT">Minimum API version is %d.</string>
<string name="incompatible_features_DESC">Missing features.</string> <string name="incompatible_features_DESC">Missing features.</string>
<string name="incompatible_older_DESC">This version is older than the one installed on your device. <string name="incompatible_older_DESC">This version is older than the one installed on your device.
Uninstall that first.</string> Uninstall that first.</string>
<string name="incompatible_platforms_DESC_FORMAT">Your %1$s platform is not supported. <string name="incompatible_platforms_DESC_FORMAT">Your %1$s platform is not supported.
Supported platforms: %2$s.</string> Supported platforms: %2$s.</string>
<string name="incompatible_signature_DESC">This version is signed with a different certificate than the one <string name="incompatible_signature_DESC">This version is signed with a different certificate than the one
installed on your device. Uninstall that first.</string> installed on your device. Uninstall that first.</string>
<string name="incompatible_version">Incompatible version</string> <string name="incompatible_version">Incompatible version</string>
<string name="incompatible_versions">Incompatible versions</string> <string name="incompatible_versions">Incompatible versions</string>
<string name="incompatible_versions_summary">Show application versions incompatible with the device</string> <string name="incompatible_versions_summary">Show application versions incompatible with the device</string>
<string name="incompatible_with_FORMAT">Incompatible with %s</string> <string name="incompatible_with_FORMAT">Incompatible with %s</string>
<string name="install">Install</string> <string name="install">Install</string>
<string name="install_types">Installation Types</string> <string name="install_types">Installation Types</string>
<string name="installed">Installed</string> <string name="installed">Installed</string>
<string name="integrity_check_error_DESC">Could not check integrity.</string> <string name="integrity_check_error_DESC">Could not check integrity.</string>
<string name="invalid_address">Invalid address</string> <string name="invalid_address">Invalid address</string>
<string name="invalid_fingerprint_format">Invalid fingerprint format</string> <string name="invalid_fingerprint_format">Invalid fingerprint format</string>
<string name="invalid_metadata_error_DESC">Invalid metadata.</string> <string name="invalid_metadata_error_DESC">Invalid metadata.</string>
<string name="invalid_permissions_error_DESC">Invalid permissions.</string> <string name="invalid_permissions_error_DESC">Invalid permissions.</string>
<string name="invalid_signature_error_DESC">Invalid signature.</string> <string name="invalid_signature_error_DESC">Invalid signature.</string>
<string name="invalid_username_format">Invalid username format</string> <string name="invalid_username_format">Invalid username format</string>
<string name="last_update">Last update</string> <string name="last_update">Last update</string>
<string name="launch">Launch</string> <string name="launch">Launch</string>
<string name="license">License</string> <string name="license">License</string>
<string name="license_FORMAT">License %s</string> <string name="license_FORMAT">License %s</string>
<string name="light">Light</string> <string name="light">Light</string>
<string name="link_copied_to_clipboard">Link copied to clipboard</string> <string name="link_copied_to_clipboard">Link copied to clipboard</string>
<string name="links">Links</string> <string name="links">Links</string>
<string name="merging_FORMAT">Merging %s</string> <string name="merging_FORMAT">Merging %s</string>
<string name="name">Name</string> <string name="name">Name</string>
<string name="network_error_DESC">Network error.</string> <string name="network_error_DESC">Network error.</string>
<string name="never">Never</string> <string name="never">Never</string>
<string name="new_updates_available">New updates available</string> <string name="new_updates_available">New updates available</string>
<plurals name="new_updates_DESC_FORMAT"> <plurals name="new_updates_DESC_FORMAT">
<item quantity="one">%d new update.</item> <item quantity="one">%d new update.</item>
<item quantity="other">%d new updates.</item> <item quantity="other">%d new updates.</item>
</plurals> </plurals>
<string name="no_applications_available">No applications available</string> <string name="no_applications_available">No applications available</string>
<string name="no_applications_installed">No applications installed</string> <string name="no_applications_installed">No applications installed</string>
<string name="no_description_available_DESC">No description available.</string> <string name="no_description_available_DESC">No description available.</string>
<string name="no_matching_applications_found">No matching applications found</string> <string name="no_matching_applications_found">No matching applications found</string>
<string name="no_proxy">No proxy</string> <string name="no_proxy">No proxy</string>
<string name="notify_about_updates">Notify about updates</string> <string name="notify_about_updates">Notify about updates</string>
<string name="notify_about_updates_summary">Show a notification when updates are available</string> <string name="notify_about_updates_summary">Show a notification when updates are available</string>
<string name="number_of_applications">Number of applications</string> <string name="number_of_applications">Number of applications</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="only_compatible_with_FORMAT">Only compatible with %s</string> <string name="only_compatible_with_FORMAT">Only compatible with %s</string>
<string name="only_on_wifi">Only on Wi-Fi</string> <string name="only_on_wifi">Only on Wi-Fi</string>
<string name="open_DESC_FORMAT">Open %s?</string> <string name="open_DESC_FORMAT">Open %s?</string>
<string name="other">Other</string> <string name="other">Other</string>
<string name="parsing_index_error_DESC">Could not parse the index file.</string> <string name="parsing_index_error_DESC">Could not parse the index file.</string>
<string name="password">Password</string> <string name="password">Password</string>
<string name="password_missing">Password missing</string> <string name="password_missing">Password missing</string>
<string name="permissions">Permissions</string> <string name="permissions">Permissions</string>
<string name="plus_more_FORMAT">+%d more</string> <string name="plus_more_FORMAT">+%d more</string>
<string name="settings">Settings</string> <string name="settings">Settings</string>
<string name="processing_FORMAT">Processing %1$s</string> <string name="processing_FORMAT">Processing %1$s</string>
<string name="project_website">Project website</string> <string name="project_website">Project website</string>
<string name="promotes_non_free_network_services">Promotes non-free network services</string> <string name="promotes_non_free_network_services">Promotes non-free network services</string>
<string name="promotes_non_free_software">Promotes non-free software</string> <string name="promotes_non_free_software">Promotes non-free software</string>
<string name="provided_by_FORMAT">Provided by %s</string> <string name="provided_by_FORMAT">Provided by %s</string>
<string name="proxy">Proxy</string> <string name="proxy">Proxy</string>
<string name="proxy_host">Proxy host</string> <string name="proxy_host">Proxy host</string>
<string name="proxy_port">Proxy port</string> <string name="proxy_port">Proxy port</string>
<string name="proxy_type">Proxy type</string> <string name="proxy_type">Proxy type</string>
<string name="repositories">Repositories</string> <string name="repositories">Repositories</string>
<string name="repository">Repository</string> <string name="repository">Repository</string>
<string name="repository_not_used_DESC">This repository has not been used yet. You need to enable it to view <string name="repository_not_used_DESC">This repository has not been used yet. You need to enable it to view
the applications it provides.</string> the applications it provides.</string>
<string name="repository_unsigned_DESC">Unsigned. Could not verify the application list. Be careful downloading <string name="repository_unsigned_DESC">Unsigned. Could not verify the application list. Be careful downloading
applications from unsigned repositories.</string> applications from unsigned repositories.</string>
<string name="requires_FORMAT">Requires %s</string> <string name="requires_FORMAT">Requires %s</string>
<string name="root_permission">Silent Install</string> <string name="root_permission">Silent Install</string>
<string name="root_permission_description">Allow Root Permission to enable Silent Install</string> <string name="root_permission_description">Allow Root Permission to enable Silent Install</string>
<string name="save">Save</string> <string name="save">Save</string>
<string name="saving_details">Saving details</string> <string name="saving_details">Saving details</string>
<string name="screenshots">Screenshots</string> <string name="screenshots">Screenshots</string>
<string name="search">Search</string> <string name="search">Search</string>
<string name="select_mirror">Select a mirror</string> <string name="select_mirror">Select a mirror</string>
<string name="show_more">Show more</string> <string name="show_more">Show more</string>
<string name="show_older_versions">Show older versions</string> <string name="show_older_versions">Show older versions</string>
<string name="signature_FORMAT">Signature %s</string> <string name="signature_FORMAT">Signature %s</string>
<string name="signed_using_unsafe_algorithm">Signed using an unsafe algorithm</string> <string name="signed_using_unsafe_algorithm">Signed using an unsafe algorithm</string>
<string name="skip">Skip</string> <string name="skip">Skip</string>
<string name="socks_proxy">SOCKS proxy</string> <string name="socks_proxy">SOCKS proxy</string>
<string name="sorting_order">Sorting order</string> <string name="sorting_order">Sorting order</string>
<string name="source_code">Source code</string> <string name="source_code">Source code</string>
<string name="source_code_no_longer_available">Source code no longer available</string> <string name="source_code_no_longer_available">Source code no longer available</string>
<string name="suggested">Suggested</string> <string name="suggested">Suggested</string>
<string name="sync_repositories">Sync repositories</string> <string name="sync_repositories">Sync repositories</string>
<string name="sync_repositories_automatically">Sync repositories automatically</string> <string name="sync_repositories_automatically">Sync repositories automatically</string>
<string name="syncing">Syncing</string> <string name="syncing">Syncing</string>
<string name="syncing_FORMAT">Syncing %s</string> <string name="syncing_FORMAT">Syncing %s</string>
<string name="system">System</string> <string name="system">System</string>
<string name="tap_to_install_DESC">Tap to install.</string> <string name="tap_to_install_DESC">Tap to install.</string>
<string name="theme">Theme</string> <string name="theme">Theme</string>
<string name="themes">Themes</string> <string name="themes">Themes</string>
<string name="tracks_or_reports_your_activity">Tracks or reports your activity</string> <string name="tracks_or_reports_your_activity">Tracks or reports your activity</string>
<string name="uninstall">Uninstall</string> <string name="uninstall">Uninstall</string>
<string name="unknown">Unknown</string> <string name="unknown">Unknown</string>
<string name="unknown_error_DESC">Unknown error.</string> <string name="unknown_error_DESC">Unknown error.</string>
<string name="unknown_FORMAT">Unknown: %s</string> <string name="unknown_FORMAT">Unknown: %s</string>
<string name="unsigned">Unsigned</string> <string name="unsigned">Unsigned</string>
<string name="unstable_updates">Unstable updates</string> <string name="unstable_updates">Unstable updates</string>
<string name="unstable_updates_summary">Suggest installing unstable versions</string> <string name="unstable_updates_summary">Suggest installing unstable versions</string>
<string name="unverified">Unverified</string> <string name="unverified">Unverified</string>
<string name="update">Update</string> <string name="update">Update</string>
<string name="updates">Updates</string> <string name="updates">Updates</string>
<string name="upstream_source_code_is_not_free">Upstream source code is not free</string> <string name="upstream_source_code_is_not_free">Upstream source code is not free</string>
<string name="username">Username</string> <string name="username">Username</string>
<string name="username_missing">Username missing</string> <string name="username_missing">Username missing</string>
<string name="validation_index_error_DESC">Index could not be validated.</string> <string name="validation_index_error_DESC">Index could not be validated.</string>
<string name="version_FORMAT">Version %s</string> <string name="version_FORMAT">Version %s</string>
<string name="versions">Versions</string> <string name="versions">Versions</string>
<string name="waiting_to_start_download">Waiting to start download</string> <string name="waiting_to_start_download">Waiting to start download</string>
<string name="website">Website</string> <string name="website">Website</string>
</resources> </resources>