Skip to content

Commit 2643f63

Browse files
committed
- Added: Support for Android 12.
- Updated: Fusee replaced fusee-primary.
1 parent bc822ea commit 2643f63

39 files changed

+491
-218
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
### The application has already received all the functionality that I planned to lay in it, so I will only fix defects and add localizations in the future. [More details here.](https://pavelrekun.dev/blog/news_25.08.2020/)
22

33

4-
<a href="https://www.patreon.com/bePatron?u=29011893" target="_blank"><img src="https://i.imgur.com/U7uMymh.png" alt="Become my Patron" height="60"></a>
4+
<a href="https://www.buymeacoffee.com/pavelrekun" target="_blank"><img src="https://i.imgur.com/yAojiF0.png" alt="Buy me a coffee" height="60"></a>
55

66
[![Crowdin](https://badges.crowdin.net/rekado/localized.svg)](https://crowdin.com/project/rekado) [![Stars](https://img.shields.io/github/stars/MenosGrante/Rekado)](https://github.com/MenosGrante/Rekado/stargazers) [![License](https://img.shields.io/github/license/MenosGrante/Rekado)](https://github.com/MenosGrante/Rekado/blob/master/LICENSE) [![Releases](https://img.shields.io/github/downloads/MenosGrante/Rekado/total.svg)](https://github.com/MenosGrante/Rekado/releases/latest)
77

@@ -10,12 +10,12 @@ Payload launcher written in Kotlin for Nintendo Switch.
1010

1111
**Application doesn't require Root on your device.**
1212

13-
[ReiNX](https://reinx.guide/), [Fusee Primary](https://github.com/Atmosphere-NX/Atmosphere) and [Hekate](https://github.com/CTCaer/hekate) payloads bundled as default.
13+
[ReiNX](https://reinx.guide/), [Fusee](https://github.com/Atmosphere-NX/Atmosphere) and [Hekate](https://github.com/CTCaer/hekate) payloads bundled as default.
1414

1515
## Usage
1616
* Launch application.
1717
* 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.
18-
* 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**).
18+
* 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**).
1919
* 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 +**.
2020
* 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.
2121
* Wait for payload to finish loading on your console.

app/CMakeLists.txt

-3
This file was deleted.

app/build.gradle

-91
This file was deleted.

app/build.gradle.kts

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
plugins {
2+
id("com.android.application")
3+
4+
kotlin("android")
5+
}
6+
7+
android {
8+
compileSdk = Config.compileSDKVersion
9+
ndkVersion = Config.NDKVersion
10+
11+
defaultConfig {
12+
applicationId = "com.pavelrekun.rekado"
13+
14+
minSdk = Config.minimumSDKVersion
15+
targetSdk = Config.targetSDKVersion
16+
versionCode = Config.versionCode
17+
versionName = Config.versionName
18+
}
19+
20+
buildTypes {
21+
getByName("release") {
22+
isMinifyEnabled = false
23+
isDebuggable = true
24+
}
25+
}
26+
27+
compileOptions {
28+
sourceCompatibility = JavaVersion.VERSION_1_8
29+
targetCompatibility = JavaVersion.VERSION_1_8
30+
}
31+
32+
lint {
33+
isAbortOnError = false
34+
}
35+
36+
androidResources {
37+
noCompress.add("bin")
38+
}
39+
40+
buildFeatures {
41+
viewBinding = true
42+
}
43+
44+
externalNativeBuild {
45+
cmake {
46+
path = file("src/main/cpp/CMakeLists.txt")
47+
}
48+
}
49+
50+
kotlinOptions {
51+
jvmTarget = "1.8"
52+
}
53+
54+
}
55+
56+
dependencies {
57+
58+
// Private
59+
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))
60+
61+
// AndroidX
62+
implementation(Libraries.AndroidX.Core)
63+
implementation(Libraries.AndroidX.RecyclerView)
64+
implementation(Libraries.AndroidX.Browser)
65+
implementation(Libraries.AndroidX.Preferences)
66+
implementation(Libraries.AndroidX.ConstraintLayout)
67+
implementation(Libraries.AndroidX.LifecycleViewModel)
68+
implementation(Libraries.AndroidX.LifecycleLiveData)
69+
implementation(Libraries.AndroidX.LifecycleCommon)
70+
implementation(Libraries.AndroidX.NavigationFragment)
71+
implementation(Libraries.AndroidX.NavigationUI)
72+
73+
// Design
74+
implementation(Libraries.Design.MaterialComponents)
75+
implementation(Libraries.Design.FlexboxLayout)
76+
implementation(Libraries.Design.Insetter)
77+
78+
// Tools
79+
implementation(Libraries.Tools.EventBus)
80+
implementation(Libraries.Tools.Retrofit)
81+
implementation(Libraries.Tools.Zxing)
82+
implementation(Libraries.Tools.Gson)
83+
implementation(Libraries.Tools.AppUpdater)
84+
85+
// Kotlin
86+
implementation(Libraries.Kotlin.Kotlin)
87+
implementation(Libraries.Kotlin.Coroutines)
88+
89+
}

app/libs/magta.aar

10.5 KB
Binary file not shown.

app/libs/penza.aar

42.5 KB
Binary file not shown.

app/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
<activity
2222
android:name=".containers.PrimaryContainerActivity"
23+
android:exported="true"
2324
android:launchMode="singleTop">
2425
<intent-filter>
2526
<action android:name="android.intent.action.MAIN" />

app/src/main/cpp/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
cmake_minimum_required(VERSION 3.4.1)
2+
add_library( payload_launcher SHARED payload_launcher.cpp)
3+
include_directories(.)

app/src/main/java/com/pavelrekun/rekado/services/dialogs/DialogsShower.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ object DialogsShower {
109109
val binding = DialogDonateBinding.inflate(activity.layoutInflater)
110110
val builder = MaterialAlertDialogBuilder(activity)
111111

112-
binding.aboutPatreonButton.setOnClickListener { Utils.openLink(activity, Links.PATREON_LINK) }
112+
binding.donateButton.setOnClickListener { Utils.openLink(activity, Links.BUY_ME_COFFEE_LINK) }
113113

114114
builder.setTitle(R.string.navigation_donate)
115115

app/src/main/java/com/pavelrekun/rekado/services/payloads/PayloadHelper.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.pavelrekun.rekado.services.utils.PreferencesUtils
66

77
object PayloadHelper {
88

9-
val BUNDLED_PAYLOADS = listOf("hekate.bin", "fusee_primary.bin", "reinx.bin")
9+
val BUNDLED_PAYLOADS = listOf("hekate.bin", "fusee.bin", "reinx.bin")
1010

1111
fun getAllPayloads(): MutableList<Payload> {
1212
return if (PreferencesUtils.checkHideBundledPayloadsEnabled()) {

app/src/main/java/com/pavelrekun/rekado/services/utils/MemoryUtils.kt

+10-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,15 @@ object MemoryUtils {
1414
private val resources = RekadoApplication.context.resources
1515

1616
fun parseBundledConfig() {
17-
if (!PreferencesUtils.checkConfigExists()) {
17+
if (PreferencesUtils.checkConfigExists()) {
18+
val currentConfig = PreferencesUtils.getCurrentConfig()
19+
val bundledConfig = resources.openRawResource(R.raw.config).parseConfig()
20+
21+
if (bundledConfig.timestamp > currentConfig.timestamp) {
22+
PreferencesUtils.saveConfig(bundledConfig)
23+
copyBundledPayloads()
24+
}
25+
} else {
1826
val config = resources.openRawResource(R.raw.config).parseConfig()
1927
PreferencesUtils.saveConfig(config)
2028
copyBundledPayloads()
@@ -31,7 +39,7 @@ object MemoryUtils {
3139
}
3240

3341
private fun copyBundledPayloads() {
34-
copyPayload(resources.openRawResource(R.raw.fusee_primary), "fusee_primary.bin")
42+
copyPayload(resources.openRawResource(R.raw.fusee), "fusee.bin")
3543
copyPayload(resources.openRawResource(R.raw.hekate), "hekate.bin")
3644
copyPayload(resources.openRawResource(R.raw.reinx), "reinx.bin")
3745

app/src/main/java/com/pavelrekun/rekado/services/utils/SerialUtils.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ object SerialUtils {
1313
private const val STATUS_ERROR = 3
1414

1515
fun defineConsoleStatus(serialNumber: String): Int {
16-
return when (defineConsoleStatusInternal(serialNumber.toUpperCase(Locale.ROOT))) {
16+
return when (defineConsoleStatusInternal(serialNumber.uppercase(Locale.ROOT))) {
1717
STATUS_NOT_PATCHED -> R.string.serial_checker_status_not_patched
1818
STATUS_PATCHED -> R.string.serial_checker_status_patched
1919
STATUS_POSSIBLY_PATCHED -> R.string.serial_checker_status_possibly_patched
-5.21 KB
Binary file not shown.

app/src/main/res/layout/dialog_donate.xml

+9-19
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,15 @@
1313
android:textColor="?android:attr/textColorSecondary"
1414
android:textSize="16sp" />
1515

16-
<com.google.android.material.button.MaterialButton
17-
android:id="@+id/aboutPatreonButton"
18-
style="@style/Widget.MaterialComponents.Button.TextButton"
19-
android:layout_width="wrap_content"
20-
android:layout_height="wrap_content"
16+
<ImageView
17+
android:id="@+id/donateButton"
18+
android:layout_width="180dp"
19+
android:layout_height="40dp"
2120
android:layout_gravity="center_horizontal"
22-
android:layout_marginTop="8dp"
23-
android:fontFamily="@font/gilroy_medium"
24-
android:paddingStart="16dp"
25-
android:paddingTop="8dp"
26-
android:paddingEnd="16dp"
27-
android:paddingBottom="8dp"
28-
android:text="@string/donate_button"
29-
android:textColor="@color/colorWhite"
30-
android:textSize="12sp"
31-
app:backgroundTint="#FF424D"
32-
app:cornerRadius="24dp"
33-
app:icon="@drawable/ic_donate_patreon"
34-
app:iconPadding="8dp"
35-
app:iconTint="@color/colorWhite" />
21+
android:layout_marginBottom="24dp"
22+
android:clickable="true"
23+
android:contentDescription="@null"
24+
android:focusable="true"
25+
app:srcCompat="@drawable/pic_donate" />
3626

3727
</LinearLayout>

app/src/main/res/raw/config.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
{
2-
"timestamp": 1625835635,
2+
"timestamp": 1631268813,
33
"payloads":[
44
{
55
"title":"hekate.bin",
66
"downloadUrl": "https://pavelrekun.dev/payloads/hekate.bin",
7-
"version":"5.5.8"
7+
"version":"5.6.0"
88
},
99
{
10-
"title":"fusee_primary.bin",
11-
"downloadUrl": "https://pavelrekun.dev/payloads/fusee_primary.bin",
12-
"version":"0.19.5"
10+
"title":"fusee.bin",
11+
"downloadUrl": "https://pavelrekun.dev/payloads/fusee.bin",
12+
"version":"1.0.0"
1313
},
1414
{
1515
"title":"reinx.bin",

app/src/main/res/raw/fusee.bin

109 KB
Binary file not shown.
-92.4 KB
Binary file not shown.

app/src/main/res/values-es/strings.xml

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
33
<!-- Strings for Navigation -->
4+
<string name="navigation_payloads">Cargas</string>
45
<string name="navigation_tools">Herramientas</string>
56
<string name="navigation_instructions">Instrucciones</string>
67
<string name="navigation_logs">Registros</string>
@@ -25,16 +26,21 @@
2526
<string name="tools_serial_checker_title">Verificador de Serial</string>
2627
<string name="tools_serial_checker_description">Verifica si tu Nintendo Switch es vulnerable usando el numero de serie de tu unidad</string>
2728
<!-- Strings for Instructions -->
29+
<string name="instructions_category_cable">Cable</string>
2830
<string name="instructions_category_cable_description">Primero, necesitas buscar un cable para conectar tu dispositivo a la Nintendo Switch. Para un uso adecuado, tiene que ser un cable apto para la transmisión de datos, no solo para la carga.\n\nEs aconsejable usar un cable tipo A-C y un Adaptador OTG USB.</string>
31+
<string name="instructions_category_payload">Carga</string>
2932
<string name="instructions_category_payload_description">Puedes a\u00f1adir tu payload desde la memoria de tu dispositivo (haciendo click en el bot\u00f3n \"+\"), descargarlo directamente desde un link (haciendo click en el bot\u00f3n con el icono de \"nube\") en la pantalla de \"payloads\" o simplemente mu\u00e9velo a la carpeta de Rekado (/sdcard/Android/data/com.pavelrekun.rekado/files/).\n\nO puedes usar los payloads preinstalados (Hekate/Fusee Primary/ReiNX).</string>
3033
<string name="instructions_category_rcm_description">Coloca tu Nintendo Switch en modo RCM de una forma correcta. \n\nTu Nintendo Switch se encenderá cuando la enchufes, asegurate de mantener oprimido \"VOLUMEN +\".</string>
34+
<string name="instructions_category_final">Final</string>
3135
<string name="instructions_category_final_description">Conecta tu dispositivo a la Nintendo Switch y da permisos de acceso a USB si es necesario. Espera hasta que el dialogo del selector de payloads se abra y selecciona el que quieras cargar.</string>
3236
<!-- Strings for Donate -->
33-
<string name="donate_description">Puedes apoyar al desarrollador de esta aplicación comprando un café. Si tu quieres, por supuesto.</string>
37+
<string name="donate_button">Conviértete en un \"Patreon\"</string>
3438
<!-- Strings for Settings -->
3539
<string name="settings_category_auto_injector">Auto-inyector</string>
3640
<string name="settings_auto_injector_status_title_disabled">Activar \"Auto-injector\"</string>
3741
<string name="settings_auto_injector_status_title_enabled">Desactivar \"Auto-injector\"</string>
42+
<string name="settings_auto_injector_payload_title">Payload</string>
43+
<string name="settings_category_payloads">Payloads</string>
3844
<string name="settings_payloads_hide_title">No mostrar payloads incluidos</string>
3945
<string name="settings_payloads_hide_summary">No mostrar todas los payloads incluidos (Hekate/Fusee Primary/ReiNX)</string>
4046
<string name="settings_payloads_reset_title">Limpiar</string>
@@ -51,6 +57,9 @@
5157
<string name="settings_picker_color_title">Elegir color</string>
5258
<string name="settings_picker_color_button_close">Cerrar</string>
5359
<string name="settings_picker_theme_title">Elegir tema</string>
60+
<string name="settings_picker_theme_category_control">Control</string>
61+
<string name="settings_picker_theme_category_themes">Temas</string>
62+
<string name="settings_picker_theme_control_manual">Manual</string>
5463
<string name="settings_picker_theme_control_system_default">Por defecto</string>
5564
<string name="settings_picker_theme_control_battery_saver">Escoger \"Ahorrador de batería\"</string>
5665
<string name="settings_utils_restart_dialog_title">Ajustes cambiados</string>

app/src/main/res/values-fr/strings.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<string name="instructions_category_final">Finalement</string>
3535
<string name="instructions_category_final_description">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.</string>
3636
<!-- Strings for Donate -->
37-
<string name="donate_description">Vous pouvez soutenir le développement de l\'application en m\'achetant un café. Si vous le voulez bien sûr.</string>
37+
<string name="donate_button">Devenir un Patreon</string>
3838
<!-- Strings for Settings -->
3939
<string name="settings_category_auto_injector">Injection automatique</string>
4040
<string name="settings_auto_injector_status_title_disabled">Activer l\'injection automatique</string>

0 commit comments

Comments
 (0)