mirror of
https://github.com/meowarex/rl-mobile.git
synced 2026-06-17 21:13:11 +10:00
@@ -21,3 +21,9 @@ Manager/app/release/
|
|||||||
|
|
||||||
# Reference material (APKs, original source)
|
# Reference material (APKs, original source)
|
||||||
Reference/
|
Reference/
|
||||||
|
|
||||||
|
# tidal-apk/: CI consumes the top-level .apk/.apkm; ignore decompiled subdirs
|
||||||
|
*.apkm
|
||||||
|
!tidal-apk/*.apk
|
||||||
|
!tidal-apk/*.apkm
|
||||||
|
tidal-apk/*/
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
--- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
|
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
|
@@ -4931,7 +4931,11 @@
|
||||||
|
const/4 v10, 0x0
|
||||||
|
|
||||||
|
.line 226
|
||||||
|
- invoke-static {v10, v9, v4, v2, v7}, Lcom/tidal/android/feature/playerscreen/ui/composables/h1;->a(Landroidx/compose/ui/Modifier;Ltl0/a;ZLandroidx/compose/runtime/Composer;I)V
|
||||||
|
+ const v10, 0x52414448 # empty group key
|
||||||
|
+
|
||||||
|
+ invoke-interface {v2, v10}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V # open empty
|
||||||
|
+
|
||||||
|
+ invoke-interface {v2}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V # close empty
|
||||||
|
|
||||||
|
.line 227
|
||||||
|
invoke-interface {v2}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V
|
||||||
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
.method public static final e(ILandroidx/compose/runtime/Composer;Lcom/tidal/android/feature/playerscreen/ui/k;Lcom/tidal/android/feature/playerscreen/ui/r$a;Ltl0/a;Ltl0/l;Z)V
|
.method public static final e(ILandroidx/compose/runtime/Composer;Lcom/tidal/android/feature/playerscreen/ui/k;Lcom/tidal/android/feature/playerscreen/ui/r$a;Ltl0/a;Ltl0/l;Z)V
|
||||||
- .locals 61
|
- .locals 61
|
||||||
+ .locals 89 # extra regs for blur + sparkle
|
+ .locals 71 # extra regs for blur backdrop
|
||||||
.annotation build Landroidx/compose/runtime/Composable;
|
.annotation build Landroidx/compose/runtime/Composable;
|
||||||
.end annotation
|
.end annotation
|
||||||
|
|
||||||
@@ -4164,6 +4164,103 @@
|
@@ -4164,6 +4164,133 @@
|
||||||
|
|
||||||
invoke-static {v5, v3, v4}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Ltl0/p;)V
|
invoke-static {v5, v3, v4}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Ltl0/p;)V
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
+
|
+
|
||||||
+ move-result-object v5
|
+ move-result-object v5
|
||||||
+
|
+
|
||||||
+ const/high16 v7, 0x44b40000 # 1440f (blur radius dp)
|
+ const/high16 v7, 0x42b40000 # 90f (blur radius dp)
|
||||||
+
|
+
|
||||||
+ invoke-static {v7}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F
|
+ invoke-static {v7}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F
|
||||||
+
|
+
|
||||||
@@ -107,45 +107,39 @@
|
|||||||
+
|
+
|
||||||
+ invoke-static/range {v61 .. v70}, Lsd0/f;->a(Ltl0/l;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/ColorFilter;Landroidx/compose/ui/layout/ContentScale;Ljava/lang/Object;Ltl0/a;Landroidx/compose/runtime/Composer;II)V # render blurred cover
|
+ invoke-static/range {v61 .. v70}, Lsd0/f;->a(Ltl0/l;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/ColorFilter;Landroidx/compose/ui/layout/ContentScale;Ljava/lang/Object;Ltl0/a;Landroidx/compose/runtime/Composer;II)V # render blurred cover
|
||||||
+
|
+
|
||||||
|
+ sget-object v3, Landroidx/compose/ui/Modifier;->Companion:Landroidx/compose/ui/Modifier$Companion; # scrim chain start
|
||||||
|
+
|
||||||
|
+ const/4 v4, 0x0 # fraction unused
|
||||||
|
+
|
||||||
|
+ const/4 v5, 0x1 # $default mask
|
||||||
|
+
|
||||||
|
+ const/4 v6, 0x0 # null obj
|
||||||
|
+
|
||||||
|
+ invoke-static {v3, v4, v5, v6}, Landroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; # fill screen
|
||||||
|
+
|
||||||
|
+ move-result-object v3 # modifier
|
||||||
|
+
|
||||||
|
+ const v6, -0x80000000 # 0x80000000 = 50% black
|
||||||
|
+
|
||||||
|
+ invoke-static {v6}, Landroidx/compose/ui/graphics/ColorKt;->Color(I)J # pack ARGB long
|
||||||
|
+
|
||||||
|
+ move-result-wide v6 # color
|
||||||
|
+
|
||||||
|
+ invoke-static {}, Landroidx/compose/ui/graphics/RectangleShapeKt;->getRectangleShape()Landroidx/compose/ui/graphics/Shape; # rect shape
|
||||||
|
+
|
||||||
|
+ move-result-object v4 # shape
|
||||||
|
+
|
||||||
|
+ invoke-static {v3, v6, v7, v4}, Landroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; # tint with scrim
|
||||||
|
+
|
||||||
|
+ move-result-object v3 # modifier
|
||||||
|
+
|
||||||
|
+ const/4 v4, 0x0 # $changed flags
|
||||||
|
+
|
||||||
|
+ invoke-static {v3, v10, v4}, Landroidx/compose/foundation/layout/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V # draw scrim
|
||||||
|
+
|
||||||
+ :radiant_skip
|
+ :radiant_skip
|
||||||
+ invoke-interface {v10}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V # close group
|
+ invoke-interface {v10}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V # close group
|
||||||
+
|
+
|
||||||
.line 138
|
.line 138
|
||||||
sget-object v3, Landroidx/compose/foundation/layout/BoxScopeInstance;->INSTANCE:Landroidx/compose/foundation/layout/BoxScopeInstance;
|
sget-object v3, Landroidx/compose/foundation/layout/BoxScopeInstance;->INSTANCE:Landroidx/compose/foundation/layout/BoxScopeInstance;
|
||||||
|
|
||||||
@@ -4931,7 +5028,11 @@
|
|
||||||
const/4 v10, 0x0
|
|
||||||
|
|
||||||
.line 226
|
|
||||||
- invoke-static {v10, v9, v4, v2, v7}, Lcom/tidal/android/feature/playerscreen/ui/composables/h1;->a(Landroidx/compose/ui/Modifier;Ltl0/a;ZLandroidx/compose/runtime/Composer;I)V
|
|
||||||
+ const v10, 0x52414448 # empty group replaces removed top-right lyrics pill
|
|
||||||
+
|
|
||||||
+ invoke-interface {v2, v10}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V
|
|
||||||
+
|
|
||||||
+ invoke-interface {v2}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V
|
|
||||||
|
|
||||||
.line 227
|
|
||||||
invoke-interface {v2}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V
|
|
||||||
@@ -5707,6 +5808,22 @@
|
|
||||||
:cond_8de
|
|
||||||
check-cast v4, Ltl0/a;
|
|
||||||
|
|
||||||
+ new-instance v74, Lc8/j; # build lyrics-toggle lambda (same one h1 used)
|
|
||||||
+
|
|
||||||
+ move-object/from16 v75, p5
|
|
||||||
+
|
|
||||||
+ const/16 v76, 0x1 # discriminator 1 = lyrics action
|
|
||||||
+
|
|
||||||
+ invoke-direct/range {v74 .. v76}, Lc8/j;-><init>(Ljava/lang/Object;I)V
|
|
||||||
+
|
|
||||||
+ const/16 v71, 0x0 # $$changed flags
|
|
||||||
+
|
|
||||||
+ move-object/from16 v72, v7 # composer
|
|
||||||
+
|
|
||||||
+ const/16 v73, 0x0 # modifier (null -> Companion)
|
|
||||||
+
|
|
||||||
+ invoke-static/range {v71 .. v74}, Lradiant/SparkleButton;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V # render bottom-left sparkle
|
|
||||||
+
|
|
||||||
const/4 v2, 0x0
|
|
||||||
|
|
||||||
invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/h3;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
--- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
|
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
|
@@ -2966,7 +2966,7 @@
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static final e(ILandroidx/compose/runtime/Composer;Lcom/tidal/android/feature/playerscreen/ui/k;Lcom/tidal/android/feature/playerscreen/ui/r$a;Ltl0/a;Ltl0/l;Z)V
|
||||||
|
- .locals 71 # extra regs for blur backdrop
|
||||||
|
+ .locals 89 # extra regs for sparkle button
|
||||||
|
.annotation build Landroidx/compose/runtime/Composable;
|
||||||
|
.end annotation
|
||||||
|
|
||||||
|
@@ -5838,6 +5838,22 @@
|
||||||
|
:cond_51
|
||||||
|
check-cast v4, Ltl0/a;
|
||||||
|
|
||||||
|
+ new-instance v74, Lc8/j; # build lyrics-toggle lambda (same one h1 used)
|
||||||
|
+
|
||||||
|
+ move-object/from16 v75, p5 # p5 holds the lambda receiver
|
||||||
|
+
|
||||||
|
+ const/16 v76, 0x1 # discriminator 1 = lyrics action
|
||||||
|
+
|
||||||
|
+ invoke-direct/range {v74 .. v76}, Lc8/j;-><init>(Ljava/lang/Object;I)V # construct lambda
|
||||||
|
+
|
||||||
|
+ const/16 v71, 0x0 # $$changed flags
|
||||||
|
+
|
||||||
|
+ move-object/from16 v72, v7 # composer
|
||||||
|
+
|
||||||
|
+ const/16 v73, 0x0 # modifier (null -> Companion)
|
||||||
|
+
|
||||||
|
+ invoke-static/range {v71 .. v74}, Lradiant/SparkleButton;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V # render bottom-left sparkle
|
||||||
|
+
|
||||||
|
const/4 v2, 0x0
|
||||||
|
|
||||||
|
invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/h3;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
import java.io.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.zip.*;
|
|
||||||
|
|
||||||
// Merges an APKMirror split-APK bundle into a single installable APK.
|
|
||||||
// Usage: java MergeApk out.apk base.apk split1.apk split2.apk ...
|
|
||||||
public class MergeApk {
|
|
||||||
public static void main(String[] args) throws Exception {
|
|
||||||
if (args.length < 2) {
|
|
||||||
System.err.println("Usage: java MergeApk out.apk base.apk [split.apk ...]");
|
|
||||||
System.exit(1);
|
|
||||||
}
|
|
||||||
String out = args[0];
|
|
||||||
Set<String> seen = new HashSet<>();
|
|
||||||
try (ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(out)))) {
|
|
||||||
for (int i = 1; i < args.length; i++) {
|
|
||||||
String src = args[i];
|
|
||||||
boolean isBase = i == 1;
|
|
||||||
int added = 0, skipped = 0;
|
|
||||||
try (ZipFile zip = new ZipFile(src)) {
|
|
||||||
Enumeration<? extends ZipEntry> entries = zip.entries();
|
|
||||||
while (entries.hasMoreElements()) {
|
|
||||||
ZipEntry e = entries.nextElement();
|
|
||||||
if (e.isDirectory()) { skipped++; continue; }
|
|
||||||
String name = e.getName();
|
|
||||||
if (!isBase && (
|
|
||||||
name.equals("AndroidManifest.xml") ||
|
|
||||||
name.equals("resources.arsc") ||
|
|
||||||
name.startsWith("META-INF/") ||
|
|
||||||
name.equals("stamp-cert-sha256"))) {
|
|
||||||
skipped++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (seen.contains(name)) { skipped++; continue; }
|
|
||||||
seen.add(name);
|
|
||||||
|
|
||||||
ZipEntry ne = new ZipEntry(name);
|
|
||||||
if (e.getMethod() == ZipEntry.STORED) {
|
|
||||||
ne.setMethod(ZipEntry.STORED);
|
|
||||||
ne.setSize(e.getSize());
|
|
||||||
ne.setCompressedSize(e.getSize());
|
|
||||||
ne.setCrc(e.getCrc());
|
|
||||||
} else {
|
|
||||||
ne.setMethod(ZipEntry.DEFLATED);
|
|
||||||
}
|
|
||||||
zos.putNextEntry(ne);
|
|
||||||
try (InputStream is = zip.getInputStream(e)) {
|
|
||||||
byte[] buf = new byte[16384];
|
|
||||||
int n;
|
|
||||||
while ((n = is.read(buf)) > 0) zos.write(buf, 0, n);
|
|
||||||
}
|
|
||||||
zos.closeEntry();
|
|
||||||
added++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
System.out.printf("%s: +%d added, %d skipped%n", src, added, skipped);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
System.out.printf("Wrote %d entries to %s%n", seen.size(), out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user