soul-browser/app/smali_classes4/kotlin/io/encoding/Base64Kt.smali
KaKi87 550ddb0413
Decompile and recreate Soul Browser v1.4.85 with APK CI builds (#1)
* Decompile and recreate Soul Browser v1.4.85 with APK CI builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix CI build: include bundled google.jks and remove PR trigger

The apktool build failed in CI because app/unknown/.../google.jks was
excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files
and commit the missing resource.

Also remove the redundant pull_request workflow trigger.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Change package ID to com.github.kaki87.soulbrowser

Rename the application ID so the rebuilt APK can be installed
alongside the original Soul Browser from Google Play.

- Update AndroidManifest package, permissions, providers, and actions
- Update R class references in smali (com/github/kaki87/soulbrowser/R)
- Update shortcuts.xml targetPackage
- Rename app label to "Soul Rebuild" for easy identification

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install compatibility: remove split APK metadata and bundle native libs

The rebuilt APK still declared requiredSplitTypes and Play Store split
metadata, causing Android to reject standalone installs as incompatible.

- Remove requiredSplitTypes and split-related manifest meta-data
- Merge native libs from all ABI splits with uncompressed storage
- Page-align before signing for extractNativeLibs=false
- Add .so to apktool doNotCompress list

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install failure: use apksigner v2/v3 and bundle arm64 native libs

Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only
produces v1 signatures, causing Android to reject the install.

- Sign with apksigner (v1+v2+v3) instead of jarsigner
- Add arm64-v8a native libraries from universal Soul Browser 1.4.79
- Set extractNativeLibs=true for reliable sideload installs
- Commit stable debug keystore for consistent signatures across builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Add committed debug keystore for consistent APK signatures

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix startup crash: use original classes2.dex desugar libraries

Apktool recompiles smali_classes2 into a broken classes2.dex, causing
ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init.

Inject the original classes2.dex (Java 8+ desugar libs) after apktool
build instead of using the recompiled version.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix missing drawable resources from density split APKs

The base APK is an app bundle module; density-specific drawables like
seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild,
causing Resources$NotFoundException at runtime.

- Merge non-9-patch resources from split APKs before apktool build
- Sync public.xml IDs from R smali only when backing files exist
- Add 713 density-specific resource IDs to public.xml

Co-authored-by: KaKi87 <KaKi87@pm.me>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 16:07:14 +02:00

442 lines
7.6 KiB
Smali

.class public final Lkotlin/io/encoding/Base64Kt;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation runtime Lkotlin/Metadata;
d1 = {
"\u0000\u001c\n\u0000\n\u0002\u0010\u0012\n\u0000\n\u0002\u0010\u0015\n\u0002\u0008\u0003\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u0008\n\u0000\u001a\u0010\u0010\u0006\u001a\u00020\u00072\u0006\u0010\u0008\u001a\u00020\tH\u0001\"\u000e\u0010\u0000\u001a\u00020\u0001X\u0082\u0004\u00a2\u0006\u0002\n\u0000\"\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004\u00a2\u0006\u0002\n\u0000\"\u000e\u0010\u0004\u001a\u00020\u0001X\u0082\u0004\u00a2\u0006\u0002\n\u0000\"\u000e\u0010\u0005\u001a\u00020\u0003X\u0082\u0004\u00a2\u0006\u0002\n\u0000\u00a8\u0006\n"
}
d2 = {
"base64EncodeMap",
"",
"base64DecodeMap",
"",
"base64UrlEncodeMap",
"base64UrlDecodeMap",
"isInMimeAlphabet",
"",
"symbol",
"",
"kotlin-stdlib"
}
k = 0x2
mv = {
0x2,
0x2,
0x0
}
xi = 0x30
.end annotation
.annotation build Lkotlin/jvm/internal/SourceDebugExtension;
value = {
"SMAP\nBase64.kt\nKotlin\n*S Kotlin\n*F\n+ 1 Base64.kt\nkotlin/io/encoding/Base64Kt\n+ 2 _Arrays.kt\nkotlin/collections/ArraysKt___ArraysKt\n*L\n1#1,843:1\n13880#2,3:844\n13880#2,3:847\n*S KotlinDebug\n*F\n+ 1 Base64.kt\nkotlin/io/encoding/Base64Kt\n*L\n785#1:844,3\n801#1:847,3\n*E\n"
}
.end annotation
# static fields
.field private static final base64DecodeMap:[I
.annotation build Lorg/jetbrains/annotations/NotNull;
.end annotation
.end field
.field private static final base64EncodeMap:[B
.annotation build Lorg/jetbrains/annotations/NotNull;
.end annotation
.end field
.field private static final base64UrlDecodeMap:[I
.annotation build Lorg/jetbrains/annotations/NotNull;
.end annotation
.end field
.field private static final base64UrlEncodeMap:[B
.annotation build Lorg/jetbrains/annotations/NotNull;
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.locals 11
.line 1
const/16 v0, 0x40
.line 2
.line 3
new-array v1, v0, [B
.line 4
.line 5
fill-array-data v1, :array_0
.line 6
.line 7
.line 8
sput-object v1, Lkotlin/io/encoding/Base64Kt;->base64EncodeMap:[B
.line 9
.line 10
const/16 v2, 0x100
.line 11
.line 12
new-array v3, v2, [I
.line 13
.line 14
invoke-static {v3}, Lkotlin/collections/ArraysKt;->r([I)V
.line 15
.line 16
.line 17
const/16 v4, 0x3d
.line 18
.line 19
const/4 v5, -0x2
.line 20
aput v5, v3, v4
.line 21
.line 22
const/4 v6, 0x0
.line 23
move v7, v6
.line 24
move v8, v7
.line 25
:goto_0
if-ge v7, v0, :cond_0
.line 26
.line 27
aget-byte v9, v1, v7
.line 28
.line 29
add-int/lit8 v10, v8, 0x1
.line 30
.line 31
aput v8, v3, v9
.line 32
.line 33
add-int/lit8 v7, v7, 0x1
.line 34
.line 35
move v8, v10
.line 36
goto :goto_0
.line 37
:cond_0
sput-object v3, Lkotlin/io/encoding/Base64Kt;->base64DecodeMap:[I
.line 38
.line 39
new-array v1, v0, [B
.line 40
.line 41
fill-array-data v1, :array_1
.line 42
.line 43
.line 44
sput-object v1, Lkotlin/io/encoding/Base64Kt;->base64UrlEncodeMap:[B
.line 45
.line 46
new-array v2, v2, [I
.line 47
.line 48
invoke-static {v2}, Lkotlin/collections/ArraysKt;->r([I)V
.line 49
.line 50
.line 51
aput v5, v2, v4
.line 52
.line 53
move v3, v6
.line 54
:goto_1
if-ge v6, v0, :cond_1
.line 55
.line 56
aget-byte v4, v1, v6
.line 57
.line 58
add-int/lit8 v5, v3, 0x1
.line 59
.line 60
aput v3, v2, v4
.line 61
.line 62
add-int/lit8 v6, v6, 0x1
.line 63
.line 64
move v3, v5
.line 65
goto :goto_1
.line 66
:cond_1
sput-object v2, Lkotlin/io/encoding/Base64Kt;->base64UrlDecodeMap:[I
.line 67
.line 68
return-void
.line 69
:array_0
.array-data 1
0x41t
0x42t
0x43t
0x44t
0x45t
0x46t
0x47t
0x48t
0x49t
0x4at
0x4bt
0x4ct
0x4dt
0x4et
0x4ft
0x50t
0x51t
0x52t
0x53t
0x54t
0x55t
0x56t
0x57t
0x58t
0x59t
0x5at
0x61t
0x62t
0x63t
0x64t
0x65t
0x66t
0x67t
0x68t
0x69t
0x6at
0x6bt
0x6ct
0x6dt
0x6et
0x6ft
0x70t
0x71t
0x72t
0x73t
0x74t
0x75t
0x76t
0x77t
0x78t
0x79t
0x7at
0x30t
0x31t
0x32t
0x33t
0x34t
0x35t
0x36t
0x37t
0x38t
0x39t
0x2bt
0x2ft
.end array-data
.line 70
.line 71
.line 72
.line 73
:array_1
.array-data 1
0x41t
0x42t
0x43t
0x44t
0x45t
0x46t
0x47t
0x48t
0x49t
0x4at
0x4bt
0x4ct
0x4dt
0x4et
0x4ft
0x50t
0x51t
0x52t
0x53t
0x54t
0x55t
0x56t
0x57t
0x58t
0x59t
0x5at
0x61t
0x62t
0x63t
0x64t
0x65t
0x66t
0x67t
0x68t
0x69t
0x6at
0x6bt
0x6ct
0x6dt
0x6et
0x6ft
0x70t
0x71t
0x72t
0x73t
0x74t
0x75t
0x76t
0x77t
0x78t
0x79t
0x7at
0x30t
0x31t
0x32t
0x33t
0x34t
0x35t
0x36t
0x37t
0x38t
0x39t
0x2dt
0x5ft
.end array-data
.end method
.method public static final synthetic access$getBase64DecodeMap$p()[I
.locals 1
.line 1
sget-object v0, Lkotlin/io/encoding/Base64Kt;->base64DecodeMap:[I
.line 2
.line 3
return-object v0
.end method
.method public static final synthetic access$getBase64EncodeMap$p()[B
.locals 1
.line 1
sget-object v0, Lkotlin/io/encoding/Base64Kt;->base64EncodeMap:[B
.line 2
.line 3
return-object v0
.end method
.method public static final synthetic access$getBase64UrlDecodeMap$p()[I
.locals 1
.line 1
sget-object v0, Lkotlin/io/encoding/Base64Kt;->base64UrlDecodeMap:[I
.line 2
.line 3
return-object v0
.end method
.method public static final synthetic access$getBase64UrlEncodeMap$p()[B
.locals 1
.line 1
sget-object v0, Lkotlin/io/encoding/Base64Kt;->base64UrlEncodeMap:[B
.line 2
.line 3
return-object v0
.end method
.method public static final isInMimeAlphabet(I)Z
.locals 2
.annotation build Lkotlin/SinceKotlin;
version = "1.8"
.end annotation
.line 1
if-ltz p0, :cond_0
.line 2
.line 3
sget-object v0, Lkotlin/io/encoding/Base64Kt;->base64DecodeMap:[I
.line 4
.line 5
array-length v1, v0
.line 6
if-ge p0, v1, :cond_0
.line 7
.line 8
aget p0, v0, p0
.line 9
.line 10
const/4 v0, -0x1
.line 11
if-eq p0, v0, :cond_0
.line 12
.line 13
const/4 p0, 0x1
.line 14
return p0
.line 15
:cond_0
const/4 p0, 0x0
.line 16
return p0
.end method