diff --git a/README.md b/README.md index 2167a89..a6cbc51 100644 --- a/README.md +++ b/README.md @@ -11,12 +11,12 @@ Payload launcher written in Kotlin for Nintendo Switch. **Application doesn't require Root on your device.** -[SX Loader](https://sx.xecuter.com/), [ReiNX](https://reinx.guide/), [Fusee Primary](https://github.com/Atmosphere-NX/Atmosphere) and [Hekate](https://github.com/CTCaer/hekate) payloads bundled as default. +[ReiNX](https://reinx.guide/), [Fusee Primary](https://github.com/Atmosphere-NX/Atmosphere) and [Hekate](https://github.com/CTCaer/hekate) payloads bundled as default. ## Usage * Launch application. * Find a cable to connect your device to the Nintendo Switch. For proper work, this should be a cable that is designed for data transmission, not just for charging. It is advisable to use an **A-to-C** cable and an **USB OTG** adapter. -* In the **"Payloads"** category, click the **"+"** button to select preloaded payload from your device's storage. Or simply transfer your payload to the Rekado folder in the device's memory. Or you can use the bundled payloads (**SX Loader/ReiNX/Hekate/Fusee Primary**). +* In the **"Payloads"** category, click the **"+"** button to select preloaded payload from your device's storage. Or simply transfer your payload to the Rekado folder in the device's memory. Or you can use the bundled payloads (**ReiNX/Hekate/Fusee Primary**). * Enter your Nintendo Switch into **RCM** mode in any convenient way. Your Nintendo Switch will power on by itself when plugged in, be sure to hold **VOLUME +**. * Connect the device to the Nintendo Switch and allow permission for the **USB** access if necessary. Wait unit payloads chooser dialog will be opened and select which one you want to load. * Wait for payload to finish loading on your console. diff --git a/app/build.gradle b/app/build.gradle index d44917b..999055e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.pavelrekun.rekado" minSdkVersion minimumSDKVersion targetSdkVersion currentSDKVersion - versionCode 74 - versionName "4.1.1" + versionCode appVersionCode + versionName appVersionName archivesBaseName = "[$versionName] Rekado [${versionCode}]" } @@ -66,8 +66,9 @@ dependencies { implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$androidXLifecycleVersion" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$androidXLifecycleVersion" implementation "androidx.lifecycle:lifecycle-common-java8:$androidXLifecycleVersion" - implementation "androidx.navigation:navigation-fragment-ktx:$androixXNavigationVersion" - implementation "androidx.navigation:navigation-ui-ktx:$androixXNavigationVersion" + implementation "androidx.navigation:navigation-fragment-ktx:$androidXNavigationVersion" + implementation "androidx.navigation:navigation-ui-ktx:$androidXNavigationVersion" + implementation "androidx.swiperefreshlayout:swiperefreshlayout:$androidXSwipeToRefreshLayoutVersion" // Google: Design implementation "com.google.android.material:material:$materialComponentsVersion" diff --git a/app/libs/magta.aar b/app/libs/magta.aar index 2a5e2e8..673e3f2 100644 Binary files a/app/libs/magta.aar and b/app/libs/magta.aar differ diff --git a/app/libs/penza.aar b/app/libs/penza.aar index 6bd83d0..bbeb4a6 100644 Binary files a/app/libs/penza.aar and b/app/libs/penza.aar differ diff --git a/app/src/main/java/com/pavelrekun/rekado/base/BaseActivity.kt b/app/src/main/java/com/pavelrekun/rekado/base/BaseActivity.kt index 3e8525c..67d9534 100644 --- a/app/src/main/java/com/pavelrekun/rekado/base/BaseActivity.kt +++ b/app/src/main/java/com/pavelrekun/rekado/base/BaseActivity.kt @@ -5,9 +5,11 @@ import android.os.Build import android.os.Bundle import androidx.navigation.NavController import androidx.navigation.findNavController +import com.pavelrekun.magta.design.resolveColorAttribute +import com.pavelrekun.magta.design.tintNavigationBar +import com.pavelrekun.magta.design.tintTaskDescription import com.pavelrekun.penza.base.PenzaActivity import com.pavelrekun.penza.services.helpers.ColorsHelper -import com.pavelrekun.penza.services.helpers.DesignHelper import com.pavelrekun.rekado.R import com.pavelrekun.rekado.containers.PrimaryContainerActivity @@ -35,11 +37,11 @@ open class BaseActivity : PenzaActivity() { } private fun initDesignRules() { - DesignHelper.tintTaskDescription(this, R.mipmap.ic_launcher, R.string.app_name, ColorsHelper.resolveColorAttribute(this, android.R.attr.windowBackground)) + tintTaskDescription(R.mipmap.ic_launcher, R.string.app_name, resolveColorAttribute(android.R.attr.windowBackground)) if (this is PrimaryContainerActivity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { - DesignHelper.tintNavigationBar(this, ColorsHelper.resolveColorAttribute(this, R.attr.colorBackgroundSecondary)) + tintNavigationBar(resolveColorAttribute(R.attr.colorBackgroundSecondary)) } } } diff --git a/app/src/main/java/com/pavelrekun/rekado/base/BasePreferencesFragment.kt b/app/src/main/java/com/pavelrekun/rekado/base/BasePreferencesFragment.kt index 0a847e3..2f5095e 100644 --- a/app/src/main/java/com/pavelrekun/rekado/base/BasePreferencesFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/base/BasePreferencesFragment.kt @@ -7,7 +7,7 @@ import android.view.ViewGroup import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.recyclerview.widget.RecyclerView -import com.pavelrekun.penza.services.extensions.convertPXToDP +import com.pavelrekun.magta.design.px open class BasePreferencesFragment(private val preferencesLayoutId: Int, private val titleResId: Int) : PreferenceFragmentCompat() { @@ -33,7 +33,7 @@ open class BasePreferencesFragment(private val preferencesLayoutId: Int, private super.onScrolled(recyclerView, dx, dy) if (view.canScrollVertically(SCROLL_DIRECTION_UP)) { - requireBaseActivity().supportActionBar?.elevation = 3.convertPXToDP(requireBaseActivity()).toFloat() + requireBaseActivity().supportActionBar?.elevation = 3.px.toFloat() } else { requireBaseActivity().supportActionBar?.elevation = 0F } diff --git a/app/src/main/java/com/pavelrekun/rekado/containers/PrimaryContainerActivity.kt b/app/src/main/java/com/pavelrekun/rekado/containers/PrimaryContainerActivity.kt index ef047a0..4ee1fd3 100644 --- a/app/src/main/java/com/pavelrekun/rekado/containers/PrimaryContainerActivity.kt +++ b/app/src/main/java/com/pavelrekun/rekado/containers/PrimaryContainerActivity.kt @@ -14,7 +14,6 @@ import com.pavelrekun.rekado.services.Constants import com.pavelrekun.rekado.services.dialogs.DialogsShower import com.pavelrekun.rekado.services.extensions.openAboutScreen import com.pavelrekun.rekado.services.extensions.openSettingsScreen -import com.pavelrekun.rekado.services.extensions.openTranslatorsScreen class PrimaryContainerActivity : BaseActivity() { @@ -54,11 +53,6 @@ class PrimaryContainerActivity : BaseActivity() { true } - R.id.navigation_translators -> { - openTranslatorsScreen() - true - } - else -> return false } } diff --git a/app/src/main/java/com/pavelrekun/rekado/containers/SecondaryContainerActivity.kt b/app/src/main/java/com/pavelrekun/rekado/containers/SecondaryContainerActivity.kt index ed4a83a..20fee07 100644 --- a/app/src/main/java/com/pavelrekun/rekado/containers/SecondaryContainerActivity.kt +++ b/app/src/main/java/com/pavelrekun/rekado/containers/SecondaryContainerActivity.kt @@ -4,15 +4,15 @@ import android.graphics.Color import android.os.Build import android.os.Bundle import androidx.activity.viewModels -import androidx.lifecycle.Observer -import com.pavelrekun.magta.isGesturalNavigationEnabled +import com.pavelrekun.magta.design.tintNavigationBar +import com.pavelrekun.magta.system.isGesturalNavigationEnabled import com.pavelrekun.penza.pickers.theme.ThemePickerViewModel -import com.pavelrekun.penza.services.helpers.DesignHelper import com.pavelrekun.rekado.R import com.pavelrekun.rekado.base.BaseActivity import com.pavelrekun.rekado.databinding.ActivityContainerSecondaryBinding import com.pavelrekun.rekado.services.dialogs.DialogsShower import com.pavelrekun.rekado.services.extensions.* +import dev.chrisbanes.insetter.applyInsetter import dev.chrisbanes.insetter.applySystemWindowInsetsToPadding class SecondaryContainerActivity : BaseActivity() { @@ -31,7 +31,7 @@ class SecondaryContainerActivity : BaseActivity() { prepareEdgeToEdge() prepareObservers() - if(savedInstanceState == null) { + if (savedInstanceState == null) { navigate() } } @@ -42,10 +42,14 @@ class SecondaryContainerActivity : BaseActivity() { window.setDecorFitsSystemWindows(false) } - DesignHelper.tintNavigationBar(this, Color.TRANSPARENT) + tintNavigationBar(Color.TRANSPARENT) } - binding.secondaryLayoutToolbar.applySystemWindowInsetsToPadding(top = true) + binding.secondaryLayoutToolbar.applyInsetter { + type(statusBars = true) { + padding() + } + } } private fun navigate() { @@ -63,7 +67,6 @@ class SecondaryContainerActivity : BaseActivity() { return when (intent.getIntExtra(NAVIGATION_TYPE, NAVIGATION_DESTINATION_UNKNOWN)) { NAVIGATION_DESTINATION_SETTINGS -> R.id.navigationSettings NAVIGATION_DESTINATION_ABOUT -> R.id.navigationAbout - NAVIGATION_DESTINATION_TRANSLATORS -> R.id.navigationTranslators NAVIGATION_DESTINATION_TOOLS_SERIAL_CHECKER -> R.id.navigationSerialChecker else -> NAVIGATION_DESTINATION_UNKNOWN } @@ -77,11 +80,11 @@ class SecondaryContainerActivity : BaseActivity() { } private fun prepareObservers() { - themesPickerViewModel.selectionResult.observe(this, Observer { + themesPickerViewModel.selectionResult.observe(this, { DialogsShower.showSettingsRestartDialog(this) }) - themesPickerViewModel.controlResult.observe(this, Observer { + themesPickerViewModel.controlResult.observe(this, { DialogsShower.showSettingsRestartDialog(this) }) } diff --git a/app/src/main/java/com/pavelrekun/rekado/data/Payload.kt b/app/src/main/java/com/pavelrekun/rekado/data/Payload.kt index 93608dc..00e8f6d 100644 --- a/app/src/main/java/com/pavelrekun/rekado/data/Payload.kt +++ b/app/src/main/java/com/pavelrekun/rekado/data/Payload.kt @@ -1,7 +1,7 @@ package com.pavelrekun.rekado.data import com.google.gson.annotations.SerializedName -import com.pavelrekun.penza.services.extensions.EMPTY_STRING +import com.pavelrekun.magta.system.EMPTY_STRING import com.pavelrekun.rekado.services.utils.MemoryUtils.getLocation data class Payload( diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/about_fragment/AboutFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/about_fragment/AboutFragment.kt index f6d4186..ad3b3fe 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/about_fragment/AboutFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/about_fragment/AboutFragment.kt @@ -2,15 +2,15 @@ package com.pavelrekun.rekado.screens.about_fragment import android.os.Bundle import android.view.View -import com.pavelrekun.magta.constants.Links +import com.pavelrekun.magta.services.constants.Links +import com.pavelrekun.magta.system.viewBinding import com.pavelrekun.rekado.BuildConfig import com.pavelrekun.rekado.R import com.pavelrekun.rekado.base.BaseFragment import com.pavelrekun.rekado.databinding.FragmentAboutBinding import com.pavelrekun.rekado.services.Constants -import com.pavelrekun.rekado.services.extensions.viewBinding import com.pavelrekun.rekado.services.utils.Utils -import dev.chrisbanes.insetter.applySystemWindowInsetsToPadding +import dev.chrisbanes.insetter.applyInsetter class AboutFragment : BaseFragment(R.layout.fragment_about) { @@ -39,7 +39,11 @@ class AboutFragment : BaseFragment(R.layout.fragment_about) { } private fun initEdgeToEdge() { - binding.aboutLayoutContainer.applySystemWindowInsetsToPadding(bottom = true) + binding.aboutLayoutContainer.applyInsetter { + type(navigationBars = true) { + padding() + } + } } } \ No newline at end of file diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/instructions_fragment/InstructionsFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/instructions_fragment/InstructionsFragment.kt index f8abbcd..94893a8 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/instructions_fragment/InstructionsFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/instructions_fragment/InstructionsFragment.kt @@ -2,11 +2,11 @@ package com.pavelrekun.rekado.screens.instructions_fragment import android.os.Bundle import android.view.View +import com.pavelrekun.magta.system.viewBinding import com.pavelrekun.rekado.R import com.pavelrekun.rekado.base.BaseFragment import com.pavelrekun.rekado.databinding.FragmentInstructionsBinding import com.pavelrekun.rekado.services.Constants -import com.pavelrekun.rekado.services.extensions.viewBinding import com.pavelrekun.rekado.services.utils.Utils class InstructionsFragment : BaseFragment(R.layout.fragment_instructions) { diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/logs_fragment/LogsFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/logs_fragment/LogsFragment.kt index 3628729..6ea4331 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/logs_fragment/LogsFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/logs_fragment/LogsFragment.kt @@ -4,12 +4,12 @@ import android.os.Bundle import android.view.View import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.pavelrekun.penza.services.extensions.tintContrast +import com.pavelrekun.magta.design.tintContrast +import com.pavelrekun.magta.system.viewBinding import com.pavelrekun.rekado.R import com.pavelrekun.rekado.base.BaseFragment import com.pavelrekun.rekado.databinding.FragmentLogsBinding import com.pavelrekun.rekado.services.utils.LoginUtils -import com.pavelrekun.rekado.services.extensions.viewBinding class LogsFragment : BaseFragment(R.layout.fragment_logs) { diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsAdapter.kt b/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsAdapter.kt index bbd68fd..c12a4a4 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsAdapter.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsAdapter.kt @@ -4,12 +4,12 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.pavelrekun.penza.services.extensions.EMPTY_STRING +import com.pavelrekun.magta.system.EMPTY_STRING import com.pavelrekun.rekado.data.Payload import com.pavelrekun.rekado.databinding.ItemPayloadBinding import com.pavelrekun.rekado.services.Events -import com.pavelrekun.rekado.services.utils.LoginUtils import com.pavelrekun.rekado.services.payloads.PayloadHelper +import com.pavelrekun.rekado.services.utils.LoginUtils import org.greenrobot.eventbus.EventBus import java.io.File diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsFragment.kt index 167e631..5bbe5da 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsFragment.kt @@ -6,17 +6,16 @@ import android.os.Bundle import android.view.View import android.widget.Toast import androidx.fragment.app.activityViewModels -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager -import com.pavelrekun.penza.services.extensions.tintContrast +import com.pavelrekun.magta.design.tintContrast +import com.pavelrekun.magta.system.extractFileName +import com.pavelrekun.magta.system.viewBinding import com.pavelrekun.rekado.R import com.pavelrekun.rekado.base.BaseFragment import com.pavelrekun.rekado.databinding.FragmentPayloadsBinding import com.pavelrekun.rekado.services.Constants import com.pavelrekun.rekado.services.Events import com.pavelrekun.rekado.services.dialogs.DialogsShower -import com.pavelrekun.rekado.services.extensions.extractFileName -import com.pavelrekun.rekado.services.extensions.viewBinding import com.pavelrekun.rekado.services.payloads.PayloadHelper import com.pavelrekun.rekado.services.payloads.Result import com.pavelrekun.rekado.services.utils.LoginUtils @@ -50,7 +49,7 @@ class PayloadsFragment : BaseFragment(R.layout.fragment_payloads) { if (requestCode == Constants.KEY_OPEN_PAYLOAD) { when (resultCode) { Activity.RESULT_OK -> data?.data?.let { - val name = it.extractFileName() + val name = it.extractFileName(requireContext()) if (name != null) { val inputStream = requireBaseActivity().contentResolver.openInputStream(it) diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsViewModel.kt b/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsViewModel.kt index 4791cf0..f5a661a 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsViewModel.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/payload_fragment/PayloadsViewModel.kt @@ -27,7 +27,7 @@ class PayloadsViewModel : ViewModel() { val downloadPayloadResult = MutableLiveData() fun fetchExternalConfig() { - val errorsHandler = CoroutineExceptionHandler { _, exception -> + val errorsHandler = CoroutineExceptionHandler { _, _ -> fetchConfigResult.value = Result.ERROR isProgressShowing.value = false } diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/serial_checker_activity/SerialCheckerFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/serial_checker_activity/SerialCheckerFragment.kt index c38c1a9..04e60ca 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/serial_checker_activity/SerialCheckerFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/serial_checker_activity/SerialCheckerFragment.kt @@ -5,15 +5,16 @@ import android.os.Bundle import android.view.View import android.widget.Toast import com.google.zxing.integration.android.IntentIntegrator +import com.pavelrekun.magta.design.getString +import com.pavelrekun.magta.design.isEmpty +import com.pavelrekun.magta.system.viewBinding import com.pavelrekun.rekado.R import com.pavelrekun.rekado.base.BaseFragment import com.pavelrekun.rekado.databinding.FragmentSerialCheckerBinding import com.pavelrekun.rekado.services.Constants -import com.pavelrekun.rekado.services.extensions.getString -import com.pavelrekun.rekado.services.extensions.isEmpty -import com.pavelrekun.rekado.services.extensions.viewBinding import com.pavelrekun.rekado.services.utils.SerialUtils import com.pavelrekun.rekado.services.utils.Utils +import dev.chrisbanes.insetter.applyInsetter import dev.chrisbanes.insetter.applySystemWindowInsetsToPadding class SerialCheckerFragment : BaseFragment(R.layout.fragment_serial_checker) { @@ -73,7 +74,11 @@ class SerialCheckerFragment : BaseFragment(R.layout.fragment_serial_checker) { } private fun initEdgeToEdge() { - binding.serialCheckerLayoutContainer.applySystemWindowInsetsToPadding(bottom = true) + binding.serialCheckerLayoutContainer.applyInsetter { + type(navigationBars = true) { + padding() + } + } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/settings_fragment/SettingsFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/settings_fragment/SettingsFragment.kt index 990ee4e..476604d 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/settings_fragment/SettingsFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/settings_fragment/SettingsFragment.kt @@ -18,6 +18,7 @@ import com.pavelrekun.rekado.services.payloads.PayloadHelper import com.pavelrekun.rekado.services.utils.LoginUtils import com.pavelrekun.rekado.services.utils.PreferencesUtils import com.pavelrekun.rekado.services.utils.Utils +import dev.chrisbanes.insetter.applyInsetter import dev.chrisbanes.insetter.applySystemWindowInsetsToPadding class SettingsFragment : BasePreferencesFragment(R.xml.preferences, R.string.navigation_settings) { @@ -120,7 +121,7 @@ class SettingsFragment : BasePreferencesFragment(R.xml.preferences, R.string.nav } private fun initPayloadsCategory() { - payloadsHidePreference.setOnPreferenceChangeListener { preference, newValue -> + payloadsHidePreference.setOnPreferenceChangeListener { _, newValue -> PreferencesUtils.setHideBundledPayloadsEnabled(newValue as Boolean) initAutoInjectorCategory() true @@ -141,7 +142,11 @@ class SettingsFragment : BasePreferencesFragment(R.xml.preferences, R.string.nav private fun initEdgeToEdge() { - listView.applySystemWindowInsetsToPadding(bottom = true) + listView.applyInsetter { + type(navigationBars = true) { + padding() + } + } } } \ No newline at end of file diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/tools_fragment/ToolsFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/tools_fragment/ToolsFragment.kt index e55abf5..4c486e7 100644 --- a/app/src/main/java/com/pavelrekun/rekado/screens/tools_fragment/ToolsFragment.kt +++ b/app/src/main/java/com/pavelrekun/rekado/screens/tools_fragment/ToolsFragment.kt @@ -2,11 +2,11 @@ package com.pavelrekun.rekado.screens.tools_fragment import android.os.Bundle import android.view.View +import com.pavelrekun.magta.system.viewBinding import com.pavelrekun.rekado.R import com.pavelrekun.rekado.base.BaseFragment import com.pavelrekun.rekado.databinding.FragmentToolsBinding import com.pavelrekun.rekado.services.extensions.openToolsSerialCheckerScreen -import com.pavelrekun.rekado.services.extensions.viewBinding class ToolsFragment : BaseFragment(R.layout.fragment_tools) { diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/translators_fragment/TranslatorsFragment.kt b/app/src/main/java/com/pavelrekun/rekado/screens/translators_fragment/TranslatorsFragment.kt deleted file mode 100644 index f2967e5..0000000 --- a/app/src/main/java/com/pavelrekun/rekado/screens/translators_fragment/TranslatorsFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.pavelrekun.rekado.screens.translators_fragment - -import android.os.Bundle -import android.view.View -import androidx.recyclerview.widget.LinearLayoutManager -import com.pavelrekun.magta.translators.Language -import com.pavelrekun.rekado.R -import com.pavelrekun.rekado.base.BaseFragment -import com.pavelrekun.rekado.databinding.FragmentTranslatorsBinding -import com.pavelrekun.rekado.screens.translators_fragment.adapters.TranslatorsAdapter -import com.pavelrekun.rekado.services.extensions.viewBinding -import dev.chrisbanes.insetter.applySystemWindowInsetsToPadding - -class TranslatorsFragment : BaseFragment(R.layout.fragment_translators) { - - private val binding by viewBinding(FragmentTranslatorsBinding::bind) - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - initScrollingBehaviour(binding.translatorsData) - initList() - initEdgeToEdge() - } - - private fun initList() { - val languagesList = arrayListOf() - - languagesList.add(Language.english(R.string.translators_english)) - languagesList.add(Language.russian(R.string.translators_russian)) - languagesList.add(Language.ukrainian(R.string.translators_ukrainian)) - languagesList.add(Language.spanish(R.string.translators_spanish)) - - binding.translatorsData.apply { - setHasFixedSize(true) - layoutManager = LinearLayoutManager(requireBaseActivity()) - adapter = TranslatorsAdapter(languagesList) - } - } - - private fun initEdgeToEdge() { - binding.translatorsData.applySystemWindowInsetsToPadding(bottom = true) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/pavelrekun/rekado/screens/translators_fragment/adapters/TranslatorsAdapter.kt b/app/src/main/java/com/pavelrekun/rekado/screens/translators_fragment/adapters/TranslatorsAdapter.kt deleted file mode 100644 index b64aabb..0000000 --- a/app/src/main/java/com/pavelrekun/rekado/screens/translators_fragment/adapters/TranslatorsAdapter.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.pavelrekun.rekado.screens.translators_fragment.adapters - -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import com.pavelrekun.magta.translators.Language -import com.pavelrekun.rekado.databinding.ItemTranslatorBinding - -class TranslatorsAdapter(val data: List) : RecyclerView.Adapter() { - - override fun getItemCount() = data.size - - override fun onBindViewHolder(holder: ViewHolder, position: Int) = holder.bind(data[position]) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val itemView = ItemTranslatorBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return ViewHolder(itemView) - } - - class ViewHolder(private val binding: ItemTranslatorBinding) : RecyclerView.ViewHolder(binding.root) { - - fun bind(language: Language) { - binding.itemTranslatorFlag.setImageResource(language.flag) - binding.itemTranslatorLanguage.setText(language.language) - binding.itemTranslatorList.setText(language.translators) - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/pavelrekun/rekado/services/dialogs/DialogsShower.kt b/app/src/main/java/com/pavelrekun/rekado/services/dialogs/DialogsShower.kt index 255d050..b9f4a1d 100644 --- a/app/src/main/java/com/pavelrekun/rekado/services/dialogs/DialogsShower.kt +++ b/app/src/main/java/com/pavelrekun/rekado/services/dialogs/DialogsShower.kt @@ -4,6 +4,8 @@ import android.widget.ArrayAdapter import android.widget.Toast import androidx.appcompat.app.AlertDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.pavelrekun.magta.design.getString +import com.pavelrekun.magta.design.isEmpty import com.pavelrekun.magta.restartApp import com.pavelrekun.penza.services.helpers.SettingsDialogsHelper import com.pavelrekun.rekado.R @@ -15,8 +17,6 @@ import com.pavelrekun.rekado.databinding.DialogPayloadDownloadBinding import com.pavelrekun.rekado.screens.payload_fragment.PayloadsViewModel import com.pavelrekun.rekado.services.Constants import com.pavelrekun.rekado.services.Events -import com.pavelrekun.rekado.services.extensions.getString -import com.pavelrekun.rekado.services.extensions.isEmpty import com.pavelrekun.rekado.services.payloads.PayloadHelper import com.pavelrekun.rekado.services.utils.PreferencesUtils import com.pavelrekun.rekado.services.utils.Utils diff --git a/app/src/main/java/com/pavelrekun/rekado/services/extensions/BindingExtensions.kt b/app/src/main/java/com/pavelrekun/rekado/services/extensions/BindingExtensions.kt deleted file mode 100644 index 6b88d91..0000000 --- a/app/src/main/java/com/pavelrekun/rekado/services/extensions/BindingExtensions.kt +++ /dev/null @@ -1,49 +0,0 @@ -package com.pavelrekun.rekado.services.extensions - -import android.view.View -import androidx.fragment.app.Fragment -import androidx.lifecycle.DefaultLifecycleObserver -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.Observer -import androidx.viewbinding.ViewBinding -import kotlin.properties.ReadOnlyProperty -import kotlin.reflect.KProperty - -class FragmentViewBindingDelegate( - val fragment: Fragment, - val viewBindingFactory: (View) -> T -) : ReadOnlyProperty { - private var binding: T? = null - - init { - fragment.lifecycle.addObserver(object : DefaultLifecycleObserver { - override fun onCreate(owner: LifecycleOwner) { - fragment.viewLifecycleOwnerLiveData.observe(fragment, Observer { - it.lifecycle.addObserver(object : DefaultLifecycleObserver { - override fun onDestroy(owner: LifecycleOwner) { - binding = null - } - }) - }) - } - }) - } - - override fun getValue(thisRef: Fragment, property: KProperty<*>): T { - val binding = binding - if (binding != null) { - return binding - } - - val lifecycle = fragment.viewLifecycleOwner.lifecycle - if (!lifecycle.currentState.isAtLeast(Lifecycle.State.INITIALIZED)) { - throw IllegalStateException("Should not attempt to get bindings when Fragment views are destroyed.") - } - - return viewBindingFactory(thisRef.requireView()).also { this@FragmentViewBindingDelegate.binding = it } - } -} - -fun Fragment.viewBinding(viewBindingFactory: (View) -> T) = - FragmentViewBindingDelegate(this, viewBindingFactory) \ No newline at end of file diff --git a/app/src/main/java/com/pavelrekun/rekado/services/extensions/GenericExtensions.kt b/app/src/main/java/com/pavelrekun/rekado/services/extensions/GenericExtensions.kt index afdd5a7..a2bba8d 100644 --- a/app/src/main/java/com/pavelrekun/rekado/services/extensions/GenericExtensions.kt +++ b/app/src/main/java/com/pavelrekun/rekado/services/extensions/GenericExtensions.kt @@ -1,12 +1,8 @@ package com.pavelrekun.rekado.services.extensions -import android.net.Uri -import android.provider.MediaStore -import android.widget.EditText import com.google.gson.GsonBuilder import com.google.gson.reflect.TypeToken import com.google.gson.stream.JsonReader -import com.pavelrekun.rekado.RekadoApplication import com.pavelrekun.rekado.data.Config import java.io.File import java.io.InputStream @@ -14,23 +10,8 @@ import java.io.InputStreamReader private val CONFIG_TYPE = object : TypeToken() {}.type -fun EditText.getString() = this.text.toString() - -fun EditText.isEmpty() = this.text.isEmpty() - fun InputStream.toFile(path: String) { File(path).outputStream().use { this.copyTo(it) } } -fun Uri.extractFileName(): String? { - val projection = arrayOf(MediaStore.MediaColumns.DISPLAY_NAME) - RekadoApplication.context.contentResolver.query(this, projection, null, null, null)?.use { - if (it.moveToFirst()) { - return it.getString(0) - } - } - - return null -} - fun InputStream.parseConfig(): Config = GsonBuilder().create().fromJson(JsonReader(InputStreamReader(this)), CONFIG_TYPE) \ No newline at end of file diff --git a/app/src/main/java/com/pavelrekun/rekado/services/extensions/NavigationExtensions.kt b/app/src/main/java/com/pavelrekun/rekado/services/extensions/NavigationExtensions.kt index 274df3e..7316a71 100644 --- a/app/src/main/java/com/pavelrekun/rekado/services/extensions/NavigationExtensions.kt +++ b/app/src/main/java/com/pavelrekun/rekado/services/extensions/NavigationExtensions.kt @@ -13,8 +13,7 @@ const val NAVIGATION_TITLE = "NAVIGATION_TITLE" const val NAVIGATION_DESTINATION_UNKNOWN = -1 const val NAVIGATION_DESTINATION_ABOUT = 0 const val NAVIGATION_DESTINATION_SETTINGS = 1 -const val NAVIGATION_DESTINATION_TRANSLATORS = 2 -const val NAVIGATION_DESTINATION_TOOLS_SERIAL_CHECKER = 3 +const val NAVIGATION_DESTINATION_TOOLS_SERIAL_CHECKER = 2 fun BaseActivity.openAboutScreen() { val bundle = Bundle().apply { @@ -47,15 +46,6 @@ fun BaseActivity.openToolsSerialCheckerScreen() { controller.navigate(R.id.navigationContainerSecondary, bundle) } -fun BaseActivity.openTranslatorsScreen() { - val bundle = Bundle().apply { - putInt(NAVIGATION_TYPE, NAVIGATION_DESTINATION_TRANSLATORS) - putString(NAVIGATION_TITLE, R.string.navigation_translators.asString()) - } - - controller.navigate(R.id.navigationContainerSecondary, bundle) -} - fun prepareAnimations(): NavOptions { return NavOptions.Builder() .setEnterAnim(R.anim.nav_default_enter_anim) diff --git a/app/src/main/java/com/pavelrekun/rekado/services/payloads/PayloadHelper.kt b/app/src/main/java/com/pavelrekun/rekado/services/payloads/PayloadHelper.kt index 529dcf0..c527288 100644 --- a/app/src/main/java/com/pavelrekun/rekado/services/payloads/PayloadHelper.kt +++ b/app/src/main/java/com/pavelrekun/rekado/services/payloads/PayloadHelper.kt @@ -6,7 +6,7 @@ import com.pavelrekun.rekado.services.utils.PreferencesUtils object PayloadHelper { - val BUNDLED_PAYLOADS = listOf("hekate.bin", "sx_loader.bin", "fusee_primary.bin", "reinx.bin") + val BUNDLED_PAYLOADS = listOf("hekate.bin", "fusee_primary.bin", "reinx.bin") fun getAllPayloads(): MutableList { return if (PreferencesUtils.checkHideBundledPayloadsEnabled()) { diff --git a/app/src/main/java/com/pavelrekun/rekado/services/utils/MemoryUtils.kt b/app/src/main/java/com/pavelrekun/rekado/services/utils/MemoryUtils.kt index 14e0958..fca1fef 100644 --- a/app/src/main/java/com/pavelrekun/rekado/services/utils/MemoryUtils.kt +++ b/app/src/main/java/com/pavelrekun/rekado/services/utils/MemoryUtils.kt @@ -33,7 +33,6 @@ object MemoryUtils { private fun copyBundledPayloads() { copyPayload(resources.openRawResource(R.raw.fusee_primary), "fusee_primary.bin") copyPayload(resources.openRawResource(R.raw.hekate), "hekate.bin") - copyPayload(resources.openRawResource(R.raw.sx_loader), "sx_loader.bin") copyPayload(resources.openRawResource(R.raw.reinx), "reinx.bin") EventBus.getDefault().post(Events.UpdatePayloadsListEvent()) diff --git a/app/src/main/java/com/pavelrekun/rekado/services/utils/PreferencesUtils.kt b/app/src/main/java/com/pavelrekun/rekado/services/utils/PreferencesUtils.kt index bfa3f68..31a9e49 100644 --- a/app/src/main/java/com/pavelrekun/rekado/services/utils/PreferencesUtils.kt +++ b/app/src/main/java/com/pavelrekun/rekado/services/utils/PreferencesUtils.kt @@ -3,7 +3,7 @@ package com.pavelrekun.rekado.services.utils import androidx.core.content.edit import androidx.preference.PreferenceManager import com.google.gson.GsonBuilder -import com.pavelrekun.penza.services.extensions.EMPTY_STRING +import com.pavelrekun.magta.system.EMPTY_STRING import com.pavelrekun.rekado.RekadoApplication import com.pavelrekun.rekado.data.Config import com.pavelrekun.rekado.data.Payload diff --git a/app/src/main/res/layout/fragment_translators.xml b/app/src/main/res/layout/fragment_translators.xml deleted file mode 100644 index d6edeb7..0000000 --- a/app/src/main/res/layout/fragment_translators.xml +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_dialog_payload.xml b/app/src/main/res/layout/item_dialog_payload.xml index 4721098..eea63ab 100644 --- a/app/src/main/res/layout/item_dialog_payload.xml +++ b/app/src/main/res/layout/item_dialog_payload.xml @@ -9,4 +9,4 @@ android:paddingEnd="24dp" android:textColor="?android:attr/textColorPrimary" android:textSize="16sp" - tools:text="SXLoader" /> \ No newline at end of file + tools:text="Hekate" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_payload.xml b/app/src/main/res/layout/item_payload.xml index d078298..60ec473 100644 --- a/app/src/main/res/layout/item_payload.xml +++ b/app/src/main/res/layout/item_payload.xml @@ -14,7 +14,7 @@ android:paddingBottom="8dp" android:paddingTop="8dp" android:textColor="?android:attr/textColorPrimary" - tools:text="SX OS" /> + tools:text="Hekate" /> - - diff --git a/app/src/main/res/navigation/navigation_secondary.xml b/app/src/main/res/navigation/navigation_secondary.xml index 9c5a7c0..625ca72 100644 --- a/app/src/main/res/navigation/navigation_secondary.xml +++ b/app/src/main/res/navigation/navigation_secondary.xml @@ -20,8 +20,4 @@ android:id="@+id/navigationSerialChecker" android:name="com.pavelrekun.rekado.screens.serial_checker_activity.SerialCheckerFragment" /> - - \ No newline at end of file diff --git a/app/src/main/res/raw/config.json b/app/src/main/res/raw/config.json index c4b2e34..3075108 100644 --- a/app/src/main/res/raw/config.json +++ b/app/src/main/res/raw/config.json @@ -1,20 +1,15 @@ { - "timestamp": 1611589130, + "timestamp": 1618692915, "payloads":[ - { - "title":"sx_loader.bin", - "downloadUrl": "https://pavelrekun.dev/payloads/sx_loader.bin", - "version":"1.0" - }, { "title":"hekate.bin", "downloadUrl": "https://pavelrekun.dev/payloads/hekate.bin", - "version":"5.5.3" + "version":"5.5.5" }, { "title":"fusee_primary.bin", "downloadUrl": "https://pavelrekun.dev/payloads/fusee_primary.bin", - "version":"0.17.1" + "version":"0.19.1" }, { "title":"reinx.bin", diff --git a/app/src/main/res/raw/hekate.bin b/app/src/main/res/raw/hekate.bin index a9978dc..197bf41 100644 Binary files a/app/src/main/res/raw/hekate.bin and b/app/src/main/res/raw/hekate.bin differ diff --git a/app/src/main/res/raw/sx_loader.bin b/app/src/main/res/raw/sx_loader.bin deleted file mode 100644 index f9a4382..0000000 Binary files a/app/src/main/res/raw/sx_loader.bin and /dev/null differ diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000..7c9b684 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,105 @@ + + + + Payloads + Outils + Instructions + Logs + À propos de Rekado + Soutenir le développement + Paramètres + Vérificateur de numéro de série + + Description + Développeur + Rekado est une appli boîte à outils pour la Nintendo Switch incluant un injecteur de payloads et permettant de vérifier si la console est vulnérable avec le numéro de série. + Portfolio + Toutes les informations sur le développeur et le blog avec des nouvelles + Profile sur les hobbies et photo de drone + Liste des applis open source + Micro-blog personnel + + Le nom ou l\'URL ne devraient pas être vides ! + Payload téléchargé avec succès ! + Une erreur est survenue lors du téléchargement du payload. Veuillez vérifier votre connexion ou l\'URL. + + Vérificateur de numéro de série + Vérifiez si votre Nintendo Switch est vulnérable en utilisant le vérificateur de numéro de série + + Câble + Pour commencer, vous devez avoir un câble pour connecter votre appareil à la Switch. Pour un bon fonctionnement, le câble doit permettre la transmission de données, pas seulement charger la batterie.\n\nIl est conseillé d\'utiliser un câble USB type A vers type C et un adaptateur USB OTG. + Payload + Dans la cat\u00e9gorie \"Payloads\", cliquez sur le bouton \"+\" pour s\u00e9lectionner un payload depuis le stockage de votre t\u00e9l\u00e9phone. Ou bien mettez simplement votre payload dans le dossier Rekado de votre t\u00e9l\u00e9phone (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\nOu vous pouvez utiliser les payloads int\u00e9gr\u00e9s (Hekate/ReiNX/Fusee Primary) + Mettez votre Switch en mode RCM par la méthode de votre choix. \n\nVotre Switch démarrera automatiquement lorsque vous brancherez le câble, veuillez vous assurer que vous appuyez sur le bouton VOLUME + de la Switch avant le branchement. + Finalement + Connectez votre appareil à la Switch et autorisez la permission pour l\'accès USB si nécessaire. Attendez que l\'application ouvre le menu de choix de payload et sélectionner celui que vous voulez injecter. + + Vous pouvez soutenir le développement de l\'application en m\'achetant un café. Si vous le voulez bien sûr. + + Injection automatique + Activer l\'injection automatique + D\u00e9sactiver l\'injection automatique + Payload + Payloads + Masquer les payloads incluses avec l\'appli + Masquer toutes les payloads incluses (Hekate/Fusee Primary/ReiNX) + Effacer + Supprimer tous les payloads ajoutés (à l\'exception de Hekate/Fusee Primary/ReiNX) + Apparence + Thème + Thème principal de l\'application + Couleur d\'accentuation + Couleur utilisée pour les éléments de l\'interface + Apparence aléatoire + Définit un thème et une couleur aléatoires + Réinitialiser + Réinitialiser l\'apparence par défaut + Choisissez la couleur + Fermer + Choisissez un thème + Contrôle + Themes + Manuel + Par défaut + Défini par \"Économiseur de batterie\" + Paramètres modifiés + Les paramètres ont été modifiés. Veuillez redémarrer pour que les changements prennent effet.\n\nVoulez-vous redémarrer l\'application maintenant ? + Redémarrer + Annuler + + Choisir un payload + Effacer + Êtes-vous sur de vouloir effacer ce payload ? + Choisir le payload + Télécharger + Nom + Télécharger + Mises à jour des payloads + Il y a une mise à jour pour certaines des payloads incluses. La mise à jour est recommandée. + Pas de payload + Il semblerait que vous n\'avez pas ajouter de payload externe et avez caché les payloads incluses. L\'injection est impossible.\n\nAjoutez vos payloads ou désactivez l\'option pour cacher les payloads incluses dans les options, puis réessayez. + Mettre à jour les payloads. + Fermer + + Vérificateur + Information + Vérificateur de numéro de série + Vérifier + Numéro de série commençant par XAW1\nXAW10000000000 - XAW10074000000 : Non patché (vulnérable)\nXAW10075000000 - XAW10120000000 : Peut être patché\nXAW10120000000 et plus : Patché + Numéro de série commençant par XAW4\nXAW40000000000 - XAW40011000000 : Non patché (vulnérable)\nXAW40011000000 - XAW40012000000 : Peut être patché\nXAW40012000000 et plus : Patché + Numéro de série commençant par XAW7\nXAW70000000000 - XAW70017800000 : Non patché (vulnérable)\nXAW70017800000 - XAW70030000000 : Peut être patché\nXAW70030000000 et plus : Patché + Numéro de série commençant par XAJ1\nXAJ10000000000 - XAJ10020000000 : Non patché (vulnérable)\nXAJ10020000000 - XAJ10030000000 : Peut être patché\nXAJ10030000000 et plus : Patché + Numéro de série commençant par XAJ4\nXAJ40000000000 - XAJ40046000000 : Non patché (vulnérable)\nXAJ40046000000 - XAJ40060000000 : Peut être patché\nXAJ40060000000 et plus : Patché + Numéro de série commençant par XAJ7\nXAJ70000000000 - XAJ70040000000 : Non patché (vulnérable)\nXAJ70040000000 - XAJ70050000000 : Peut être patché\nXAJ70050000000 et plus : Patché + Numéro de série commençant par XAW9\nConsole reconditionnées provenant de Nintendo, pas d\'informations, mais très probablement patchées. + Numéro de série commençant par XAK\nPas d\'informations disponible, car elle sont vendues uniquement en Corée. + Non patchée + Patchée + Peut être patchée + Impossible de vérifier ce numéro de série ! + Le numéro de série ne peut pas être vide ! + La taille maximale du numéro de série est de 14 caractères. + Echec du scan du code barre ! + + La payload choisie ne peut pas être ajoutée ! + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 0000000..a52d933 --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,105 @@ + + + + Payload + Strumenti + Istruzioni + Registro + Riguardo Rekado + Sostieni lo sviluppo + Impostazioni + Controllo numero seriale + + Descrizione + Sviluppatore + Rekado è uno strumento per Nintendo Switch che include l\'iniezione di payload e un controllo di vulnerabilità della console tramite numero seriale + Portfolio + Tutte le informazioni sullo sviluppatore e il blog con le notizie + Profilo di hobby con foto di un drone + Lista delle applicazioni a sorgente aperto + Micro-blog personale + + Il nome o l\'URL non possono essere vuoti! + Payload scaricato correttamente! + C\'è stato un errore scaricando il payload. Controlla la tua connessione o errori nell\'URL. + + Controllo numero seriale + Controlla se il tuo Nintendo Switch è vulnerabile con il numero seriale dell\'unità + + Cavo + Prima devi trovare un cavo per connettere il tuo dispositivo al Nintendo Switch. Per funzionare correttamente, il cavo dovrebbe essere progettato per trasmettere dati, non solo per ricarica.\n\nSi consiglia di usare un cavo da tipo A a tipo C ed un adattatore USB OTG. + Payload + Puoi aggiungere il tuo payload dalla memoria del dispositivo (clicca il tasto \"+\"), scaricarlo via link diretto (clicca il tasto con l\'icona nuvola) nella schermata \"Payload\" o semplicemente spostalo nella cartella Rekado (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\nPuoi anche usare uno dei payload integrati (Hekate/Fusee Primary/ReiNX). + Avvia il tuo Nintendo Switch in modalità RCM con il metodo che preferisci.\n\nIl tuo Nintendo Switch si accenderà da solo una volta collegato, assicurati di tenere premuto \"VOLUME +\". + Conclusione + Connetti il dispositivo al Nintendo Switch e permetti l\'accesso USB, se richiesto. Attendi finchè la finestra di scelta del payload si apra e seleziona quello che vuoi caricare. + + Puoi sostenere lo sviluppatore dell\'app offrendogli un caffè. Se vuoi, ovviamente. + + Iniezione automatica + Attiva l\'iniezione automatica + Disattiva l\'iniezione automatica + Payload + Payload + Nascondi payload predefiniti + Nascondi tutti i payload predefiniti (Hekate/Fusee Primary/ReiNX) + Svuota + Rimuovi tutti i payload aggiunti eccetto quelli integrati (Hekate/Fusee Primary/ReiNX) + Aspetto + Tema + Tema principale dell\'app + Colore titoli + Colore usato per gli elementi dell\'interfeccia + Aspetto casuale + Imposta tema e colori casuali + Ripristina + Ripristina le impostazioni di aspetto predefinite + Scegli il colore + Chiudi + Scegli il tema + Controllo + Temi + Manuale + Predefinito di sistema + In base a \"Risparmio energetico\" + Impostazioni modificate + Le impostazioni sono state modificate. Si prega di riavviare l\'app affinché le modifiche abbiano effetto.\nRiavviare l\'app adesso? + Riavvia + Annulla + + Scegli il payload + Svuota + Sei sicuro di volere eliminare i payload? + Scegli payload + Scarica + Nome + Scarica + Aggiornamenti payload + È disponibile un aggiornamento per alcuni payload predefiniti. L\'aggiornamento è consigliato. + Nessun payload + Sembra che tu non abbia aggiunto payload esterni e che tu abbia nascosto quelli predefiniti. L\'iniezione non è possibile.\n\nAggiungi i tuoi payload o rendi visibili quelli predefiniti nelle \"Impostazioni\" e riprova. + Aggiorna i payload + Chiudi + + Verificatore + Informazioni + Numero seriale + Controlla + Numeri seriali che iniziano con XAW1\nXAW10000000000 - XAW10074000000: Non aggiornati\nXAW10075000000 - XAW10120000000: Possibilmente vulnerabili\nXAW10120000000 and higher: Non vulnerabili\n + Numeri seriali che iniziano con XAW4\nXAW40000000000 - XAW40011000000: Vulnerabili\nXAW40011000000 - XAW40012000000: Possibilmente vulnerabili\nXAW40012000000 and higher: Non vulnerabili\n + Numeri seriali che iniziano con XAW7\nXAW70000000000 - XAW70017800000: Vulnerabili\nXAW70017800000 - XAW70030000000: Possibilmente vulnerabili\nXAW70030000000 and higher: Non vulnerabili\n + Numeri seriali che iniziano con XAJ1\nXAJ10000000000 - XAJ10020000000: Vulnerabili\nXAJ10020000000 - XAJ10030000000: Possibilmente vulnerabili\nXAJ10030000000 and higher: Non vulnerabili\n + Numeri seriali che iniziano con XAJ4\nXAJ40000000000 - XAJ40046000000: Vulnerabili\nXAJ40046000000 - XAJ40060000000: Possibilmente vulnerabili\nXAJ40060000000 and higher: Non vulnerabili\n + Numeri seriali che iniziano con XAJ7\nXAJ70000000000 - XAJ70040000000: Vulnerabili\nXAJ70040000000 - XAJ70050000000: Possibilmente vulnerabili\nXAJ70050000000 and higher: Non vulnerabili\n + Numeri seriali che iniziano con XAW9\nDispositivi ricondizionati direttamente da Nintendo, quindi non ci sono informazioni certe, ma probabilmente sono stati tutti sistemati.\n + Numeri seriali che iniziano con XAK\nNessuna informazione disponibile, dato che questi dispositivi sono venduti unicamente in Corea. + Vulnerabili + Non vulnerabili + Possibilmente non vulnerabili + Impossibile controllore il numero seriale! + Il numero seriale non può essere vuoto! + La lunghezza massima del numero di serie è di 14 caratteri ! + Scansione del codice a barre fallita! + + Il payload selezionato non può essere aggiunto! + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000..2ff9051 --- /dev/null +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,105 @@ + + + + Cargas + Ferramentas + Instruções + Registros + Sobre o Rekado + Ajude no desenvolvimento + Configurações + Checar Serial + + Descrição + Desenvolvedor + Rekado é um conjunto de ferramentas para Nintendo Switch que inclui injeção de payload, verificação de número de série e outras funcionalidades. + Porfólio + Todas as informações sobre o desenvolvedor e o blog com as notícias + Perfil Hobby com foto de drone + Lista de aplicativos de código aberto + Micro-blog pessoal + + Nome ou URL não podem estar vazios! + O payload foi baixado com sucesso! + Um erro ocorreu ao baixar o payload. Verifique a sua conexão com a Internet ou erros na URL. + + Verificador de número de série + Verifica por meio do número de série se seu Nintendo Switch pode ser hackeado. + + Cabo + Você precisará de um cabo USB-C para ligar o smartphone ao Nintendo Switch. É preciso um cabo que sirva para transferência de dados e não apenas para recarregar a bateria.\n\nUm cabo USB-A para C e um adaptador OTG são recomendados. + Carga + Na categoria \"Payloads\", clique em \"+\" para selecionar um payload que voc\u00ea tenha previamente baixado para a mem\u00f3ria do smartphone. Ou simplesmente copie o arquivo payload preferido para a pasta Rekado na mem\u00f3ria do smartphone.\n\nOu voc\u00ea pode utilizar os payloads pr\u00e9-instalados (ReiNX/Hekate/Fusee Primary). + Ligue o Nintendo Switch no modo RCM. Com o console totalmente desligado, insira o jig no trilho do JoyCon direito, mantenha pressionado o botão VOLUME + e em seguida pressione o botão POWER. + Final + Conecte o smartphone ao Nintendo Switch e permita o acesso USB se for solicitado pelo smartphone. Espere até a caixa de diálogo aparecer e escolha o payload que deseja injetar. + + Você pode ajudar o desenvolvimento do aplicativo fazendo uma pequena doação. + + Injetor automático + Ativar \"Injetor autom\u00e1tico\" + Desativar \"Injetor autom\u00e1tico\" + Carga + Cargas + Esconder payloads pré-instalados + Esconder todos os payloads pré-instalados (Hekate/Fusee Primary/ReiNX) + Limpar + Remover todos os payloads adicionados exceto os pré-instalados (ReiNX/Hekate/Fusee Primary) + Aparência + Tema + Tema principal do aplicativo + Cor de destaque + Cor usada nos elementos destacados da interface + Aleatorizar aparência + Defina um tema e cor aleatoriamente + Redefinir + Redefinir aparência para configurações padrão + Escolha a cor + Fechar + Escolha o tema + Controle + Temas + Manual + Padrão do Sistema + Marcado como \"Salvar Bateria\" + Configurações alteradas + Configurações foram alteradas. Por favor, reinicie a aplicação para que as alterações tenham efeito.\nReiniciar o aplicativo agora? + Reiniciar + Cancelar + + Escolher payload + Limpar + Tem certeza que deseja apagar os payloads? + Escolher payload + Baixar + Nome + Baixar + Atualização de Payloads + Existe uma atualização para alguns payloads pré-instalados. A atualização é recomendada. + Sem payloads + parece que você não adicionou payloads externos e escondeu os pré-instalados. A injeção não é possível.\n\nAdicione seus payloads ou desabilite esconder os payloads pré-instalados nas \"Configurações\" e tente novamente. + Atualizar payloads + Fechar + + Verificador + Informações + Número de série + Verificar + Números de série que começam com XAW1\nXAW10000000000 - XAW10074000000: Sem o patch\nXAW10075000000 - XAW10120000000: Possivelmente com o patch\nXAW10120000000 e superior: Possuem o patch + Números de série que começam com XAW4\nXAW40000000000 - XAW40011000000: Sem o patch\nXAW40011000000 - XAW40012000000: Possivelmente possuem o patch\nXAW40012000000 e superior: Possuem o patch + Números de série que começam com XAW7\nXAW70000000000 - XAW70017800000: Sem o patch\nXAW70017800000 - XAW70030000000: Possivelmente possuem o patch\nXAW70030000000 e superior: Possuem o patch + Números de série que começam com XAJ1\nXAJ10000000000 - XAJ10020000000: Sem o patch\nXAJ10020000000 - XAJ10030000000: Possivelmente com o patch\nXAJ10030000000 e superior: Possuem o patch + Números de série que começam com XAJ4\nXAJ40000000000 - XAJ40046000000: Sem o patch\nXAJ40046000000 - XAJ40060000000: Possivelmente possuem o patch\nXAJ40060000000 e superior: Com o patch\n + Números de série que começam com XAJ7\nXAJ70000000000 - XAJ70040000000: Sem o patch\nXAJ70040000000 - XAJ70050000000: Possivelmente possuem o patch\nXAJ70050000000 e superior: Possuem o patch\n + Números de série que começam com XAW9\nUnidades recondicionadas pela Nintendo. Sem informações no momento, mas possivelmente todas possuem o patch. + Números de série que começam com XAK\nSem informações no momento, pois são vendidos apenas nas Coréias. + Não possui o patch + Possui o patch + Possivelmente possui o patch + Impossível verificar este número de série! + Número de série não pode estar vazio! + Tamanho máximo do número de série é de 14 caracteres! + Falhou ao digitalizar código de barras. + + O payload selecionado não pode ser adicionado! + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 01fe8ce..c0d303d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -9,7 +9,6 @@ Поддержать разработку Настройки Проверка по серийному номеру - Переводчики Описание Разработчик @@ -30,7 +29,7 @@ Кабель Во-первых, вам нужно найти кабель для подключения вашего устройства к Nintendo Switch. Для правильной работы это должен быть кабель, предназначенный для передачи данных, а не только для зарядки.\n\nРекомендуется использовать кабель A-to-C и адаптер USB OTG. Загрузчик - \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab+\u00bb), \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 (\u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u00ab\u043e\u0431\u043b\u0430\u043a\u0430\u00bb) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u00ab\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438\u00bb \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 Rekado (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\n\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u0432 (SX Loader/Hekate/Fusee Primary/ReiNX). + \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab+\u00bb), \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 (\u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u00ab\u043e\u0431\u043b\u0430\u043a\u0430\u00bb) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u00ab\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438\u00bb \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 Rekado (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\n\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u0432 (Hekate/ReiNX/Fusee Primary). Введите ваш Nintendo Switch в режим RCM любым удобным способом.\n\nВаш Nintendo Switch включается сам по себе, когда он подключен, обязательно удерживайте «VOLUME +». Заключение Подключите устройство к Nintendo Switch и при необходимости разрешите доступ к USB. Откроется диалоговое окно «Выбор загрузчика» и выберите, какой из них вы хотите загрузить. @@ -43,9 +42,9 @@ Загрузчик Загрузчики Скрыть предустановленные загрузчики - Скрыть все предустановленные загрузчики (SX Loader/Hekate/Fusee Primary/ReiNX) + Скрыть все предустановленные загрузчики (Hekate/Fusee Primary/ReiNX) Очистка - Удалить все добавленные загрузчики, кроме предустановленных (SX Loader/Hekate/Fusee Primary/ReiNX) + Удалить все добавленные загрузчики, кроме предустановленных (Hekate/Fusee Primary/ReiNX) Внешний вид Тема Основная тема приложения @@ -101,7 +100,6 @@ Серийный номер не может быть пустым! Максимальная длина серийного номера 14 символов! Не удалось отсканировать штрих-код! - Выбранный загрузчик не может быть выбран! diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000..65a29e1 --- /dev/null +++ b/app/src/main/res/values-tr/strings.xml @@ -0,0 +1,105 @@ + + + + Yükler + Aletler + Adımlar + Loglar + Rekado Hakkında + Geliştirmeyi destekle + Ayarlar + Seri numarası denetleyici + + Açıklama + Geliştirici + Rekado Nintendo Switch\'iniz için payload yerleştirme, konsolların seri numarasından açık testipi yapabilen ve daha fazla özellikler yakında gelecek olan bir araçtır. + Portföy + Geliştirici ve haber içeren blog hakkında tüm bilgiler + Drone fotoğraflı hobi profili + Açık kaynaklı uygulamaların listesi + Kişisel mikro-blog + + İsim veya URL boş olamaz! + Payload başarıyla indirildi! + Payload\'ı indirirken bir sorun oluştu. İnternetinizi veya URL\'deki yazım yanlışlarını kontrol edin. + + Seri numarası denetleyici + Nintendo Switch\'inizin seri numarası ile savunmasız olup olmadığını kontrol edin + + Kablo + İlk olarak, cihazınızı Nintendo Switch\'e bağlamak için bir kablo bulmalısınız. Düzgün çalışması için, kablo veri aktarımı için dizayn edilmiş olmalı, sadece şarj için değil.\n\nUSB A\'dan C\'ye kablo ve OTG adaptörü kullanmak uygundur. + Yük + Payloadlar ekran\u0131nda kendi payload\'\u0131n\u0131z\u0131 cihaz haf\u0131zas\u0131ndan y\u00fckleyebilirsiniz (\"+\" butonuna dokunun),linkten direkt indirebilirsiniz(\"bulut\" simgeli butona dokunun) veya Rekadonun klas\u00f6r\u00fcne ta\u015f\u0131yabilirsiniz (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\nAyr\u0131ca haz\u0131r payloadlar\u0131 da kullanabilirsiniz (Hekate/Fusee Primary/ReiNX). + Nintendo Switch\'inizi herhangi uygun bir yolla RCM moduna sokun.\n\nNintendo Switch\'iniz kablo takılıyken kendini açacaktır, \"SES +\" butonuna basılı tutun. + Son + Cihazınızı Nintendo Switch\'e bağlayın ve eğer gerekirse USB erişim iznini verin. Payload seçme diyaloğu gelene kadar bekleyin ve istediğinizi seçin. + + Geliştirici ona bir kupa kahve alarak destekleyebilirsiniz, isterseniz tabiki. + + Oto-injektör + \"Oto-inject\u00f6r\"\u00fc etkinle\u015ftir + \"Oto-injekt\u00f6r\"\u00fc kapat + Yük + Payloadlar + Dahili payloadları gizle + Bütün dahili payloadları gizle (Hekate/Fusee Primary/ReiNX) + Temizle + Dahili olanlar hariç (Hekate/Fusee Primary/ReiNX) bütün payloadları kaldır + Görünüm + Tema + Uygulamanın ana teması + Vurgu rengi + Arayüz bileşenlerinde kullanılacak renk tonu + Görünüşü rastgele seç + Rastgele tema ve renk seç + Sıfırla + Görünüşü varsayılan değerlere sıfırla + Renk seç + Kapat + Tema seç + Kontrol + Temalar + Manuel + Sistem varsayılanı + Güç tasarrufu tarafından ayarlandı + Ayarlar uygulandı + Ayarlar değişti. Değişikliklerin geçerli olabilmesi için uygulamayı yeniden başlatın.\n\nUygulama şimdi yeniden başlatılsın mı? + Yeniden başlat + İptal + + Payload Seçin + Temizle + Payloadları silmek istediğinizden emin misiniz? + Payload Seç + İndir + İsim + İndir + Payload güncellemeleri + Bazı dahili payloadlar için güncelleme mevcut. Yapmanız önerilir. + Payload yok + Hiçbir payload eklemediniz ve dahili olanları da gizlemişsiniz gibi görünüyor. İnjeksiyon mümkün değil.\n\nPayload ekleyin veya dahili olanları gizlemeyei ayarlardan kapatın ve terkar deneyin. + Payloadları güncelle + Kapat + + Kontrol edici + Bilgi + Seri numarası + Kontrol et + XAW1 ile başlayan seriler\nXAW10000000000 - XAW10074000000: Yamalanmamış\nXAW10075000000 - XAW10120000000: Muhtemelen yamalanmış\nXAW10120000000 ve yukarısı: Yamalanmış\n\n + XAW4 ile başlayan seriler\nXAW40000000000 - XAW40011000000: Yamalanmamış\nXAW40011000000 - XAW40012000000: Muhtemelen yamalanmış\nXAW40012000000 ve yukarısı: Yamalanmış\n + XAW7 ile başlayan seriler\nXAW70000000000 - XAW70017800000: Yamalanmamış\nXAW70017800000 - XAW70030000000: Muhtemelen yamalanmış\nXAW70030000000 ve yukarısı: Yamalanmış\n\n + XAJ1 ile başlayan seriler\nXAJ10000000000 - XAJ10020000000: Yamalanmamış\nXAJ10020000000 - XAJ10030000000: Muhtemelen yamalanmış\nXAJ10030000000 ve yukarısı: Yamalanmış\n\n + XAJ4 ile başlayan seriler\nXAJ40000000000 - XAJ40046000000: Yamalanmamış\nXAJ40046000000 - XAJ40060000000: Muhtemelen yamalanmış\nXAJ40060000000 ve yukarısı: Yamalanmış\n\n + XAJ7 ile başlayan seriler\nXAJ70000000000 - XAJ70040000000: Yamalanmamış\nXAJ70040000000 - XAJ70050000000: Muhtemelen yamalanmış\nXAJ70050000000 ve yukarısı: Yamalanmış\n\n + XAW9 ile başlayan seriler Nintendo\' nun bu konsolları toplayıp yenilediği konsollardır. Bilgi yok ama yüksek ihtimalle hepsi yamalanmış.\n\n + XAK ile başlayan seriler sadece Kore\' de satıldığı için bilgi yok. + Yamalanmamış + Yamalanmış + Muhtemelen yamalanmış + Bu seri numarası kontrol edilemiyor! + Seri numarası boş olamaz! + Seri numarası için maksimum karakter sayısı 14\' tür! + Barkod okunamadı! + + Seçilen payload eklenemiyor! + diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 3d19f9b..2c9c829 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -9,7 +9,6 @@ Підтримати розробку Налаштування Перевірка за серійним номером - Перекладачі Опис Розробники @@ -30,7 +29,7 @@ Кабель По-перше, вам потрібно знайти кабель для підключення вашого пристрою до Nintendo Switch. Для правильної роботи це має бути кабель, призначений для передачі даних, а не тільки для зарядки.\n\nРекомендується використовувати кабель A-to-C і адаптер USB OTG. Завантажувач - \u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u0441\u0432\u0456\u0439 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447 \u0437 \u043f\u0430\u043c\'\u044f\u0442\u0456 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e (\u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab+\u00bb), \u0441\u043a\u0430\u0447\u0430\u0442\u0438 \u0439\u043e\u0433\u043e \u0437\u0430 \u043f\u0440\u044f\u043c\u0438\u043c \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c (\u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0437\u0456 \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u00ab\u0445\u043c\u0430\u0440\u0438\u00bb) \u043d\u0430 \u0435\u043a\u0440\u0430\u043d\u0456 \u00ab\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447\u0456\u00bb \u0430\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 Rekado (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\n\u0412\u0438 \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0434\u0438\u043d \u0437 \u043f\u043e\u0432\'\u044f\u0437\u0430\u043d\u0438\u0445 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447\u0456\u0432 (SX Loader/Hekate/Fusee Primary/ReiNX). + \u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u0441\u0432\u0456\u0439 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447 \u0437 \u043f\u0430\u043c\'\u044f\u0442\u0456 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e (\u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab+\u00bb), \u0441\u043a\u0430\u0447\u0430\u0442\u0438 \u0439\u043e\u0433\u043e \u0437\u0430 \u043f\u0440\u044f\u043c\u0438\u043c \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c (\u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0437\u0456 \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u00ab\u0445\u043c\u0430\u0440\u0438\u00bb) \u043d\u0430 \u0435\u043a\u0440\u0430\u043d\u0456 \u00ab\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447\u0456\u00bb \u0430\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 Rekado (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\n\u0412\u0438 \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0434\u0438\u043d \u0437 \u043f\u043e\u0432\'\u044f\u0437\u0430\u043d\u0438\u0445 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447\u0456\u0432 (Hekate/Fusee Primary/ReiNX). Введіть ваш Nintendo Switch в режим RCM будь-яким зручним способом.\n\nВаш Nintendo Switch увімкнеться сам по собі, коли він підключений, обов\'язково утримуйте «VOLUME +». Закінчення Підключіть пристрій до Nintendo Switch і при необхідності дозвольте доступ до USB. Відкриється діалогове вікно «Вибір завантажувача» і виберіть, який з них ви хочете завантажити. @@ -43,9 +42,9 @@ Завантажувач Завантажувачі Приховати передвстановлені завантажувачі - Приховати передвстановлені завантажувачі (SX Loader/Hekate/Fusee Primary/ReiNX) + Приховати передвстановлені завантажувачі (Hekate/Fusee Primary/ReiNX) Очистка - Видалити всі додані завантажувачі, крім попередньо встановлених (SX Loader/Hekate/Fusee Primary/ReiNX) + Видалити всі додані завантажувачі, крім попередньо встановлених (Hekate/Fusee Primary/ReiNX) Зовнішній вигляд Тема Основна тема додатку @@ -101,7 +100,6 @@ Серійний номер не може бути порожнім! Максимальна довжина серійного номера - 14 символів! Не вдалося відсканувати штрих-код! - Обраний завантажувач не може бути доданий! diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000..338d54c --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,105 @@ + + + + 注入文件 + 工具 + 教程 + 日志 + 关于 Rekado + 支持开发者 + 设置 + 序列号检查 + + 说明 + 开发者 + Rekado 是一个任天堂 Switch 工具应用,用于注入 payloads、检查序列号和其他工具。 + 作品集 + 所有关于开发者的信息和新闻博客 + 有航拍照片的爱好账户 + 开源软件列表 + 个人微博 + + 名称或者 URL 不能为空! + 已经成功下载 %1$s 注入文件! + 下载 %1$s payload 期间发生错误。检查您的连接或URL中的错别字。 + + 序列号检查 + 通过你的任天堂 Switch 序列号来判断是否可以破解 + + 数据线 + 首先,你需要一根数据线来连接你的手机和任天堂 Switch。如果想要正常工作,这条数据线必须为了传输数据设计而不是只用来充电的。\n\n建议使用A-to-C电缆和USB OTG适配器。 + 注入文件 + \u5728 \"\u6ce8\u5165\" \u5217\u8868\u4e2d, \u70b9\u51fb \"+\" \u6309\u94ae\u4ece\u4f60\u8bbe\u5907\u7684\u50a8\u5b58\u5361\u4e2d\u9009\u62e9\u9700\u8981\u52a0\u8f7d\u7684\u6ce8\u5165\u6587\u4ef6\u3002\u6216\u8005\u4f60\u53ef\u4ee5\u5c06\u6ce8\u5165\u6587\u4ef6 \u62f7\u8d1d\u5230\u8bbe\u5907\u5185\u5b58\u4e2d\u7684 Rekado \u6587\u4ef6\u5939\u4e2d(/sdcard/Android/data/com.pavelrekun.rekado/files/)\u3002\n\n\u6216\u8005\u4f7f\u7528\u81ea\u5e26\u7684\u6ce8\u5165\u6587\u4ef6 (ReiNX/Hekate/Fusee Primary)\u3002 + 在任何时候让你的任天堂 Switch 进入 RCM 模式。 \n你的任天堂 Switch 需要按住音量+,然后再插入数据线就会开机。 + 完成 + 将设备连接到任天堂 Switch 并在有需要时允许 usb 访问权限。将打开 注入文件 选择对话框,并在对话框内选择需要加载的注入文件。 + + 您可以通过 [buying me a coffee] 来支持应用程序的开发。 + + 自动加载注入文件 + \u542f\u7528 \"\u81ea\u52a8\u52a0\u8f7d\u6ce8\u5165\u6587\u4ef6\" + \u7981\u7528 \"\u81ea\u52a8\u52a0\u8f7d\u6ce8\u5165\u6587\u4ef6\" + 注入文件 + 注入文件 + 隐藏自带注入文件 + 隐藏所有的自带注入文件(Hekate/Fusee Primary/ReiNX) + 清除 + 移除所有自带或添加的注入文件 (ReiNX/Hekate/Fusee Primary) + 外观 + 主题 + 应用程序主题 + 强调色 + 用于淡色 UI 元素的颜色 + 随机样式 + 随机设置主题和颜色 + 重置 + 恢复主题设置为默认 + 选择颜色 + 关闭 + 选择主题 + 控制 + 主题 + 手动 + 系统默认 + 设置为“电量节省” + 设置已更改 + 设置已更改。请重启应用查看改变。\n是否现在重启软件? + 注入文件 + 取消 + + 选择 注入文件 + 清除 + 确定要删除 注入文件 吗? + 选择 注入文件 + 下载 + 名称 + 下载 + 注入文件更新 + 检测到自带注入文件的更新版本。建议更新 + 没有可注入的文件 + 看上去你没有加入额外的文件而且把自带的隐藏了。注入无法进行。\n\n添加注入文件或通过“设置”取消自带文件的隐藏再尝试 + 更新注入文件 + 关闭 + + 检查 + 信息 + 序列号 + 检查 + 序列号起始为 XAW1\nXAW10000000000 - XAW10074000000: 未修复漏洞\nXAW10075000000 - XAW10120000000: 可能未修复漏洞\nXAW10120000000 以及更高: 已修复漏洞\n\n + 序列号起始为 XAW4\nXAW40000000000 - XAW40011000000: 未修复漏洞\nXAW40011000000 - XAW40012000000: 可能未修复漏洞\nXAW40012000000 以及更高: 已修复漏洞\n\n + 序列号起始为 XAW7\nXAW70000000000 - XAW70017800000: 未修复漏洞\nXAW70017800000 - XAW70030000000: 可能未修复漏洞\nXAW70030000000 以及更高: 已修复漏洞\n\n + 序列号起始为 XAJ1\nXAJ10000000000 - XAJ10020000000: 未修复漏洞\nXAJ10020000000 - XAJ10030000000: 可能未修复漏洞\nXAJ10030000000 以及更高: 已修复漏洞\n\n + 序列号起始为 XAJ4\nXAJ40000000000 - XAJ40046000000: 未修复漏洞\nXAJ40046000000 - XAJ40060000000: 可能未修复漏洞\nXAJ40060000000 以及更高: 已修复漏洞\n + 序列号起始为 XAJ7\nXAJ70000000000 - XAJ70040000000: 未修复漏洞\nXAJ70040000000 - XAJ70050000000: 可能未修复漏洞\nXAJ70050000000 以及更高: 已修复漏洞\n\n + 序列号起始为 XAW9\n任天堂官方翻新机,没有太多消息,但是几乎都已经修复漏洞。\n + 序列号起始为 XAK\n没有太多消息,因为这些只在韩国销售。 + 未修复漏洞 + 已修复漏洞 + 可能已修复漏洞 + 不能检查这个序列号! + 序列号不能为空! + 序列号的最大长度为14个字符! + 扫描二维码失败! + + 选择的 payload 不能够被添加! + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000..a444d5a --- /dev/null +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,105 @@ + + + + 注入檔案 + 工具 + 操作說明 + 日誌 + 關於Rekado + 贊助程式維護 + 設定 + 查詢主機序號 + + 主要功能 + 開發人員 + Rekado是Nintendo Switch專用的工具程式,主要用於注入檔案,也可以透過序號來檢查主機是否擁有可供執行自製程式的安全性漏洞 + 個人檔案 + 記錄開發人員所有相關作品與最新消息的部落格 + 無人機攝影愛好者簡介 + 開放原始碼應用程式列表 + 個人微網誌 + + 檔案名稱或下載連結不能為空! + 注入所需的檔案已下載完成! + 檔案下載時發生錯誤。請檢查網路連線是否正確,或下載連結是否輸入錯誤 + + 主機序號查詢 + 透過序號查詢,檢查主機是否擁有可供執行自製程式的安全性漏洞 + + 傳輸線 + 首先,你需要事先準備一條專用的傳輸線將你的裝置與Nintendo Switch連接。為了確保資料傳輸過程順利,這條線必須是專為傳輸資料所設計的,而非僅能提供充電使用。\n\n建議挑選符合你的行動裝置接口的線材,像是 type A-to-C、type C-to-C等等,以及注意是否需要額外添購USB OTG轉接頭。 + 注入檔案 + 在\u0022注入檔案\u0022頁面中點擊雲朵圖示按鈕並使用連結下載指定的檔案後,你可以點擊 \u0022+\u0022 按鈕從裝置的下載管理器來增加注入檔案,或直接將檔案移動到Rekado的資料夾內 (/sdcard/Android/data/com.pavelrekun.rekado/files/)。\n\n你也可以直接使用內建的四種注入檔案 (Hekate/Fusee Primary/ReiNX)。 + 請讓你的Nintendo Switch進入RCM模式。\n\n當裝置與你的Nintendo Switch連接時,此時主機會開機,請持續長按 \"音量鍵 +\"。 + 完成 + 將裝置與Nintendo Switch連接後,如果出現系統通知詢問請求裝置取得USB連接設備的權限,請按指示允許。接著螢幕會列出所有注入的檔案項目,然後請選取你要注入的檔案。 + + 如果想要贊助作者開發,你可以點擊\"buying him a cup of coffee\"來進行小額贊助 + + 自動注入器 + 啟用 \u0022自動注入器\u0022 + 停用 \u0022自動注入器\u0022 + 注入檔案 + 注入檔案 + 隱藏內建的注入檔案 + 隱藏所有內建的注入檔案 (Hekate/Fusee Primary/ReiNX) + 清除 + 移除所有新增項目,僅保留內建的注入檔案 (Hekate/Fusee Primary/ReiNX) + 外觀 + 主題 + 程式背景主題 + 強調色 + 程式UI的指定顏色 + 隨機外觀 + 隨機指定外觀主題與UI顏色 + 重置 + 將外觀設定恢復為預設值 + 選取顏色 + 關閉 + 選擇主題 + 類型 + 主題 + 使用者設定 + 系統預設 + 套用\"省電模式\"設定 + 設定已變更 + 已變更程式設定,需要重新啟動程式才能使套用的設定生效\n\n立刻重新啟動程式? + 重新啟動 + 取消 + + 選取注入的檔案 + 清除 + 是否確認要刪除注入檔案? + 選取注入的檔案 + 下載 + 檔案名稱 + 下載 + 注入檔案更新通知 + 內建的注入檔案項目有可用的更新,建議立刻進行檔案更新 + 沒有注入的檔案 + 發生錯誤,可能由於尚未新增其他的注入檔案,同時又隱藏了內建的注入檔案,導致無法進行注入程序\n\n請手動新增注入的檔案,或在\"設定\"內將隱藏內建的注入檔案項目取消勾選 + 更新注入檔案 + 關閉 + + 序號查詢 + 相關資訊 + 主機序號 + 查詢 + 序號開頭為XAW1\nXAW10000000000 - XAW10074000000: 未修復漏洞\nXAW10075000000 - XAW10120000000: 可能已修復漏洞\nXAW10120000000 - 所有之後的序號: 已修復漏洞\n\n + 序號開頭為XAW4\nXAW40000000000 - XAW40011000000: 未修復漏洞\nXAW40011000000 - XAW40012000000: 可能已修復漏洞\nXAW40012000000 - 所有之後的序號: 已修復漏洞\n\n + 序號開頭為XAW7\nXAW70000000000 - XAW70017800000: 未修復漏洞\nXAW70017800000 - XAW70030000000: 可能已修復漏洞\nXAW70030000000 - 所有之後的序號: 已修復漏洞\n\n\n\n + 序號開頭為XAJ1\nXAJ10000000000 - XAJ10020000000: 未修復漏洞\nXAJ10020000000 - XAJ10030000000: 可能已修復漏洞\nXAJ10030000000 - 所有之後的序號: 已修復漏洞\n\n + 序號開頭為XAJ4\nXAJ40000000000 - XAJ40046000000: 未修復漏洞\nXAJ40046000000 - XAJ40060000000: 可能已修復漏洞\nXAJ40060000000 and higher: 已修復漏洞\n\n + 序號開頭為XAJ7\nXAJ70000000000 - XAJ70040000000: 未修復漏洞\nXAJ70040000000 - XAJ70050000000: 可能已修復漏洞\nXAJ70050000000 and higher: 已修復漏洞\n\n + 序號開頭為XAW9\n由Nintendo進行硬體翻新的機種型號,沒有更詳細的相關資訊,此序號極有可能已全數修復漏洞\n\n + 序號開頭為XAK\n沒有更詳細的相關資訊,此序號機型僅於韓國境內發售 + 未修復漏洞 + 已修復漏洞 + 可能已修復漏洞 + 此序號無法查詢! + 序號欄位不能為空! + 序號最大的長度限制為14字元! + 序號條碼掃描失敗! + + 無法新增指定的注入檔案! + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2ad0e81..9037cc9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,7 +10,6 @@ Support development Settings Serial checker - Translators Description @@ -38,7 +37,7 @@ Cable First, you need to find a cable to connect your device to the Nintendo Switch. For proper work, this should be a cable that is designed for data transmission, not just for charging.\n\nIt is advisable to use an A-to-C cable and a USB OTG adapter. Payload - You can add your payload from the device’s memory (click the \u0022+\u0022 button), download it via a direct link (click the button with the \u0022cloud\u0022 icon) on the \u0022Payloads\u0022 screen or simply move it to the Rekado folder (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\nYou can also use one of the bundled payloads (SX Loader/Hekate/Fusee Primary/ReiNX). + You can add your payload from the device’s memory (click the \u0022+\u0022 button), download it via a direct link (click the button with the \u0022cloud\u0022 icon) on the \u0022Payloads\u0022 screen or simply move it to the Rekado folder (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\nYou can also use one of the bundled payloads (Hekate/Fusee Primary/ReiNX). RCM Enter your Nintendo Switch into RCM mode in any convenient way. \n\nYour Nintendo Switch will power on by itself when plugged in, be sure to hold \u0022VOLUME +\u0022. Final @@ -54,9 +53,9 @@ Payload Payloads Hide bundled payloads - Hide all bundled payloads (SX Loader/Hekate/Fusee Primary/ReiNX) + Hide all bundled payloads (Hekate/Fusee Primary/ReiNX) Clear - Remove all added payloads except bundled (SX Loader/Hekate/Fusee Primary/ReiNX) + Remove all added payloads except bundled (Hekate/Fusee Primary/ReiNX) Appearance Theme Main theme of the app @@ -117,12 +116,6 @@ Maximum length of the serial number is 14 characters! Failed to scan barcode! - - Pavel Rekun (Menos) - Pavel Rekun (Menos) - Pavel Rekun (Menos) - tiliarou, marioandraderomero, elric200x, zjairo45 - Selected payload can not be added! diff --git a/app/update-changelog.json b/app/update-changelog.json index 496cfd0..301d3d9 100644 --- a/app/update-changelog.json +++ b/app/update-changelog.json @@ -1,13 +1,8 @@ { - "latestVersion": "4.1.1", - "latestVersionCode": "74", + "latestVersion": "4.1.2", + "latestVersionCode": "75", "url": "https://github.com/MenosGrante/Rekado/releases/", "releaseNotes": [ - "- Updated: Localization center moved to the \"Crowdin\".", - "- Updated: \"Jungle\" theme replaced with \"Retro wave\" theme.", - "- Updated: All payloads to the up-to-date versions.", - "- Updated: Overhaul design of the \"Themes\" screen.", - "- Updated: Icons and padding in whole app.", - "- Fixed: Title and description cut off in the \"Tools\" screen." + "- Updated: Added all finished localizations from Crowdin." ] } diff --git a/build.gradle b/build.gradle index 31141e7..4b917b0 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,61 @@ apply from: rootProject.file("gradle/updates.gradle") buildscript { + + ext { + + // Version + appVersionCode = 75 + appVersionName = "4.1.2" + + currentSDKVersion = 30 + minimumSDKVersion = 21 + NDKVersion = '21.3.6528147' + + // Gradle + gradlePluginVersion = '4.1.3' + gradleUpdatesVersion = '0.36.0' + + // Google: AndroidX + androidXCoreVersion = '1.3.2' + androidXCompatVersion = '1.2.0' + androidXBrowserVersion = '1.3.0' + androidXRecyclerViewVersion = '1.1.0' + androidXPreferencesVersion = '1.1.1' + androidXConstraintLayoutVersion = '2.0.4' + androidXLifecycleVersion = '2.3.1' + androidXNavigationVersion = '2.3.4' + androidXSwipeToRefreshLayoutVersion = '1.1.0' + + // Google: Design + materialComponentsVersion = '1.3.0' + flexBoxLayoutVersion = '2.0.1' + + // Kotlin + kotlinVersion = '1.4.32' + kotlinCoroutinesVersion = '1.4.3' + + // Design + insetterVersion = '0.5.0' + + // Tools + eventBusVersion = '3.2.0' + retrofitVersion = '2.9.0' + zxingVersion = '3.6.0' + gsonVersion = '2.8.6' + appUpdaterVersion = '2.7' + + } + repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.2' - classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.21' - classpath 'com.github.ben-manes:gradle-versions-plugin:0.36.0' + classpath "com.android.tools.build:gradle:$gradlePluginVersion" + classpath "com.github.ben-manes:gradle-versions-plugin:$gradleUpdatesVersion" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } } @@ -22,39 +68,4 @@ allprojects { maven { url "https://jitpack.io" } } -} - -ext { - currentSDKVersion = 30 - minimumSDKVersion = 21 - NDKVersion = '21.3.6528147' - - // Google: AndroidX - androidXCoreVersion = '1.3.2' - androidXCompatVersion = '1.2.0' - androidXBrowserVersion = '1.3.0' - androidXRecyclerViewVersion = '1.1.0' - androidXPreferencesVersion = '1.1.1' - androidXConstraintLayoutVersion = '2.0.4' - androidXLifecycleVersion = '2.2.0' - androixXNavigationVersion = '2.3.2' - - // Google: Design - materialComponentsVersion = '1.2.1' - flexBoxLayoutVersion = '2.0.1' - - // Kotlin - kotlinVersion = '1.4.21' - kotlinCoroutinesVersion = '1.4.2' - - // Design - insetterVersion = '0.4.0' - - // Tools - eventBusVersion = '3.2.0' - retrofitVersion = '2.9.0' - zxingVersion = '3.6.0' - gsonVersion = '2.8.6' - appUpdaterVersion = '2.7' - -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 04f7b09..7d613c3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,5 +2,4 @@ android.enableJetifier=true android.useAndroidX=true - org.gradle.jvmargs=-Xmx4096m \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 51ec3cf..8aec049 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-all.zip \ No newline at end of file +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip \ No newline at end of file