mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-09 19:03:55 +01:00
Compare commits
20 Commits
v5.43.0-de
...
v5.43.2-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
14dd7346a8 | ||
|
|
0af8c8a766 | ||
|
|
96454c843b | ||
|
|
476ef0fae1 | ||
|
|
bbec724afb | ||
|
|
7a1dcbd4ee | ||
|
|
2a1e31860f | ||
|
|
949d6bdd19 | ||
|
|
7563990750 | ||
|
|
4b605eb270 | ||
|
|
c2d7a7fb8b | ||
|
|
a55560dc25 | ||
|
|
e8522d703e | ||
|
|
068d029a03 | ||
|
|
0c19dbaf30 | ||
|
|
bf73ac8316 | ||
|
|
95eee59a87 | ||
|
|
566875ea53 | ||
|
|
10ea250d4a | ||
|
|
5bd0f11630 |
67
CHANGELOG.md
67
CHANGELOG.md
@@ -1,3 +1,70 @@
|
||||
## [5.43.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.43.1...v5.43.2-dev.1) (2025-10-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **X / Twitter - Change link sharing domain:** Use bytecode patching to resolve patching with Manager ([#6125](https://github.com/ReVanced/revanced-patches/issues/6125)) ([0af8c8a](https://github.com/ReVanced/revanced-patches/commit/0af8c8a766ae4ba6926404d59da2f14d649f91f7))
|
||||
|
||||
## [5.43.1](https://github.com/ReVanced/revanced-patches/compare/v5.43.0...v5.43.1) (2025-10-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **X / Twitter - Change link sharing domain:** Resolve duplicate patch option ([#6119](https://github.com/ReVanced/revanced-patches/issues/6119)) ([7563990](https://github.com/ReVanced/revanced-patches/commit/75639907502382f63fa127a886362d4a4573e6e3))
|
||||
* **X / Twitter:** Do not crash Manager when clicking on domain patch option ([2a1e318](https://github.com/ReVanced/revanced-patches/commit/2a1e31860f22f537d51b40a5b71d9ad9d538789e))
|
||||
|
||||
## [5.43.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.43.1-dev.1...v5.43.1-dev.2) (2025-10-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **X / Twitter:** Do not crash Manager when clicking on domain patch option ([2a1e318](https://github.com/ReVanced/revanced-patches/commit/2a1e31860f22f537d51b40a5b71d9ad9d538789e))
|
||||
|
||||
## [5.43.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.43.0...v5.43.1-dev.1) (2025-10-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **X / Twitter - Change link sharing domain:** Resolve duplicate patch option ([#6119](https://github.com/ReVanced/revanced-patches/issues/6119)) ([7563990](https://github.com/ReVanced/revanced-patches/commit/75639907502382f63fa127a886362d4a4573e6e3))
|
||||
|
||||
# [5.43.0](https://github.com/ReVanced/revanced-patches/compare/v5.42.1...v5.43.0) (2025-10-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Custom branding:** Use white notification icon for expanded status bar panel ([95eee59](https://github.com/ReVanced/revanced-patches/commit/95eee59a87a680e212a3ba06e1afefee8d91ee9d))
|
||||
* **Instagram - Change sharing domain:** Display patch option ([#6089](https://github.com/ReVanced/revanced-patches/issues/6089)) ([be2b144](https://github.com/ReVanced/revanced-patches/commit/be2b144cc9c4108ec37e16f3dd20573d88ffaa2b))
|
||||
* **X / Twitter - Change Link Sharing Domain:** Change link domain of share copy action ([#6091](https://github.com/ReVanced/revanced-patches/issues/6091)) ([5484625](https://github.com/ReVanced/revanced-patches/commit/54846253d748f4e7e30b2bba427c7d2fb9c341e2))
|
||||
* **YouTube - Custom branding:** Do not add a broken custom icon if the user provides an invalid custom icon path ([6555f6e](https://github.com/ReVanced/revanced-patches/commit/6555f6e6f8b52c2f1ddab1f52c6704cd2d8cfc12))
|
||||
* **YouTube - Custom branding:** Use ReVanced icon for status bar notification icon ([#6108](https://github.com/ReVanced/revanced-patches/issues/6108)) ([10ea250](https://github.com/ReVanced/revanced-patches/commit/10ea250d4a91f8ab3b7f865612a403fc93a857b5))
|
||||
* **YouTube - Force original audio:** Do not use translated audio if stream spoofing is off and force audio is on ([0c19dba](https://github.com/ReVanced/revanced-patches/commit/0c19dbaf30bcb95a29448d98b028ebeea54cc7d3))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Instagram:** Add `Hide suggested content` patch ([#6075](https://github.com/ReVanced/revanced-patches/issues/6075)) ([50f0b9c](https://github.com/ReVanced/revanced-patches/commit/50f0b9c5eee95ff5f9974e344802e1d2a4aab47b))
|
||||
|
||||
# [5.43.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.3...v5.43.0-dev.4) (2025-10-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Force original audio:** Do not use translated audio if stream spoofing is off and force audio is on ([0c19dba](https://github.com/ReVanced/revanced-patches/commit/0c19dbaf30bcb95a29448d98b028ebeea54cc7d3))
|
||||
|
||||
# [5.43.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.2...v5.43.0-dev.3) (2025-10-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Custom branding:** Use white notification icon for expanded status bar panel ([95eee59](https://github.com/ReVanced/revanced-patches/commit/95eee59a87a680e212a3ba06e1afefee8d91ee9d))
|
||||
|
||||
# [5.43.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.1...v5.43.0-dev.2) (2025-10-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Custom branding:** Use ReVanced icon for status bar notification icon ([#6108](https://github.com/ReVanced/revanced-patches/issues/6108)) ([10ea250](https://github.com/ReVanced/revanced-patches/commit/10ea250d4a91f8ab3b7f865612a403fc93a857b5))
|
||||
|
||||
# [5.43.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.42.2-dev.3...v5.43.0-dev.1) (2025-10-11)
|
||||
|
||||
|
||||
|
||||
@@ -5,8 +5,10 @@ import android.preference.PreferenceScreen;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import app.revanced.extension.music.settings.MusicActivityHook;
|
||||
import app.revanced.extension.shared.GmsCoreSupport;
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
|
||||
|
||||
/**
|
||||
@@ -30,6 +32,17 @@ public class MusicPreferenceFragment extends ToolbarPreferenceFragment {
|
||||
preferenceScreen = getPreferenceScreen();
|
||||
Utils.sortPreferenceGroups(preferenceScreen);
|
||||
setPreferenceScreenToolbar(preferenceScreen);
|
||||
|
||||
// Clunky work around until preferences are custom classes that manage themselves.
|
||||
// Custom branding only works with non-root install. But the preferences must be
|
||||
// added during patched because of difficulties detecting during patching if it's
|
||||
// a root install. So instead the non-functional preferences are removed during
|
||||
// runtime if the app is mount (root) installation.
|
||||
if (GmsCoreSupport.isPackageNameOriginal()) {
|
||||
removePreferences(
|
||||
BaseSettings.CUSTOM_BRANDING_ICON.key,
|
||||
BaseSettings.CUSTOM_BRANDING_NAME.key);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "initialize failure", ex);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package app.revanced.extension.shared.patches;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Color;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import app.revanced.extension.shared.GmsCoreSupport;
|
||||
import app.revanced.extension.shared.Logger;
|
||||
@@ -29,28 +32,56 @@ public class CustomBrandingPatch {
|
||||
// The most that can be done is to hide a theme from the UI and keep the alias with dummy data.
|
||||
public enum BrandingTheme {
|
||||
/**
|
||||
* Original unpatched icon. Must be first enum.
|
||||
* Original unpatched icon.
|
||||
*/
|
||||
ORIGINAL("revanced_original"),
|
||||
ROUNDED("revanced_rounded"),
|
||||
MINIMAL("revanced_minimal"),
|
||||
SCALED("revanced_scaled"),
|
||||
ORIGINAL,
|
||||
ROUNDED,
|
||||
MINIMAL,
|
||||
SCALED,
|
||||
/**
|
||||
* User provided custom icon. Must be the last enum.
|
||||
* User provided custom icon.
|
||||
*/
|
||||
CUSTOM("revanced_custom");
|
||||
|
||||
public final String themeAlias;
|
||||
|
||||
BrandingTheme(String themeAlias) {
|
||||
this.themeAlias = themeAlias;
|
||||
}
|
||||
CUSTOM;
|
||||
|
||||
private String packageAndNameIndexToClassAlias(String packageName, int appIndex) {
|
||||
if (appIndex <= 0) {
|
||||
throw new IllegalArgumentException("App index starts at index 1");
|
||||
}
|
||||
return packageName + '.' + themeAlias + '_' + appIndex;
|
||||
return packageName + ".revanced_" + name().toLowerCase(Locale.US) + '_' + appIndex;
|
||||
}
|
||||
}
|
||||
|
||||
private static final int notificationSmallIcon;
|
||||
|
||||
static {
|
||||
BrandingTheme branding = BaseSettings.CUSTOM_BRANDING_ICON.get();
|
||||
if (branding == BrandingTheme.ORIGINAL) {
|
||||
notificationSmallIcon = 0;
|
||||
} else {
|
||||
// Original icon is quantum_ic_video_youtube_white_24
|
||||
String iconName = "revanced_notification_icon";
|
||||
if (branding == BrandingTheme.CUSTOM) {
|
||||
iconName += "_custom";
|
||||
}
|
||||
|
||||
notificationSmallIcon = Utils.getResourceIdentifier(iconName, "drawable");
|
||||
if (notificationSmallIcon == 0) {
|
||||
Logger.printException(() -> "Could not load notification small icon");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void setNotificationIcon(Notification.Builder builder) {
|
||||
try {
|
||||
if (notificationSmallIcon != 0) {
|
||||
builder.setSmallIcon(notificationSmallIcon)
|
||||
.setColor(Color.TRANSPARENT); // Remove YT red tint.
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setNotificationIcon failure", ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.graphics.Insets;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceGroup;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.util.TypedValue;
|
||||
import android.view.ViewGroup;
|
||||
@@ -22,6 +23,24 @@ import app.revanced.extension.shared.settings.BaseActivityHook;
|
||||
|
||||
@SuppressWarnings({"deprecation", "NewApi"})
|
||||
public class ToolbarPreferenceFragment extends AbstractPreferenceFragment {
|
||||
|
||||
/**
|
||||
* Removes the list of preferences from this fragment, if they exist.
|
||||
* @param keys Preference keys.
|
||||
*/
|
||||
protected void removePreferences(String ... keys) {
|
||||
for (String key : keys) {
|
||||
Preference pref = findPreference(key);
|
||||
if (pref != null) {
|
||||
PreferenceGroup parent = pref.getParent();
|
||||
if (parent != null) {
|
||||
Logger.printDebug(() -> "Removing preference: " + key);
|
||||
parent.removePreference(pref);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets toolbar for all nested preference screens.
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@ package app.revanced.twitter.patches.links;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class ChangeLinkSharingDomainPatch {
|
||||
private static final String LINK_FORMAT = "%s/%s/status/%s";
|
||||
private static final String LINK_FORMAT = "https://%s/%s/status/%s";
|
||||
|
||||
/**
|
||||
* Method is modified during patching. Do not change.
|
||||
@@ -11,6 +11,16 @@ public final class ChangeLinkSharingDomainPatch {
|
||||
return "";
|
||||
}
|
||||
|
||||
// TODO remove this once changeLinkSharingDomainResourcePatch is restored
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static String formatResourceLink(Object... formatArgs) {
|
||||
String username = (String) formatArgs[0];
|
||||
String tweetId = (String) formatArgs[1];
|
||||
return String.format(LINK_FORMAT, getShareDomain(), username, tweetId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
|
||||
@@ -4,8 +4,10 @@ import android.app.Dialog;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import app.revanced.extension.shared.GmsCoreSupport;
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
|
||||
import app.revanced.extension.youtube.settings.YouTubeActivityHook;
|
||||
|
||||
@@ -30,6 +32,17 @@ public class YouTubePreferenceFragment extends ToolbarPreferenceFragment {
|
||||
preferenceScreen = getPreferenceScreen();
|
||||
Utils.sortPreferenceGroups(preferenceScreen);
|
||||
setPreferenceScreenToolbar(preferenceScreen);
|
||||
|
||||
// Clunky work around until preferences are custom classes that manage themselves.
|
||||
// Custom branding only works with non-root install. But the preferences must be
|
||||
// added during patched because of difficulties detecting during patching if it's
|
||||
// a root install. So instead the non-functional preferences are removed during
|
||||
// runtime if the app is mount (root) installation.
|
||||
if (GmsCoreSupport.isPackageNameOriginal()) {
|
||||
removePreferences(
|
||||
BaseSettings.CUSTOM_BRANDING_ICON.key,
|
||||
BaseSettings.CUSTOM_BRANDING_NAME.key);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "initialize failure", ex);
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.43.0-dev.1
|
||||
version = 5.43.2-dev.1
|
||||
|
||||
@@ -61,7 +61,7 @@ val customBrandingPatch = baseCustomBrandingPatch(
|
||||
originalLauncherIconName = "ic_launcher_release",
|
||||
originalAppName = "@string/app_launcher_name",
|
||||
originalAppPackageName = MUSIC_PACKAGE_NAME,
|
||||
copyExistingIntentsToAliases = false,
|
||||
isYouTubeMusic = true,
|
||||
numberOfPresetAppNames = 5,
|
||||
mainActivityOnCreateFingerprint = musicActivityOnCreateFingerprint,
|
||||
mainActivityName = MUSIC_MAIN_ACTIVITY_NAME,
|
||||
|
||||
@@ -27,7 +27,7 @@ val forceOriginalAudioPatch = forceOriginalAudioPatch(
|
||||
)
|
||||
)
|
||||
},
|
||||
fixUseLocalizedAudioTrackFlag = is_8_10_or_greater,
|
||||
fixUseLocalizedAudioTrackFlag = { is_8_10_or_greater },
|
||||
mainActivityOnCreateFingerprint = mainActivityOnCreateFingerprint,
|
||||
subclassExtensionClassDescriptor = EXTENSION_CLASS_DESCRIPTOR,
|
||||
preferenceScreen = PreferenceScreen.MISC,
|
||||
|
||||
@@ -4,14 +4,17 @@ package app.revanced.patches.music.playservice
|
||||
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.util.findPlayStoreServicesVersion
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
var is_7_33_or_greater = false
|
||||
// Use notNull delegate so an exception is thrown if these fields are accessed before they are set.
|
||||
|
||||
var is_7_33_or_greater: Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_8_10_or_greater = false
|
||||
var is_8_10_or_greater: Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_8_11_or_greater = false
|
||||
var is_8_11_or_greater: Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_8_15_or_greater = false
|
||||
var is_8_15_or_greater: Boolean by Delegates.notNull()
|
||||
private set
|
||||
|
||||
val versionCheckPatch = resourcePatch(
|
||||
|
||||
@@ -2,6 +2,7 @@ package app.revanced.patches.shared.layout.branding
|
||||
|
||||
import app.revanced.patcher.Fingerprint
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import app.revanced.patcher.patch.ResourcePatch
|
||||
import app.revanced.patcher.patch.ResourcePatchBuilder
|
||||
@@ -12,14 +13,24 @@ import app.revanced.patcher.patch.stringOption
|
||||
import app.revanced.patches.all.misc.packagename.setOrGetFallbackPackageName
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen
|
||||
import app.revanced.patches.shared.misc.settings.preference.ListPreference
|
||||
import app.revanced.util.ResourceGroup
|
||||
import app.revanced.util.Utils.trimIndentMultiline
|
||||
import app.revanced.util.addInstructionsAtControlFlowLabel
|
||||
import app.revanced.util.copyResources
|
||||
import app.revanced.util.findElementByAttributeValueOrThrow
|
||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||
import app.revanced.util.removeFromParent
|
||||
import app.revanced.util.returnEarly
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
|
||||
import org.w3c.dom.Element
|
||||
import org.w3c.dom.NodeList
|
||||
import java.io.File
|
||||
@@ -47,13 +58,15 @@ private const val LAUNCHER_RESOURCE_NAME_PREFIX = "revanced_launcher_"
|
||||
private const val LAUNCHER_ADAPTIVE_BACKGROUND_PREFIX = "revanced_adaptive_background_"
|
||||
private const val LAUNCHER_ADAPTIVE_FOREGROUND_PREFIX = "revanced_adaptive_foreground_"
|
||||
private const val LAUNCHER_ADAPTIVE_MONOCHROME_PREFIX = "revanced_adaptive_monochrome_"
|
||||
private const val NOTIFICATION_ICON_NAME = "revanced_notification_icon"
|
||||
|
||||
private val USER_CUSTOM_ADAPTIVE_FILE_NAMES = arrayOf(
|
||||
"$LAUNCHER_ADAPTIVE_BACKGROUND_PREFIX$CUSTOM_USER_ICON_STYLE_NAME.png",
|
||||
"$LAUNCHER_ADAPTIVE_FOREGROUND_PREFIX$CUSTOM_USER_ICON_STYLE_NAME.png"
|
||||
)
|
||||
|
||||
private const val USER_CUSTOM_MONOCHROME_NAME = "$LAUNCHER_ADAPTIVE_MONOCHROME_PREFIX$CUSTOM_USER_ICON_STYLE_NAME.xml"
|
||||
private const val USER_CUSTOM_MONOCHROME_FILE_NAME = "$LAUNCHER_ADAPTIVE_MONOCHROME_PREFIX$CUSTOM_USER_ICON_STYLE_NAME.xml"
|
||||
private const val USER_CUSTOM_NOTIFICATION_ICON_FILE_NAME = "${NOTIFICATION_ICON_NAME}_$CUSTOM_USER_ICON_STYLE_NAME.xml"
|
||||
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/shared/patches/CustomBrandingPatch;"
|
||||
|
||||
@@ -65,7 +78,7 @@ internal fun baseCustomBrandingPatch(
|
||||
originalLauncherIconName: String,
|
||||
originalAppName: String,
|
||||
originalAppPackageName: String,
|
||||
copyExistingIntentsToAliases: Boolean,
|
||||
isYouTubeMusic: Boolean,
|
||||
numberOfPresetAppNames: Int,
|
||||
mainActivityOnCreateFingerprint: Fingerprint,
|
||||
mainActivityName: String,
|
||||
@@ -96,8 +109,9 @@ internal fun baseCustomBrandingPatch(
|
||||
Each of the folders must contain all of the following files:
|
||||
${USER_CUSTOM_ADAPTIVE_FILE_NAMES.joinToString("\n")}
|
||||
|
||||
Optionally, the path can contain a 'drawable' folder with the monochrome icon file:
|
||||
$USER_CUSTOM_MONOCHROME_NAME
|
||||
Optionally, the path contains a 'drawable' folder with any of the monochrome icon files:
|
||||
$USER_CUSTOM_MONOCHROME_FILE_NAME
|
||||
$USER_CUSTOM_NOTIFICATION_ICON_FILE_NAME
|
||||
""".trimIndentMultiline()
|
||||
)
|
||||
|
||||
@@ -105,7 +119,7 @@ internal fun baseCustomBrandingPatch(
|
||||
|
||||
dependsOn(
|
||||
addResourcesPatch,
|
||||
|
||||
resourceMappingPatch,
|
||||
bytecodePatch {
|
||||
execute {
|
||||
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||
@@ -114,25 +128,68 @@ internal fun baseCustomBrandingPatch(
|
||||
)
|
||||
|
||||
numberOfPresetAppNamesExtensionFingerprint.method.returnEarly(numberOfPresetAppNames)
|
||||
|
||||
notificationFingerprint.method.apply {
|
||||
val getBuilderIndex = if (isYouTubeMusic) {
|
||||
// YT Music the field is not a plain object type.
|
||||
indexOfFirstInstructionOrThrow {
|
||||
getReference<FieldReference>()?.type == "Landroid/app/Notification\$Builder;"
|
||||
}
|
||||
} else {
|
||||
// Find the field name of the notification builder. Field is an Object type.
|
||||
val builderCastIndex = indexOfFirstInstructionOrThrow {
|
||||
val reference = getReference<TypeReference>()
|
||||
opcode == Opcode.CHECK_CAST &&
|
||||
reference?.type == "Landroid/app/Notification\$Builder;"
|
||||
}
|
||||
indexOfFirstInstructionReversedOrThrow(builderCastIndex) {
|
||||
getReference<FieldReference>()?.type == "Ljava/lang/Object;"
|
||||
}
|
||||
}
|
||||
|
||||
val builderFieldName = getInstruction<ReferenceInstruction>(getBuilderIndex)
|
||||
.getReference<FieldReference>()
|
||||
|
||||
findInstructionIndicesReversedOrThrow(
|
||||
Opcode.RETURN_VOID
|
||||
).forEach { index ->
|
||||
addInstructionsAtControlFlowLabel(
|
||||
index,
|
||||
"""
|
||||
move-object/from16 v0, p0
|
||||
iget-object v0, v0, $builderFieldName
|
||||
check-cast v0, Landroid/app/Notification${'$'}Builder;
|
||||
invoke-static { v0 }, $EXTENSION_CLASS_DESCRIPTOR->setNotificationIcon(Landroid/app/Notification${'$'}Builder;)V
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
finalize {
|
||||
val useCustomName = customName != null
|
||||
val useCustomIcon = customIcon != null
|
||||
|
||||
if (setOrGetFallbackPackageName(originalAppPackageName) == originalAppPackageName) {
|
||||
if (useCustomName || useCustomIcon) {
|
||||
// Can only check if app is root installation by checking if change package name patch is in use.
|
||||
// and can only do that in the finalize block here.
|
||||
// The UI preferences cannot be selectively added here, because the settings finalize block
|
||||
// may have already run and the settings are already wrote to file.
|
||||
// Instead, show a warning if any patch option was used (A rooted device launcher ignores the manifest changes),
|
||||
// and the non-functional in-app settings are removed on app startup by extension code.
|
||||
if (customName != null || customIcon != null) {
|
||||
if (setOrGetFallbackPackageName(originalAppPackageName) == originalAppPackageName) {
|
||||
Logger.getLogger(this::class.java.name).warning(
|
||||
"Custom branding does not work with root installation. No changes applied."
|
||||
)
|
||||
}
|
||||
return@finalize
|
||||
}
|
||||
}
|
||||
|
||||
execute {
|
||||
addResources("shared", "layout.branding.baseCustomBrandingPatch")
|
||||
addResources(addResourcePatchName, "layout.branding.customBrandingPatch")
|
||||
|
||||
preferenceScreen.addPreferences(
|
||||
if (useCustomName) {
|
||||
if (customName != null ) {
|
||||
ListPreference(
|
||||
key = "revanced_custom_branding_name",
|
||||
entriesKey = "revanced_custom_branding_name_custom_entries",
|
||||
@@ -141,7 +198,7 @@ internal fun baseCustomBrandingPatch(
|
||||
} else {
|
||||
ListPreference("revanced_custom_branding_name")
|
||||
},
|
||||
if (useCustomIcon) {
|
||||
if (customIcon != null) {
|
||||
ListPreference(
|
||||
key = "revanced_custom_branding_icon",
|
||||
entriesKey = "revanced_custom_branding_icon_custom_entries",
|
||||
@@ -151,11 +208,6 @@ internal fun baseCustomBrandingPatch(
|
||||
ListPreference("revanced_custom_branding_icon")
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
execute {
|
||||
addResources("shared", "layout.branding.baseCustomBrandingPatch")
|
||||
addResources(addResourcePatchName, "layout.branding.customBrandingPatch")
|
||||
|
||||
val useCustomName = customName != null
|
||||
val useCustomIcon = customIcon != null
|
||||
@@ -167,7 +219,7 @@ internal fun baseCustomBrandingPatch(
|
||||
"drawable",
|
||||
"$LAUNCHER_ADAPTIVE_BACKGROUND_PREFIX$style.xml",
|
||||
"$LAUNCHER_ADAPTIVE_FOREGROUND_PREFIX$style.xml",
|
||||
"$LAUNCHER_ADAPTIVE_MONOCHROME_PREFIX$style.xml"
|
||||
"$LAUNCHER_ADAPTIVE_MONOCHROME_PREFIX$style.xml",
|
||||
),
|
||||
ResourceGroup(
|
||||
"mipmap-anydpi",
|
||||
@@ -176,20 +228,27 @@ internal fun baseCustomBrandingPatch(
|
||||
)
|
||||
}
|
||||
|
||||
// Copy template user icon, because the aliases must be added even if no user icon is provided.
|
||||
copyResources(
|
||||
"custom-branding",
|
||||
ResourceGroup(
|
||||
"mipmap-anydpi",
|
||||
"$LAUNCHER_RESOURCE_NAME_PREFIX$CUSTOM_USER_ICON_STYLE_NAME.xml",
|
||||
),
|
||||
// Push notification 'small' icon.
|
||||
ResourceGroup(
|
||||
"drawable",
|
||||
"$LAUNCHER_ADAPTIVE_MONOCHROME_PREFIX$CUSTOM_USER_ICON_STYLE_NAME.xml",
|
||||
"$NOTIFICATION_ICON_NAME.xml"
|
||||
),
|
||||
|
||||
// Copy template user icon, because the aliases must be added even if no user icon is provided.
|
||||
ResourceGroup(
|
||||
"drawable",
|
||||
USER_CUSTOM_MONOCHROME_FILE_NAME,
|
||||
USER_CUSTOM_NOTIFICATION_ICON_FILE_NAME
|
||||
),
|
||||
ResourceGroup(
|
||||
"mipmap-anydpi",
|
||||
"$LAUNCHER_RESOURCE_NAME_PREFIX$CUSTOM_USER_ICON_STYLE_NAME.xml"
|
||||
)
|
||||
)
|
||||
|
||||
// Copy template icon png files.
|
||||
// Copy template icon files.
|
||||
mipmapDirectories.forEach { dpi ->
|
||||
copyResources(
|
||||
"custom-branding",
|
||||
@@ -232,13 +291,7 @@ internal fun baseCustomBrandingPatch(
|
||||
alias.setAttribute("android:targetActivity", mainActivityName)
|
||||
|
||||
// Copy all intents from the original alias so long press actions still work.
|
||||
if (copyExistingIntentsToAliases) {
|
||||
for (i in 0 until intents.length) {
|
||||
alias.appendChild(
|
||||
intents.item(i).cloneNode(true)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (isYouTubeMusic) {
|
||||
val intentFilter = document.createElement("intent-filter").apply {
|
||||
val action = document.createElement("action")
|
||||
action.setAttribute("android:name", "android.intent.action.MAIN")
|
||||
@@ -249,6 +302,12 @@ internal fun baseCustomBrandingPatch(
|
||||
appendChild(category)
|
||||
}
|
||||
alias.appendChild(intentFilter)
|
||||
} else {
|
||||
for (i in 0 until intents.length) {
|
||||
alias.appendChild(
|
||||
intents.item(i).cloneNode(true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return alias
|
||||
@@ -375,15 +434,20 @@ internal fun baseCustomBrandingPatch(
|
||||
}
|
||||
}
|
||||
|
||||
// Copy monochrome if it provided.
|
||||
val monochromeRelativePath = "drawable/$USER_CUSTOM_MONOCHROME_NAME"
|
||||
val monochromeFile = iconPathFile.resolve(monochromeRelativePath)
|
||||
if (monochromeFile.exists()) {
|
||||
monochromeFile.copyTo(
|
||||
target = resourceDirectory.resolve(monochromeRelativePath),
|
||||
overwrite = true
|
||||
)
|
||||
copiedFiles = true
|
||||
// Copy monochrome and small notification icon if it provided.
|
||||
arrayOf(
|
||||
USER_CUSTOM_MONOCHROME_FILE_NAME,
|
||||
USER_CUSTOM_NOTIFICATION_ICON_FILE_NAME
|
||||
).forEach { fileName ->
|
||||
val relativePath = "drawable/$fileName"
|
||||
val file = iconPathFile.resolve(relativePath)
|
||||
if (file.exists()) {
|
||||
file.copyTo(
|
||||
target = resourceDirectory.resolve(relativePath),
|
||||
overwrite = true
|
||||
)
|
||||
copiedFiles = true
|
||||
}
|
||||
}
|
||||
|
||||
if (!copiedFiles) {
|
||||
|
||||
@@ -11,3 +11,11 @@ internal val numberOfPresetAppNamesExtensionFingerprint = fingerprint {
|
||||
method.name == "numberOfPresetAppNames" && classDef.type == EXTENSION_CLASS_DESCRIPTOR
|
||||
}
|
||||
}
|
||||
|
||||
// A much simpler fingerprint exists that can set the small icon (contains string "414843287017"),
|
||||
// but that has limited usage and this fingerprint allows changing any part of the notification.
|
||||
internal val notificationFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
parameters("L")
|
||||
strings("key_action_priority")
|
||||
}
|
||||
|
||||
@@ -27,4 +27,3 @@ internal val selectAudioStreamFingerprint = fingerprint {
|
||||
&& method.containsLiteralInstruction(AUDIO_STREAM_IGNORE_DEFAULT_FEATURE_FLAG)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
internal fun forceOriginalAudioPatch(
|
||||
block: BytecodePatchBuilder.() -> Unit = {},
|
||||
executeBlock: BytecodePatchContext.() -> Unit = {},
|
||||
fixUseLocalizedAudioTrackFlag: Boolean,
|
||||
fixUseLocalizedAudioTrackFlag: () -> Boolean,
|
||||
mainActivityOnCreateFingerprint: Fingerprint,
|
||||
subclassExtensionClassDescriptor: String,
|
||||
preferenceScreen: BasePreferenceScreen.Screen
|
||||
@@ -64,7 +64,7 @@ internal fun forceOriginalAudioPatch(
|
||||
|
||||
// Disable feature flag that ignores the default track flag
|
||||
// and instead overrides to the user region language.
|
||||
if (fixUseLocalizedAudioTrackFlag) {
|
||||
if (fixUseLocalizedAudioTrackFlag()) {
|
||||
selectAudioStreamFingerprint.method.insertLiteralOverride(
|
||||
AUDIO_STREAM_IGNORE_DEFAULT_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->ignoreDefaultAudioStream(Z)Z"
|
||||
|
||||
@@ -47,11 +47,15 @@ val changeLyricsProviderPatch = bytecodePatch(
|
||||
// may not allow network connections or the network may be down.
|
||||
try {
|
||||
InetAddress.getByName(host)
|
||||
} catch (e: UnknownHostException) {
|
||||
} catch (_: UnknownHostException) {
|
||||
Logger.getLogger(this::class.java.name).warning(
|
||||
"Host \"$host\" did not resolve to any domain."
|
||||
)
|
||||
} catch (_: Exception) {
|
||||
// Must ignore any kind of exception. Trying to resolve network
|
||||
// on Manager throws android.os.NetworkOnMainThreadException
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
package app.revanced.patches.twitter.misc.links
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.patcher.patch.stringOption
|
||||
import app.revanced.patches.shared.PATCH_DESCRIPTION_CHANGE_LINK_SHARING_DOMAIN
|
||||
import app.revanced.patches.shared.PATCH_NAME_CHANGE_LINK_SHARING_DOMAIN
|
||||
import app.revanced.patches.twitter.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.util.findElementByAttributeValueOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.returnEarly
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import java.net.InetAddress
|
||||
import java.net.UnknownHostException
|
||||
import java.util.logging.Logger
|
||||
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/twitter/patches/links/ChangeLinkSharingDomainPatch;"
|
||||
|
||||
internal val domainNameOption by stringOption(
|
||||
internal val domainNameOption = stringOption(
|
||||
key = "domainName",
|
||||
default = "https://fxtwitter.com",
|
||||
default = "fxtwitter.com",
|
||||
title = "Domain name",
|
||||
description = "The domain name to use when sharing links.",
|
||||
required = true,
|
||||
@@ -28,23 +31,25 @@ internal val domainNameOption by stringOption(
|
||||
// may not allow network connections or the network may be down.
|
||||
try {
|
||||
InetAddress.getByName(it)
|
||||
} catch (e: UnknownHostException) {
|
||||
} catch (_: UnknownHostException) {
|
||||
Logger.getLogger(this::class.java.name).warning(
|
||||
"Host \"$it\" did not resolve to any domain."
|
||||
)
|
||||
} catch (_: Exception) {
|
||||
// Must ignore any kind of exception. Trying to resolve network
|
||||
// on Manager throws android.os.NetworkOnMainThreadException
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
|
||||
// TODO restore this once Manager uses a fixed version of Patcher
|
||||
/*
|
||||
internal val changeLinkSharingDomainResourcePatch = resourcePatch {
|
||||
execute {
|
||||
val domainName = domainNameOption!!
|
||||
val domainName = domainNameOption.value!!
|
||||
|
||||
val shareLinkTemplate = if (domainName.endsWith("/")) {
|
||||
"$domainName%1\$s/status/%2\$s"
|
||||
} else {
|
||||
"$domainName/%1\$s/status/%2\$s"
|
||||
}
|
||||
val shareLinkTemplate = "https://$domainName/%1\$s/status/%2\$s"
|
||||
|
||||
document("res/values/strings.xml").use { document ->
|
||||
document.documentElement.childNodes.findElementByAttributeValueOrThrow(
|
||||
@@ -54,14 +59,15 @@ internal val changeLinkSharingDomainResourcePatch = resourcePatch {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@Suppress("unused")
|
||||
val changeLinkSharingDomainPatch = bytecodePatch(
|
||||
name = PATCH_NAME_CHANGE_LINK_SHARING_DOMAIN,
|
||||
description = PATCH_DESCRIPTION_CHANGE_LINK_SHARING_DOMAIN
|
||||
description = PATCH_DESCRIPTION_CHANGE_LINK_SHARING_DOMAIN,
|
||||
use = false
|
||||
) {
|
||||
dependsOn(
|
||||
changeLinkSharingDomainResourcePatch,
|
||||
sharedExtensionPatch,
|
||||
)
|
||||
|
||||
@@ -72,11 +78,11 @@ val changeLinkSharingDomainPatch = bytecodePatch(
|
||||
)
|
||||
)
|
||||
|
||||
execute {
|
||||
val domainName = domainNameOption!!
|
||||
val domainName by domainNameOption()
|
||||
|
||||
execute {
|
||||
// Replace the domain name in the link sharing extension methods.
|
||||
linkSharingDomainHelperFingerprint.method.returnEarly(domainName)
|
||||
linkSharingDomainHelperFingerprint.method.returnEarly(domainName!!)
|
||||
|
||||
// Replace the domain name when copying a link with "Copy link" button.
|
||||
linkBuilderFingerprint.method.addInstructions(
|
||||
@@ -87,5 +93,22 @@ val changeLinkSharingDomainPatch = bytecodePatch(
|
||||
return-object p0
|
||||
"""
|
||||
)
|
||||
|
||||
// TODO remove this once changeLinkSharingDomainResourcePatch is restored
|
||||
// Replace the domain name in the "Share via..." dialog.
|
||||
linkResourceGetterFingerprint.method.apply {
|
||||
val templateIdConstIndex = indexOfFirstInstructionOrThrow(Opcode.CONST)
|
||||
|
||||
// Format the link with the new domain name register (1 instruction below the const).
|
||||
val formatLinkCallIndex = templateIdConstIndex + 1
|
||||
val register = getInstruction<FiveRegisterInstruction>(formatLinkCallIndex).registerE
|
||||
|
||||
// Replace the original method call with the new method call.
|
||||
replaceInstruction(
|
||||
formatLinkCallIndex,
|
||||
"invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->" +
|
||||
"formatResourceLink([Ljava/lang/Object;)Ljava/lang/String;",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package app.revanced.patches.twitter.misc.links
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val openLinkFingerprint = fingerprint {
|
||||
returns("V")
|
||||
@@ -17,6 +18,18 @@ internal val linkBuilderFingerprint = fingerprint {
|
||||
strings("/%1\$s/status/%2\$d")
|
||||
}
|
||||
|
||||
// TODO remove this once changeLinkSharingDomainResourcePatch is restored
|
||||
// Returns a shareable link for the "Share via..." dialog.
|
||||
internal val linkResourceGetterFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
parameters("Landroid/content/res/Resources;")
|
||||
custom { _, classDef ->
|
||||
classDef.fields.any { field ->
|
||||
field.type.startsWith("Lcom/twitter/model/core/")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal val linkSharingDomainHelperFingerprint = fingerprint {
|
||||
custom { method, classDef ->
|
||||
method.name == "getShareDomain" && classDef.type == EXTENSION_CLASS_DESCRIPTOR
|
||||
|
||||
@@ -13,7 +13,7 @@ val customBrandingPatch = baseCustomBrandingPatch(
|
||||
originalLauncherIconName = "ic_launcher",
|
||||
originalAppName = "@string/application_name",
|
||||
originalAppPackageName = YOUTUBE_PACKAGE_NAME,
|
||||
copyExistingIntentsToAliases = true,
|
||||
isYouTubeMusic = false,
|
||||
numberOfPresetAppNames = 5,
|
||||
mainActivityOnCreateFingerprint = mainActivityOnCreateFingerprint,
|
||||
mainActivityName = YOUTUBE_MAIN_ACTIVITY_NAME,
|
||||
|
||||
@@ -4,72 +4,75 @@ package app.revanced.patches.youtube.misc.playservice
|
||||
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.util.findPlayStoreServicesVersion
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
// Use notNull delegate so an exception is thrown if these fields are accessed before they are set.
|
||||
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_03_or_greater = false
|
||||
var is_19_03_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_04_or_greater = false
|
||||
var is_19_04_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_16_or_greater = false
|
||||
var is_19_16_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_17_or_greater = false
|
||||
var is_19_17_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_18_or_greater = false
|
||||
var is_19_18_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_23_or_greater = false
|
||||
var is_19_23_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_25_or_greater = false
|
||||
var is_19_25_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_26_or_greater = false
|
||||
var is_19_26_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_29_or_greater = false
|
||||
var is_19_29_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_32_or_greater = false
|
||||
var is_19_32_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_33_or_greater = false
|
||||
var is_19_33_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
@Deprecated("19.34.42 is the lowest supported version")
|
||||
var is_19_34_or_greater = false
|
||||
var is_19_34_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_19_35_or_greater = false
|
||||
var is_19_35_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_19_36_or_greater = false
|
||||
var is_19_36_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_19_41_or_greater = false
|
||||
var is_19_41_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_19_43_or_greater = false
|
||||
var is_19_43_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_19_46_or_greater = false
|
||||
var is_19_46_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_19_47_or_greater = false
|
||||
var is_19_47_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_19_49_or_greater = false
|
||||
var is_19_49_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_02_or_greater = false
|
||||
var is_20_02_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_03_or_greater = false
|
||||
var is_20_03_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_05_or_greater = false
|
||||
var is_20_05_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_07_or_greater = false
|
||||
var is_20_07_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_09_or_greater = false
|
||||
var is_20_09_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_10_or_greater = false
|
||||
var is_20_10_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_14_or_greater = false
|
||||
var is_20_14_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
var is_20_15_or_greater = false
|
||||
var is_20_15_or_greater : Boolean by Delegates.notNull()
|
||||
private set
|
||||
|
||||
val versionCheckPatch = resourcePatch(
|
||||
|
||||
@@ -29,7 +29,7 @@ val forceOriginalAudioPatch = forceOriginalAudioPatch(
|
||||
)
|
||||
)
|
||||
},
|
||||
fixUseLocalizedAudioTrackFlag = is_20_07_or_greater,
|
||||
fixUseLocalizedAudioTrackFlag = { is_20_07_or_greater },
|
||||
mainActivityOnCreateFingerprint = mainActivityOnCreateFingerprint,
|
||||
subclassExtensionClassDescriptor = EXTENSION_CLASS_DESCRIPTOR,
|
||||
preferenceScreen = PreferenceScreen.VIDEO,
|
||||
|
||||
@@ -24,14 +24,14 @@ Second \"item\" text"</string>
|
||||
<patch id="layout.branding.baseCustomBrandingPatch">
|
||||
<string name="revanced_custom_branding_name_title">Nom de l\'application</string>
|
||||
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
|
||||
<string name="revanced_custom_branding_name_entry_5">Personnalisé</string>
|
||||
<string name="revanced_custom_branding_name_entry_5">Personnalisée</string>
|
||||
<string name="revanced_custom_branding_icon_title">Icône de l\'application</string>
|
||||
<string name="revanced_custom_branding_icon_entry_1">Original</string>
|
||||
<string name="revanced_custom_branding_icon_entry_1">Originale</string>
|
||||
<!-- Translation of this should be identical to revanced_header_logo_entry_5 -->
|
||||
<string name="revanced_custom_branding_icon_entry_3">ReVanced minimaliste</string>
|
||||
<string name="revanced_custom_branding_icon_entry_4">ReVanced mis à l\'échelle</string>
|
||||
<string name="revanced_custom_branding_icon_entry_4">ReVanced mise à l\'échelle</string>
|
||||
<!-- Translations of this should be identical to revanced_custom_branding_name_entry_5 -->
|
||||
<string name="revanced_custom_branding_icon_entry_5">Personnalisé</string>
|
||||
<string name="revanced_custom_branding_icon_entry_5">Personnalisée</string>
|
||||
</patch>
|
||||
<patch id="misc.checks.checkEnvironmentPatch">
|
||||
<string name="revanced_check_environment_failed_title">Les vérifications ont échoué</string>
|
||||
@@ -1363,7 +1363,7 @@ Limitation : Il se peut que le bouton Retour dans la barre d'outils ne fonction
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Lecteur réduit</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Modifier le style du lecteur réduit à l\'intérieur de l\'application</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Modifiez le style du lecteur réduit intégré à l\'application</string>
|
||||
<string name="revanced_miniplayer_type_title">Type de lecteur réduit</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Désactivé</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Par défaut</string>
|
||||
@@ -1623,11 +1623,11 @@ Limitations :
|
||||
<string name="revanced_spoof_video_streams_av1_title">Autoriser Android VR AV1</string>
|
||||
<string name="revanced_spoof_video_streams_av1_summary_on">"Le codec vidéo est AVC (H.264), VP9 ou AV1
|
||||
|
||||
La lecture peut saccader ou perdre des images"</string>
|
||||
La lecture peut être saccadée et des images peuvent être perdues"</string>
|
||||
<string name="revanced_spoof_video_streams_av1_summary_off">Le codec vidéo est AVC (H.264) ou VP9</string>
|
||||
<string name="revanced_spoof_video_streams_av1_user_dialog_message">"L'activation de ce paramètre peut utiliser le décodage AV1 logiciel.
|
||||
<string name="revanced_spoof_video_streams_av1_user_dialog_message">"L'activation de ce paramètre permet l'utilisation du décodage AV1 logiciel.
|
||||
|
||||
La lecture vidéo avec AV1 peut saccader ou perdre des images."</string>
|
||||
La lecture vidéo avec AV1 peut être saccadée et des images peuvent être perdues."</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">Effets secondaires de la falsification</string>
|
||||
<string name="revanced_spoof_video_streams_about_experimental">• Client expérimental, peut cesser de fonctionner à tout moment</string>
|
||||
<string name="revanced_spoof_video_streams_about_playback_failure">• Les vidéos sont susceptibles de s\'arrêter à 1:00, ou de ne pas être disponibles dans certaines régions</string>
|
||||
|
||||
@@ -415,7 +415,7 @@ Má tá Doodle á thaispeáint faoi láthair i do réigiún agus má tá an tsu
|
||||
<string name="revanced_custom_filter_summary_off">Tá scagaire saincheaptha míchumasaithe</string>
|
||||
<string name="revanced_custom_filter_strings_title">Scagaire saincheaptha</string>
|
||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||
<string name="revanced_custom_filter_strings_summary">Liosta de na teaghráin tógála cosáin comhpháirteanna le scagadh scartha le líne nua</string>
|
||||
<string name="revanced_custom_filter_strings_summary">Liosta de na teaghráin tógálaí cosáin chomhpháirte le scagadh scartha le líne nua</string>
|
||||
<string name="revanced_custom_filter_toast_invalid_syntax">Scagaire saincheaptha neamhbhailí: %s</string>
|
||||
<string name="revanced_hide_view_count_title">Folaigh líon radharcanna</string>
|
||||
<string name="revanced_hide_view_count_summary_on">Tá líon radharcanna i bhfolach sa fhotha agus sna torthaí cuardaigh</string>
|
||||
@@ -434,14 +434,14 @@ Má tá Doodle á thaispeáint faoi láthair i do réigiún agus má tá an tsu
|
||||
<string name="revanced_hide_keyword_content_screen_title">Folaigh ábhair eochairfhocal</string>
|
||||
<string name="revanced_hide_keyword_content_screen_summary">Folaigh físeáin chuardaigh agus fotha ag baint úsáide as scagairí eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">Folaigh físeáin bhaile de réir eochair</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Scagtar físeáin sa chluaisín baile de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Ní scagtar físeáin sa chluaisín baile de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Déantar físeáin sa chluaisín Baile a scagadh de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Ní dhéantar físeáin sa chluaisín Baile a scagadh de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Folaigh torthaí cuardaigh de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Déantar torthaí cuardaigh a scagadh de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Ní scagtar torthaí cuardaigh ag eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Ní dhéantar torthaí cuardaigh a scagadh de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Folaigh físeáin síntiúis de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Déantar físeáin sa chluaisín síntiús a scagadh de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Ní scagtar físeáin sa chluaisín síntiúis ag eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Ní dhéantar físeáin sa chluaisín Síntiúis a scagadh de réir eochairfhocail</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Eochairfhocail le cur i bhfolach</string>
|
||||
<!-- For localization, it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -451,7 +451,7 @@ Is féidir le focail a bheith ina ainmneacha cainéil nó aon fhocal a thaispeá
|
||||
|
||||
Ní mór focail le litreacha móra sa lár a chur isteach leis an gcású (ie: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">Maidir le scagadh eochairfhocal</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Scagaire a chuirtear ar thorthaí Baile / Liostáil / Cuardaigh chun ábhar a fhreagraíonn frásaí focail a chur i bhfolach
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Baile/Síntiúis/Déantar torthaí cuardaigh a scagadh chun ábhar a mheaitseálann frásaí eochairfhocail a cheilt
|
||||
|
||||
Teorainneacha
|
||||
• Ní féidir Shorts a chur i bhfolach de réir ainm cainéil
|
||||
@@ -470,10 +470,10 @@ Teorainneacha
|
||||
<patch id="ad.general.hideAdsResourcePatch">
|
||||
<string name="revanced_hide_creator_store_shelf_title">Folaigh seilf siopa an chruthaitheora</string>
|
||||
<string name="revanced_hide_creator_store_shelf_summary_on">Seilf siopa an chruthaitheora faoin imreoir físeáin i bhfolach</string>
|
||||
<string name="revanced_hide_creator_store_shelf_summary_off">Tá seilf stórais cruthaitheora faoin imreoir físeáin ar taispeáint</string>
|
||||
<string name="revanced_hide_creator_store_shelf_summary_off">Taispeántar seilf siopa na gcruthaitheoirí faoin seinnteoir físeáin</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">Folaigh brat bhranda siopa scáileáin deiridh</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">Meirge siopa scáileáin deiridh i bhfolach</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Meirge siopa scáileáin deiridh taispeánta</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Taispeántar meirge siopa scáileáin deiridh</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Folaigh fógraí lánscáileáin</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Tá fógraí lána scáileáin i bhfolach
|
||||
|
||||
@@ -489,24 +489,24 @@ Níl an ghné seo ar fáil ach do ghléasanna níos sine"</string>
|
||||
<string name="revanced_hide_merchandise_banners_summary_off">Taispeántar meirgí marsantais</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Folaigh lipéad chun cinn íoctha</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Tá an lipéad promóisin íoctha i bhfolach</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Taispeántar lipéad promóisin íoctha</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Taispeántar lipéad an chur chun cinn íoctha</string>
|
||||
<string name="revanced_hide_self_sponsor_ads_title">Folaigh cártaí féin-urraithe</string>
|
||||
<string name="revanced_hide_self_sponsor_ads_summary_on">Tá cártaí féin-urraithe i bhfolach</string>
|
||||
<string name="revanced_hide_self_sponsor_ads_summary_off">Taispeántar cártaí féin-urraithe</string>
|
||||
<string name="revanced_hide_shopping_links_title">Folaigh naisc siopadóireachta</string>
|
||||
<string name="revanced_hide_shopping_links_summary_on">Naisc siopadóireachta i gcur síos físeáin i bhfolach</string>
|
||||
<string name="revanced_hide_shopping_links_summary_off">Tá naisc siopadóireachta i gcur síos an fhíseáin ar taispeáint</string>
|
||||
<string name="revanced_hide_view_products_banner_title">Folaigh an meirge \'Féach ar tháirgí\'</string>
|
||||
<string name="revanced_hide_view_products_banner_summary_on">Meigeán \'Féach táirgí\' i bhforleagan físeáin i bhfolach</string>
|
||||
<string name="revanced_hide_view_products_banner_summary_off">Meigeán \'Féach táirgí\' i bhforleagan físeáin taispeánta</string>
|
||||
<string name="revanced_hide_view_products_banner_title">Folaigh meirge táirgí</string>
|
||||
<string name="revanced_hide_view_products_banner_summary_on">Tá an meirge féach táirgí i bhfolach sa fhorleagan físe</string>
|
||||
<string name="revanced_hide_view_products_banner_summary_off">Taispeántar meirge féach táirgí i bhforleagan físe</string>
|
||||
<string name="revanced_hide_web_search_results_title">Folaigh torthaí cuardaigh gréasáin</string>
|
||||
<string name="revanced_hide_web_search_results_summary_on">Tá torthaí cuardaigh gréasáin i bhfolach</string>
|
||||
<string name="revanced_hide_web_search_results_summary_off">Taispeántar torthaí cuardaigh gréasáin</string>
|
||||
</patch>
|
||||
<patch id="ad.getpremium.hideGetPremiumPatch">
|
||||
<string name="revanced_hide_get_premium_title">Folaigh cur chun cinn Préimhe YouTube</string>
|
||||
<string name="revanced_hide_get_premium_title">Folaigh ardú céime YouTube Premium</string>
|
||||
<string name="revanced_hide_get_premium_summary_on">Tá cur chun cinn YouTube Premium faoi seinnteoir físe i bhfolach</string>
|
||||
<string name="revanced_hide_get_premium_summary_off">Taispeántar cur chun cinn préimhe YouTube faoi seinnteoir físe</string>
|
||||
<string name="revanced_hide_get_premium_summary_off">Taispeántar ardú céime YouTube Premium faoin seinnteoir físe</string>
|
||||
</patch>
|
||||
<patch id="ad.video.videoAdsPatch">
|
||||
<string name="revanced_hide_video_ads_title">Folaigh fógraí físe</string>
|
||||
@@ -516,8 +516,8 @@ Níl an ghné seo ar fáil ach do ghléasanna níos sine"</string>
|
||||
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
||||
<string name="revanced_share_copy_url_success">URL cóipeáilte chuig gearr</string>
|
||||
<string name="revanced_share_copy_url_timestamp_success">URL le stampa ama cóipeáilte</string>
|
||||
<string name="revanced_copy_video_url_title">Taispeáin cnaipe URL físe cóipeáil</string>
|
||||
<string name="revanced_copy_video_url_summary_on">Taispeántar an cnaipe. Tapáil chun URL an fhíseáin a chóipeáil. Tapáil agus coinnigh chun a chóipeáil le stampa ama</string>
|
||||
<string name="revanced_copy_video_url_title">Taispeáin an cnaipe cóipeála URL an fhíseáin</string>
|
||||
<string name="revanced_copy_video_url_summary_on">Taispeántar an cnaipe. Tapáil chun URL an fhíseáin a chóipeáil. Tapáil agus coinnigh síos chun cóipeáil leis an stampa ama</string>
|
||||
<string name="revanced_copy_video_url_summary_off">Ní thaispeántar an cnaipe</string>
|
||||
<string name="revanced_copy_video_url_timestamp_title">Taispeáin cnaipe URL stampa ama cóipeáil</string>
|
||||
<string name="revanced_copy_video_url_timestamp_summary_on">Taispeántar an cnaipe. Tapáil chun URL físeáin a chóipeáil le stampa ama. Tapáil agus coinnigh chun cóip a dhéanamh gan stampa ama</string>
|
||||
@@ -531,25 +531,25 @@ Níl an ghné seo ar fáil ach do ghléasanna níos sine"</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||
<string name="revanced_disable_signin_to_tv_popup_title">Díchumasaigh an Aníos Sínigh Isteach sa Teilifís</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Tá an Aníos Sínigh Isteach sa Teilifís díchumasaithe</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Tá an Aníos Sínigh Isteach sa Teilifís cumasaithe</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Tá preab aníos sínithe isteach sa teilifís díchumasaithe</string>
|
||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Tá preab aníos sínithe isteach sa teilifís cumasaithe</string>
|
||||
</patch>
|
||||
<patch id="interaction.doubletap.disableDoubleTapActionsPatch">
|
||||
<string name="revanced_disable_chapter_skip_double_tap_title">Díchumasaigh scipeáil caibidle le sconna dúbailte</string>
|
||||
<string name="revanced_disable_chapter_skip_double_tap_summary_on">Ní féidir le sconna dúbailte scipeáil chuig an gcéad chaibidil eile/roimhe seo a spreagadh go deo</string>
|
||||
<string name="revanced_disable_chapter_skip_double_tap_summary_on">Ní féidir léim go dtí an chéad chaibidil eile/roimhe seo a spreagadh le tapáil faoi dhó</string>
|
||||
<string name="revanced_disable_chapter_skip_double_tap_summary_off">Is féidir le sconna dúbailte scipeáil chuig an gcéad chaibidil eile/roimhe seo a spreagadh ó am go chéile</string>
|
||||
</patch>
|
||||
<patch id="interaction.downloads.downloadsResourcePatch">
|
||||
<string name="revanced_external_downloader_screen_title">Íosluchtaigh seachtracha</string>
|
||||
<string name="revanced_external_downloader_screen_summary">Socruithe chun íoslódálaí seachtrach a úsáid</string>
|
||||
<string name="revanced_external_downloader_title">Taispeáin cnaipe íoslódála</string>
|
||||
<string name="revanced_external_downloader_title">Taispeáin cnaipe íoslódála seachtrach</string>
|
||||
<string name="revanced_external_downloader_summary_on">Taispeántar cnaipe íoslódála sa seinnteoir</string>
|
||||
<string name="revanced_external_downloader_summary_off">Ní thaispeántar cnaipe íoslódála sa seinnteoir</string>
|
||||
<!-- 'Download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title'. -->
|
||||
<string name="revanced_external_downloader_action_button_title">Cur síos ar an gcnaipe gnímh Íoslódáil seachtrach</string>
|
||||
<string name="revanced_external_downloader_action_button_title">Sáraigh an cnaipe Íosluchtaigh gníomh</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">Osclaíonn an cnaipe íoslódála do íoslódálaí seachtrach</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">Osclaíonn an cnaipe íoslódála an t-íoslódálaí dúchais in-app</string>
|
||||
<string name="revanced_external_downloader_name_title">Ainm pacáiste íoslódáil</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">Osclaíonn an cnaipe íoslódála an íoslódálaí dúchasach san aip</string>
|
||||
<string name="revanced_external_downloader_name_title">Ainm pacáiste íoslódálaí</string>
|
||||
<string name="revanced_external_downloader_name_summary">Ainm an phacáiste de d\'aip íoslódálaí seachtrach suiteáilte</string>
|
||||
<string name="revanced_external_downloader_other_item_hint">Iontráil ainm an phacáiste</string>
|
||||
<string name="revanced_external_downloader_other_item">Eile</string>
|
||||
@@ -1383,14 +1383,14 @@ Teorainn: Seans nach n-oibreoidh úsáid a bhaint as an gcnaipe cúil ar an mbar
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Díchumasaíodh gníomh tapáil faoi dhó agus pinch chun méid a athrú</string>
|
||||
<string name="revanced_miniplayer_disable_drag_and_drop_title">Díchumasaigh tarraing agus scaoil</string>
|
||||
<string name="revanced_miniplayer_disable_drag_and_drop_summary_on">Tá tarraing agus scaoil díchumasaithe</string>
|
||||
<string name="revanced_miniplayer_disable_drag_and_drop_summary_off">"Tá drag-and-drop cumasaithe
|
||||
<string name="revanced_miniplayer_disable_drag_and_drop_summary_off">"Tá tarraing agus scaoil cumasaithe
|
||||
|
||||
Is féidir an mhion-imreoir a tharraingt go haon chúinne den scáileán"</string>
|
||||
Is féidir an mini-imreoir a tharraingt chuig aon chúinne den scáileán"</string>
|
||||
<string name="revanced_miniplayer_disable_horizontal_drag_title">Díchumasaigh gotha tarraingthe cothrománach</string>
|
||||
<string name="revanced_miniplayer_disable_horizontal_drag_summary_on">Díchumasaíodh an comhartha tarraingthe cothrománach</string>
|
||||
<string name="revanced_miniplayer_disable_horizontal_drag_summary_off">"Cumasaithe geastú tarraingthe cothrománach
|
||||
<string name="revanced_miniplayer_disable_horizontal_drag_summary_on">Gotha tarraingthe cothrománach díchumasaithe</string>
|
||||
<string name="revanced_miniplayer_disable_horizontal_drag_summary_off">"Gotha tarraingthe cothrománach cumasaithe
|
||||
|
||||
Is féidir an mhion-imreoir a tharraingt as an scáileán ar chlé nó ar dheis"</string>
|
||||
Is féidir an mini-imreoir a tharraingt amach as an scáileán ar chlé nó ar dheis"</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_title">Folaigh cnaipí forleathana</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_on">Tá cnaipí forleathana i bhfolach</string>
|
||||
<string name="revanced_miniplayer_hide_overlay_buttons_summary_off">Taispeántar cnaipí forleathana</string>
|
||||
@@ -1405,7 +1405,7 @@ Is féidir an mhion-imreoir a tharraingt as an scáileán ar chlé nó ar dheis"
|
||||
<string name="revanced_miniplayer_width_dip_invalid_toast">Caithfidh méid picteilíní a bheith idir %1$s agus %2$s</string>
|
||||
<string name="revanced_miniplayer_opacity_title">Trédhearcacht forleagan</string>
|
||||
<string name="revanced_miniplayer_opacity_summary">Luach trédhearcachta idir 0-100, áit a bhfuil 0 trédhearcach</string>
|
||||
<string name="revanced_miniplayer_opacity_invalid_toast">Caithfidh trédhearcacht forleagtha mionaimreora a bheith idir 0-100</string>
|
||||
<string name="revanced_miniplayer_opacity_invalid_toast">Caithfidh teimhneacht forleagan mion-imreoir a bheith idir 0-100</string>
|
||||
</patch>
|
||||
<patch id="layout.theme.themePatch">
|
||||
<string name="revanced_gradient_loading_screen_title">Cumasaigh scáileán luchtaithe</string>
|
||||
@@ -1417,16 +1417,16 @@ Is féidir an mhion-imreoir a tharraingt as an scáileán ar chlé nó ar dheis"
|
||||
<string name="revanced_seekbar_custom_color_title">Cumasaigh dath barra cuardaigh saincheaptha</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Taispeántar dath barra cuardaigh saincheaptha</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Taispeántar dath barr cuardaigh bunaidh</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Dath Pearsanta Bar Taispillte</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Dath an bhar taispillte</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Dath Accent Pearsanta Bar Taispillte</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Dath accent an bhar taispillte</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Dath barra cuardaigh saincheaptha</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Dath an bharra cuardaigh</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Dath béime saincheaptha an bharra cuardaigh</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Dath béime an bharra cuardaigh</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Luach datha barra cuardaigh neamhbhailí</string>
|
||||
</patch>
|
||||
<patch id="layout.branding.customBrandingPatch">
|
||||
</patch>
|
||||
<patch id="layout.branding.changeHeaderPatch">
|
||||
<string name="revanced_header_logo_title">Lógó Ceanntáisc</string>
|
||||
<string name="revanced_header_logo_title">Lógó ceanntásca</string>
|
||||
<string name="revanced_header_logo_entry_1">Réamhshocrú</string>
|
||||
<string name="revanced_header_logo_entry_2">Rialta</string>
|
||||
<!-- Translation of this should be identical to revanced_custom_branding_icon_entry_3 -->
|
||||
|
||||
@@ -135,8 +135,8 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
|
||||
</patch>
|
||||
<patch id="misc.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">オリジナルの音声を強制的に使用</string>
|
||||
<string name="revanced_force_original_audio_summary_on">オリジナルの音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックは使用しません</string>
|
||||
<string name="revanced_force_original_audio_summary_off">アプリが選択した音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックを使用する場合があります</string>
|
||||
<string name="revanced_force_original_audio_summary_on">オリジナルの音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックは使用されません</string>
|
||||
<string name="revanced_force_original_audio_summary_off">アプリが選択した音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックが使用される場合があります</string>
|
||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
||||
<string name="revanced_force_original_audio_not_available">この機能を使用するには、「動画ストリームを偽装」のクライアントを Android Studio 以外の任意のクライアントに変更してください</string>
|
||||
</patch>
|
||||
@@ -304,8 +304,8 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
|
||||
<string name="revanced_hide_medical_panels_summary_on">医療情報パネルは表示されません</string>
|
||||
<string name="revanced_hide_medical_panels_summary_off">医療情報パネルは表示されます</string>
|
||||
<string name="revanced_hide_quick_actions_title">クイック アクションを非表示</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">全画面表示のクイック アクションは表示されません</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">全画面表示のクイック アクションは表示されます</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">全画面表示モードのクイック アクションは表示されません</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">全画面表示モードのクイック アクションは表示されます</string>
|
||||
<string name="revanced_hide_related_videos_title">関連動画を非表示</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">クイック アクション内の関連動画は表示されません</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">クイック アクション内の関連動画は表示されます</string>
|
||||
@@ -313,17 +313,17 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_on">登録チャンネルのコミュニティ ガイドラインは非表示です</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_off">登録チャンネルのコミュニティ ガイドラインは表示されます</string>
|
||||
<string name="revanced_hide_timed_reactions_title">Timed Reaction を非表示</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Timed Reaction とチャット欄のハートマーク アイコンは表示されません</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Timed Reaction とチャット欄のハートマー ク アイコンは表示されます</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Timed reaction は表示されません\n\nライブ配信のチャット欄に常駐するハート マーク ボタンが非表示になります</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Timed reaction は表示されます\n\nライブ配信のチャット欄にハート マーク ボタンが常駐します</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">「AI 生成による動画の要約」を非表示</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">「AI 生成による動画の要約」セクションは表示されません</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">「AI 生成による動画の要約」セクションは表示されます</string>
|
||||
<string name="revanced_hide_ask_section_title">質問セクションを非表示</string>
|
||||
<string name="revanced_hide_ask_section_summary_on">質問セクションは表示されません</string>
|
||||
<string name="revanced_hide_ask_section_summary_off">質問セクションは表示されます</string>
|
||||
<string name="revanced_hide_ask_section_title">「質問する」を非表示</string>
|
||||
<string name="revanced_hide_ask_section_summary_on">「質問する」セクションは表示されません</string>
|
||||
<string name="revanced_hide_ask_section_summary_off">「質問する」セクションは表示されます</string>
|
||||
<string name="revanced_hide_attributes_section_title">付随情報を非表示</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">注目の場所 / ゲーム / 音楽 / 言及されている人物セクションは表示されません</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 言及されている人物セクションは表示されます</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">注目の場所 / ゲーム / 音楽 / 人物セクションは表示されません</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 人物セクションは表示されます</string>
|
||||
<string name="revanced_hide_chapters_section_title">チャプター セクションを非表示</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">チャプター セクションは表示されません</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">チャプター セクションは表示されます</string>
|
||||
@@ -456,12 +456,12 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
|
||||
<string name="revanced_hide_keyword_content_about_summary">"ホーム / 登録チャンネル / 検索結果でキーワードに合致する動画を非表示にします
|
||||
|
||||
制限事項
|
||||
• ショート動画はチャンネル名で非表示にできない
|
||||
• ショート動画はチャンネル名の合致では非表示にできない
|
||||
• 一部の UI コンポーネントが残ってしまう場合がある
|
||||
• キーワードを検索したとき、結果が表示されない場合がある"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">単語全体で合致</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc.) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">キーワードを二重引用符で囲むことで、動画のタイトルやチャンネル名の単語の一部とキーワードが合致しないようにできます<br><br>例えば、<br><b>\"ai\"</b>は、次の動画を非表示にします:<b>How does AI work?</b><br>しかし、次の動画は非表示にしません:<b>What does fair use mean?</b></string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">キーワードを二重引用符で囲むことで、動画のタイトルやチャンネル名に含まれる単語の一部分とキーワードが合致しないようにできます<br><br>例えば、<br><b>\"ai\"</b>は、次の動画を非表示にします:<b>How does AI work?</b><br>しかし、次の動画は非表示にしません:<b>What does fair use mean?</b></string>
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_hide_keyword_toast_invalid_common">使用できないキーワード: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">二重引用符が必要なキーワード: %s</string>
|
||||
@@ -741,7 +741,7 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">フライアウト メニュー</string>
|
||||
<string name="revanced_hide_player_flyout_summary">プレーヤー オーバーレイの歯車ボタンから呼び出されるフライアウト メニューの項目を表示または非表示にします</string>
|
||||
<string name="revanced_hide_player_flyout_summary">プレーヤー オーバーレイの歯車アイコンボタンから呼び出されるフライアウト メニューの項目を表示または非表示にします</string>
|
||||
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_captions_title">「字幕」を非表示</string>
|
||||
<string name="revanced_hide_player_flyout_captions_summary_on">「字幕」は表示されません</string>
|
||||
@@ -967,13 +967,13 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
|
||||
<string name="revanced_end_screen_suggested_video_summary_on">"終了画面の「関連動画」は表示されませんが、自動再生がオンの場合は関連動画が自動で再生されます
|
||||
|
||||
自動再生の設定は YouTube の設定で変更できます:
|
||||
設定 → 再生 → 次の動画を自動再生"</string>
|
||||
[設定] → [再生] → [次の動画を自動再生]"</string>
|
||||
<string name="revanced_end_screen_suggested_video_summary_off">終了画面の「関連動画」は表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
|
||||
<string name="revanced_hide_related_videos_overlay_title">関連動画オーバーレイを非表示</string>
|
||||
<string name="revanced_hide_related_videos_overlay_summary_on">全画面表示の関連動画オーバーレイは表示されません</string>
|
||||
<string name="revanced_hide_related_videos_overlay_summary_off">全画面表示の関連動画オーバーレイは表示されます</string>
|
||||
<string name="revanced_hide_related_videos_overlay_summary_on">全画面表示モードの関連動画オーバーレイは表示されません</string>
|
||||
<string name="revanced_hide_related_videos_overlay_summary_off">全画面表示モードの関連動画オーバーレイは表示されます</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.time.hideTimestampPatch">
|
||||
<string name="revanced_hide_timestamp_title">動画のタイムスタンプを非表示</string>
|
||||
@@ -982,8 +982,8 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
|
||||
</patch>
|
||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||
<string name="revanced_hide_player_popup_panels_title">プレーヤー ポップアップ パネルを非表示</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">プレーヤー ポップアップ パネルは表示されません\n\nプレイリストやチャット欄などを閉じた状態で動画を開きます</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">プレーヤー ポップアップ パネルは表示されます\n\nプレイリストやチャット欄などを展開した状態で動画を開きます</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">プレーヤー ポップアップ パネルは表示されません\n\nプレイリストやライブ配信のチャット欄などを閉じた状態で動画を開きます</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">プレーヤー ポップアップ パネルは表示されます\n\nプレイリストやライブ配信のチャット欄などを展開した状態で動画を開きます</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">再生終了時に全画面表示を解除</string>
|
||||
@@ -1369,7 +1369,7 @@ Automotive レイアウト
|
||||
<string name="revanced_miniplayer_type_title">ミニプレーヤーの種類</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">無効</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">デフォルト</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">横長 (旧タイプ)</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">旧タイプ (横長)</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">タブレット</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">新タイプ 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">新タイプ 2</string>
|
||||
@@ -1381,8 +1381,8 @@ Automotive レイアウト
|
||||
<string name="revanced_miniplayer_double_tap_action_title">ダブルタップとピンチによるサイズ変更を有効化</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"ダブルタップとピンチによるサイズ変更は有効です
|
||||
|
||||
• ダブルタップすると、ミニプレーヤーのサイズが大きくなる
|
||||
• もう一度ダブルタップすると、元のサイズに戻る"</string>
|
||||
• ダブルタップするとミニプレーヤーのサイズが大きくなる
|
||||
• もう一度ダブルタップすると元のサイズに戻る"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">ダブルタップとピンチによるサイズ変更は無効です</string>
|
||||
<string name="revanced_miniplayer_disable_drag_and_drop_title">ドラッグ&ドロップを無効化</string>
|
||||
<string name="revanced_miniplayer_disable_drag_and_drop_summary_on">ドラッグ&ドロップは無効です</string>
|
||||
|
||||
@@ -885,8 +885,8 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">새로운 게시물 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">새로운 게시물 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">일시 정지 오버레이 버튼 숨기기</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">일시 정지 오버레이 버튼이 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">일시 정지 오버레이 버튼이 표시됩니다</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">플레이어 왼쪽 상단에서 다음 버튼들이 숨겨집니다\n• 구독 & 라이브 & 렌즈 & 트렌드 & 쇼핑</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">플레이어 왼쪽 상단에서 다음 버튼들이 표시됩니다\n• 구독 & 라이브 & 렌즈 & 트렌드 & 쇼핑</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_title">댓글 미리보기 숨기기</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_on">댓글 미리보기가 숨겨집니다</string>
|
||||
<string name="revanced_hide_shorts_preview_comment_summary_off">댓글 미리보기가 표시됩니다</string>
|
||||
|
||||
@@ -378,12 +378,12 @@ Nếu cài đặt này được bật và Doodle đang hiển thị tại khu v
|
||||
<string name="revanced_hide_visit_store_button_summary_off">Nút Chuyển đến cửa hàng được hiển thị</string>
|
||||
<string name="revanced_comments_screen_title">Bình luận</string>
|
||||
<string name="revanced_comments_screen_summary">Ẩn hoặc hiện các thành phần bình luận</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">Ẩn tóm tắt cuộc trò chuyện AI</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Tóm tắt cuộc trò chuyện AI đã bị ẩn</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Tóm tắt cuộc trò chuyện AI được hiển thị</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">Ẩn tóm tắt bình luận AI</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Tóm tắt bình luận AI đã bị ẩn</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Tóm tắt bình luận AI được hiển thị</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">Ẩn tóm tắt cuộc trò chuyện do AI tạo</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Tóm tắt cuộc trò chuyện do AI tạo đã bị ẩn</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Tóm tắt cuộc trò chuyện do AI tạo được hiển thị</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">Ẩn tóm tắt bình luận do AI tạo</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Tóm tắt bình luận do AI tạo đã bị ẩn</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Tóm tắt bình luận do AI tạo được hiển thị</string>
|
||||
<string name="revanced_hide_comments_channel_guidelines_title">Ẩn nguyên tắc kênh</string>
|
||||
<string name="revanced_hide_comments_channel_guidelines_summary_on">Nguyên tắc kênh đã bị ẩn</string>
|
||||
<string name="revanced_hide_comments_channel_guidelines_summary_off">Nguyên tắc kênh được hiển thị</string>
|
||||
@@ -912,12 +912,12 @@ Nếu thay đổi cài đặt này không có hiệu lực, hãy thử chuyển
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Ẩn nút Sắp diễn ra</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Nút sắp diễn ra đã bị ẩn</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Nút sắp diễn ra được hiển thị</string>
|
||||
<string name="revanced_hide_shorts_use_sound_button_title">Ẩn nút \"Sử dụng âm thanh này\"</string>
|
||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">Nút \"Sử dụng âm thanh này\" đã bị ẩn</string>
|
||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">Nút \"Sử dụng âm thanh này\" được hiển thị</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Ẩn nút \"Sử dụng mẫu này\"</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Nút \"Sử dụng mẫu này\" đã bị ẩn</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Nút \"Sử dụng mẫu này\" được hiển thị</string>
|
||||
<string name="revanced_hide_shorts_use_sound_button_title">Ẩn nút Dùng âm thanh này</string>
|
||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">Nút dùng âm thanh này đã bị ẩn</string>
|
||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">Nút dùng âm thanh này được hiển thị</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Ẩn nút Sử dụng mẫu này</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Nút sử dụng mẫu này đã bị ẩn</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Nút sử dụng mẫu này được hiển thị</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Ẩn hiệu ứng đài phun nút Thích</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Hiệu ứng đài phun nút thích đã bị ẩn</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Hiệu ứng đài phun nút thích được hiển thị</string>
|
||||
|
||||
@@ -5,33 +5,39 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="256"
|
||||
android:viewportHeight="256">
|
||||
<!-- Android launcher can hide the background layer if it's black or nearly black.
|
||||
The dark background is needed to see the V shape in day mode. To prevent hiding
|
||||
the layer it must be added to the foreground. -->
|
||||
<path
|
||||
android:pathData="M0,0 L256,0 L256,256 L0,256 Z"
|
||||
android:fillColor="#1B1B1B" />
|
||||
<group android:scaleX="0.24"
|
||||
android:scaleY="0.24"
|
||||
android:translateX="97.28"
|
||||
android:translateY="97.28">
|
||||
<!-- Android launcher can hide the background layer if it's black or nearly black.
|
||||
The dark background is needed to see the V shape in day mode. To prevent hiding
|
||||
the layer it must be added to the foreground. -->
|
||||
<path
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="128"
|
||||
android:startY="-0"
|
||||
android:endX="128"
|
||||
android:endY="254.6"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFF04E98"/>
|
||||
<item android:offset="0.5" android:color="#FF5F65D4"/>
|
||||
<item android:offset="1" android:color="#FF4E98F0"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
android:fillColor="#1B1B1B"
|
||||
android:pathData="M0,0 L256,0 L256,256 L0,256 Z" />
|
||||
<group
|
||||
android:scaleX="0.24"
|
||||
android:scaleY="0.24"
|
||||
android:translateX="97.28"
|
||||
android:translateY="97.28">
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z" />
|
||||
<path android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="128"
|
||||
android:endY="254.6"
|
||||
android:startX="128"
|
||||
android:startY="-0"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFF04E98"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FF5F65D4"
|
||||
android:offset="0.5" />
|
||||
<item
|
||||
android:color="#FF4E98F0"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -5,47 +5,59 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="800"
|
||||
android:viewportHeight="800">
|
||||
<group android:scaleX="0.5"
|
||||
android:scaleY="0.5"
|
||||
android:translateX="200"
|
||||
android:translateY="200">
|
||||
<path
|
||||
android:pathData="M400,400m-400,0a400,400 0,1 1,800 0a400,400 0,1 1,-800 0"
|
||||
android:fillColor="#1B1B1B"/>
|
||||
<path
|
||||
android:pathData="M400,0c220.77,0 400,179.23 400,400c-0,220.77 -179.23,400 -400,400c-220.77,-0 -400,-179.23 -400,-400c0,-220.77 179.23,-400 400,-400ZM400,36c200.9,-0 364,163.1 364,364c0,200.9 -163.1,364 -364,364c-200.9,0 -364,-163.1 -364,-364c-0,-200.9 163.1,-364 364,-364Z"
|
||||
android:strokeLineJoin="round"
|
||||
android:fillType="evenOdd">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="400"
|
||||
android:startY="0"
|
||||
android:endX="400"
|
||||
android:endY="800"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFF04E98"/>
|
||||
<item android:offset="0.5" android:color="#FF5F65D4"/>
|
||||
<item android:offset="1" android:color="#FF4E98F0"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M538.74,269.87c1.48,-3.38 1.16,-7.28 -0.86,-10.37c-2.02,-3.09 -5.46,-4.95 -9.16,-4.95c-5.15,0 -10.44,0 -14.16,0c-3.1,0 -5.91,1.83 -7.15,4.67c-12.47,28.4 -78.27,178.27 -100.25,228.33c-1.25,2.84 -4.05,4.67 -7.15,4.67c-3.1,0 -5.91,-1.83 -7.15,-4.67c-21.98,-50.06 -87.78,-199.93 -100.25,-228.33c-1.25,-2.84 -4.05,-4.67 -7.15,-4.67c-3.73,0 -9.02,0 -14.16,0c-3.69,0 -7.14,1.86 -9.16,4.95c-2.02,3.09 -2.34,6.99 -0.86,10.37c23.56,53.77 101.87,232.52 117.87,269.03c1.74,3.98 5.67,6.55 10.02,6.55c6.29,-0 15.41,-0 21.7,-0c4.34,-0 8.27,-2.57 10.02,-6.55c16,-36.51 94.32,-215.27 117.87,-269.03Z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M408.12,395.31c-1.67,2.9 -4.77,4.69 -8.12,4.69c-3.35,-0 -6.44,-1.79 -8.12,-4.69c-17,-29.44 -56.16,-97.26 -73.15,-126.7c-1.67,-2.9 -1.67,-6.47 0,-9.38c1.67,-2.9 4.77,-4.69 8.12,-4.69c33.99,0 112.31,0 146.31,0c3.35,0 6.44,1.79 8.12,4.69c1.67,2.9 1.67,6.47 -0,9.38c-17,29.44 -56.16,97.26 -73.15,126.7Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="400"
|
||||
android:startY="254.54"
|
||||
android:endX="400"
|
||||
android:endY="543.86"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFF04E98"/>
|
||||
<item android:offset="0.5" android:color="#FF5F65D4"/>
|
||||
<item android:offset="1" android:color="#FF4E98F0"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
<group
|
||||
android:scaleX="0.5"
|
||||
android:scaleY="0.5"
|
||||
android:translateX="200"
|
||||
android:translateY="200">
|
||||
<path
|
||||
android:fillColor="#1B1B1B"
|
||||
android:pathData="M400,400m-400,0a400,400 0,1 1,800 0a400,400 0,1 1,-800 0" />
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M400,0c220.77,0 400,179.23 400,400c-0,220.77 -179.23,400 -400,400c-220.77,-0 -400,-179.23 -400,-400c0,-220.77 179.23,-400 400,-400ZM400,36c200.9,-0 364,163.1 364,364c0,200.9 -163.1,364 -364,364c-200.9,0 -364,-163.1 -364,-364c-0,-200.9 163.1,-364 364,-364Z"
|
||||
android:strokeLineJoin="round">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="400"
|
||||
android:endY="800"
|
||||
android:startX="400"
|
||||
android:startY="0"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFF04E98"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FF5F65D4"
|
||||
android:offset="0.5" />
|
||||
<item
|
||||
android:color="#FF4E98F0"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M538.74,269.87c1.48,-3.38 1.16,-7.28 -0.86,-10.37c-2.02,-3.09 -5.46,-4.95 -9.16,-4.95c-5.15,0 -10.44,0 -14.16,0c-3.1,0 -5.91,1.83 -7.15,4.67c-12.47,28.4 -78.27,178.27 -100.25,228.33c-1.25,2.84 -4.05,4.67 -7.15,4.67c-3.1,0 -5.91,-1.83 -7.15,-4.67c-21.98,-50.06 -87.78,-199.93 -100.25,-228.33c-1.25,-2.84 -4.05,-4.67 -7.15,-4.67c-3.73,0 -9.02,0 -14.16,0c-3.69,0 -7.14,1.86 -9.16,4.95c-2.02,3.09 -2.34,6.99 -0.86,10.37c23.56,53.77 101.87,232.52 117.87,269.03c1.74,3.98 5.67,6.55 10.02,6.55c6.29,-0 15.41,-0 21.7,-0c4.34,-0 8.27,-2.57 10.02,-6.55c16,-36.51 94.32,-215.27 117.87,-269.03Z" />
|
||||
<path android:pathData="M408.12,395.31c-1.67,2.9 -4.77,4.69 -8.12,4.69c-3.35,-0 -6.44,-1.79 -8.12,-4.69c-17,-29.44 -56.16,-97.26 -73.15,-126.7c-1.67,-2.9 -1.67,-6.47 0,-9.38c1.67,-2.9 4.77,-4.69 8.12,-4.69c33.99,0 112.31,0 146.31,0c3.35,0 6.44,1.79 8.12,4.69c1.67,2.9 1.67,6.47 -0,9.38c-17,29.44 -56.16,97.26 -73.15,126.7Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="400"
|
||||
android:endY="543.86"
|
||||
android:startX="400"
|
||||
android:startY="254.54"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFF04E98"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FF5F65D4"
|
||||
android:offset="0.5" />
|
||||
<item
|
||||
android:color="#FF4E98F0"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -5,33 +5,39 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="256"
|
||||
android:viewportHeight="256">
|
||||
<!-- Android launcher can hide the background layer if it's black or nearly black.
|
||||
The dark background is needed to see the V shape in day mode. To prevent hiding
|
||||
the layer it must be added to the foreground. -->
|
||||
<path
|
||||
android:pathData="M0,0 L256,0 L256,256 L0,256 Z"
|
||||
android:fillColor="#000000" />
|
||||
<group android:scaleX="0.3"
|
||||
android:scaleY="0.3"
|
||||
android:translateX="89.6"
|
||||
android:translateY="89.6">
|
||||
<!-- Android launcher can hide the background layer if it's black or nearly black.
|
||||
The dark background is needed to see the V shape in day mode. To prevent hiding
|
||||
the layer it must be added to the foreground. -->
|
||||
<path
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="128"
|
||||
android:startY="0"
|
||||
android:endX="128"
|
||||
android:endY="254.6"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFF04E98"/>
|
||||
<item android:offset="0.5" android:color="#FF5F65D4"/>
|
||||
<item android:offset="1" android:color="#FF4E98F0"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M0,0 L256,0 L256,256 L0,256 Z" />
|
||||
<group
|
||||
android:scaleX="0.3"
|
||||
android:scaleY="0.3"
|
||||
android:translateX="89.6"
|
||||
android:translateY="89.6">
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z" />
|
||||
<path android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="128"
|
||||
android:endY="254.6"
|
||||
android:startX="128"
|
||||
android:startY="0"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFF04E98"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FF5F65D4"
|
||||
android:offset="0.5" />
|
||||
<item
|
||||
android:color="#FF4E98F0"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -4,15 +4,16 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="256"
|
||||
android:viewportHeight="256">
|
||||
<group android:scaleX="0.24"
|
||||
android:scaleY="0.24"
|
||||
android:translateX="97.28"
|
||||
android:translateY="97.28">
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z"/>
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z"/>
|
||||
</group>
|
||||
<group
|
||||
android:scaleX="0.24"
|
||||
android:scaleY="0.24"
|
||||
android:translateX="97.28"
|
||||
android:translateY="97.28">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z" />
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z" />
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -4,15 +4,16 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="256"
|
||||
android:viewportHeight="256">
|
||||
<group android:scaleX="0.24"
|
||||
android:scaleY="0.24"
|
||||
android:translateX="97.28"
|
||||
android:translateY="97.28">
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z"/>
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z"/>
|
||||
</group>
|
||||
<group
|
||||
android:scaleX="0.24"
|
||||
android:scaleY="0.24"
|
||||
android:translateX="97.28"
|
||||
android:translateY="97.28">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z" />
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z" />
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -4,20 +4,21 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="800"
|
||||
android:viewportHeight="800">
|
||||
<group android:scaleX="0.5"
|
||||
android:scaleY="0.5"
|
||||
android:translateX="200"
|
||||
android:translateY="200">
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M400,0c220.77,0 400,179.23 400,400c-0,220.77 -179.23,400 -400,400c-220.77,-0 -400,-179.23 -400,-400c0,-220.77 179.23,-400 400,-400ZM400,36c200.9,-0 364,163.1 364,364c0,200.9 -163.1,364 -364,364c-200.9,0 -364,-163.1 -364,-364c-0,-200.9 163.1,-364 364,-364Z"
|
||||
android:strokeLineJoin="round"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M538.74,269.87c1.48,-3.38 1.16,-7.28 -0.86,-10.37c-2.02,-3.09 -5.46,-4.95 -9.16,-4.95c-5.15,0 -10.44,0 -14.16,0c-3.1,0 -5.91,1.83 -7.15,4.67c-12.47,28.4 -78.27,178.27 -100.25,228.33c-1.25,2.84 -4.05,4.67 -7.15,4.67c-3.1,0 -5.91,-1.83 -7.15,-4.67c-21.98,-50.06 -87.78,-199.93 -100.25,-228.33c-1.25,-2.84 -4.05,-4.67 -7.15,-4.67c-3.73,0 -9.02,0 -14.16,0c-3.69,0 -7.14,1.86 -9.16,4.95c-2.02,3.09 -2.34,6.99 -0.86,10.37c23.56,53.77 101.87,232.52 117.87,269.03c1.74,3.98 5.67,6.55 10.02,6.55c6.29,-0 15.41,-0 21.7,-0c4.34,-0 8.27,-2.57 10.02,-6.55c16,-36.51 94.32,-215.27 117.87,-269.03Z"/>
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M408.12,395.31c-1.67,2.9 -4.77,4.69 -8.12,4.69c-3.35,-0 -6.44,-1.79 -8.12,-4.69c-17,-29.44 -56.16,-97.26 -73.15,-126.7c-1.67,-2.9 -1.67,-6.47 0,-9.38c1.67,-2.9 4.77,-4.69 8.12,-4.69c33.99,0 112.31,0 146.31,0c3.35,0 6.44,1.79 8.12,4.69c1.67,2.9 1.67,6.47 -0,9.38c-17,29.44 -56.16,97.26 -73.15,126.7Z"/>
|
||||
</group>
|
||||
<group
|
||||
android:scaleX="0.5"
|
||||
android:scaleY="0.5"
|
||||
android:translateX="200"
|
||||
android:translateY="200">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M400,0c220.77,0 400,179.23 400,400c-0,220.77 -179.23,400 -400,400c-220.77,-0 -400,-179.23 -400,-400c0,-220.77 179.23,-400 400,-400ZM400,36c200.9,-0 364,163.1 364,364c0,200.9 -163.1,364 -364,364c-200.9,0 -364,-163.1 -364,-364c-0,-200.9 163.1,-364 364,-364Z"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M538.74,269.87c1.48,-3.38 1.16,-7.28 -0.86,-10.37c-2.02,-3.09 -5.46,-4.95 -9.16,-4.95c-5.15,0 -10.44,0 -14.16,0c-3.1,0 -5.91,1.83 -7.15,4.67c-12.47,28.4 -78.27,178.27 -100.25,228.33c-1.25,2.84 -4.05,4.67 -7.15,4.67c-3.1,0 -5.91,-1.83 -7.15,-4.67c-21.98,-50.06 -87.78,-199.93 -100.25,-228.33c-1.25,-2.84 -4.05,-4.67 -7.15,-4.67c-3.73,0 -9.02,0 -14.16,0c-3.69,0 -7.14,1.86 -9.16,4.95c-2.02,3.09 -2.34,6.99 -0.86,10.37c23.56,53.77 101.87,232.52 117.87,269.03c1.74,3.98 5.67,6.55 10.02,6.55c6.29,-0 15.41,-0 21.7,-0c4.34,-0 8.27,-2.57 10.02,-6.55c16,-36.51 94.32,-215.27 117.87,-269.03Z" />
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M408.12,395.31c-1.67,2.9 -4.77,4.69 -8.12,4.69c-3.35,-0 -6.44,-1.79 -8.12,-4.69c-17,-29.44 -56.16,-97.26 -73.15,-126.7c-1.67,-2.9 -1.67,-6.47 0,-9.38c1.67,-2.9 4.77,-4.69 8.12,-4.69c33.99,0 112.31,0 146.31,0c3.35,0 6.44,1.79 8.12,4.69c1.67,2.9 1.67,6.47 -0,9.38c-17,29.44 -56.16,97.26 -73.15,126.7Z" />
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -4,15 +4,16 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="256"
|
||||
android:viewportHeight="256">
|
||||
<group android:scaleX="0.3"
|
||||
android:scaleY="0.3"
|
||||
android:translateX="89.6"
|
||||
android:translateY="89.6">
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z"/>
|
||||
<path
|
||||
android:fillColor="#ff000000"
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z"/>
|
||||
</group>
|
||||
<group
|
||||
android:scaleX="0.3"
|
||||
android:scaleY="0.3"
|
||||
android:translateX="89.6"
|
||||
android:translateY="89.6">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M250.09,13.49C251.39,10.51 251.11,7.08 249.33,4.36C247.55,1.64 244.52,0 241.27,0L228.81,0C226.08,0 223.61,1.62 222.51,4.11C211.54,29.1 153.63,160.99 134.29,205.04C133.2,207.54 130.73,209.15 128,209.15C125.27,209.15 122.8,207.54 121.7,205.04C102.36,160.99 44.46,29.1 33.49,4.11C32.39,1.62 29.92,0 27.19,0L14.73,0C11.48,0 8.45,1.64 6.67,4.36C4.89,7.08 4.61,10.51 5.91,13.49C26.64,60.8 95.56,218.1 109.63,250.24C111.17,253.74 114.63,256 118.45,256L137.55,256C141.37,256 144.83,253.74 146.36,250.24C160.44,218.1 229.36,60.8 250.09,13.49Z" />
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M135.14,123.87C133.67,126.43 130.94,128 128,128C125.05,128 122.33,126.43 120.85,123.87C105.89,97.97 71.44,38.28 56.48,12.37C55,9.82 55,6.68 56.48,4.12C57.95,1.57 60.68,-0 63.62,-0L192.37,-0C195.32,-0 198.04,1.57 199.52,4.12C200.99,6.68 200.99,9.82 199.52,12.37C184.56,38.28 150.1,97.97 135.14,123.87Z" />
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2024 ReVanced. Not licensed under GPL. See https://github.com/ReVanced/revanced-branding -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<!-- Path must be white to ensure the icon appears white in the expanded status bar panel. -->
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M4.03516,3 C3.80859,3,3.59375,3.11719,3.46875,3.30469 C3.34375,3.49609,3.32422,3.73828,3.41406,3.94922 C4.87109,7.27344,9.71875,18.3359,10.707,20.5938 C10.8164,20.8398,11.0586,21,11.3281,21 L12.6719,21 C12.9375,21,13.1836,20.8398,13.293,20.5938 C14.2813,18.3359,19.1289,7.27344,20.5859,3.94922 C20.6758,3.73828,20.6563,3.49609,20.5313,3.30469 C20.4063,3.11719,20.1914,3,19.9648,3 L19.0898,3 C18.8984,3,18.7227,3.11328,18.6445,3.28906 C17.875,5.04688,13.8008,14.3203,12.4414,17.418 C12.3672,17.5938,12.1914,17.707,12,17.707 C11.8086,17.707,11.6328,17.5938,11.5586,17.418 C10.1992,14.3203,6.125,5.04688,5.35547,3.28906 C5.27734,3.11328,5.10156,3,4.91016,3 Z M7.47266,3 C7.26563,3,7.07422,3.10938,6.97266,3.28906 C6.86719,3.46875,6.86719,3.69141,6.97266,3.87109 C8.02344,5.69141,10.4453,9.88672,11.4961,11.7109 C11.6016,11.8906,11.793,12,12,12 C12.207,12,12.3984,11.8906,12.5039,11.7109 C13.5547,9.88672,15.9766,5.69141,17.0273,3.87109 C17.1328,3.69141,17.1328,3.46875,17.0273,3.28906 C16.9258,3.10938,16.7344,3,16.5273,3 Z M7.47266,3" />
|
||||
</vector>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2024 ReVanced. Not licensed under GPL. See https://github.com/ReVanced/revanced-branding -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<!-- Path must be white to ensure the icon appears white in the expanded status bar panel. -->
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M4.03516,3 C3.80859,3,3.59375,3.11719,3.46875,3.30469 C3.34375,3.49609,3.32422,3.73828,3.41406,3.94922 C4.87109,7.27344,9.71875,18.3359,10.707,20.5938 C10.8164,20.8398,11.0586,21,11.3281,21 L12.6719,21 C12.9375,21,13.1836,20.8398,13.293,20.5938 C14.2813,18.3359,19.1289,7.27344,20.5859,3.94922 C20.6758,3.73828,20.6563,3.49609,20.5313,3.30469 C20.4063,3.11719,20.1914,3,19.9648,3 L19.0898,3 C18.8984,3,18.7227,3.11328,18.6445,3.28906 C17.875,5.04688,13.8008,14.3203,12.4414,17.418 C12.3672,17.5938,12.1914,17.707,12,17.707 C11.8086,17.707,11.6328,17.5938,11.5586,17.418 C10.1992,14.3203,6.125,5.04688,5.35547,3.28906 C5.27734,3.11328,5.10156,3,4.91016,3 Z M7.47266,3 C7.26563,3,7.07422,3.10938,6.97266,3.28906 C6.86719,3.46875,6.86719,3.69141,6.97266,3.87109 C8.02344,5.69141,10.4453,9.88672,11.4961,11.7109 C11.6016,11.8906,11.793,12,12,12 C12.207,12,12.3984,11.8906,12.5039,11.7109 C13.5547,9.88672,15.9766,5.69141,17.0273,3.87109 C17.1328,3.69141,17.1328,3.46875,17.0273,3.28906 C16.9258,3.10938,16.7344,3,16.5273,3 Z M7.47266,3" />
|
||||
</vector>
|
||||
Reference in New Issue
Block a user