soul-browser/app/smali/com/caverock/androidsvg/SVG$PathDefinition.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

941 lines
15 KiB
Smali

.class Lcom/caverock/androidsvg/SVG$PathDefinition;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/caverock/androidsvg/SVG$PathInterface;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/caverock/androidsvg/SVG;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "PathDefinition"
.end annotation
# instance fields
.field public a:[B
.field public b:I
.field public c:[F
.field public d:I
# virtual methods
.method public final a(FFFF)V
.locals 4
.line 1
const/4 v0, 0x3
.line 2
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->f(B)V
.line 3
.line 4
.line 5
const/4 v0, 0x4
.line 6
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->g(I)V
.line 7
.line 8
.line 9
iget-object v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 10
.line 11
iget v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 12
.line 13
add-int/lit8 v3, v2, 0x1
.line 14
.line 15
iput v3, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 16
.line 17
aput p1, v1, v2
.line 18
.line 19
add-int/lit8 p1, v2, 0x2
.line 20
.line 21
iput p1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 22
.line 23
aput p2, v1, v3
.line 24
.line 25
add-int/lit8 p2, v2, 0x3
.line 26
.line 27
iput p2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 28
.line 29
aput p3, v1, p1
.line 30
.line 31
add-int/2addr v2, v0
.line 32
iput v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 33
.line 34
aput p4, v1, p2
.line 35
.line 36
return-void
.end method
.method public final b(FF)V
.locals 4
.line 1
const/4 v0, 0x0
.line 2
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->f(B)V
.line 3
.line 4
.line 5
const/4 v0, 0x2
.line 6
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->g(I)V
.line 7
.line 8
.line 9
iget-object v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 10
.line 11
iget v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 12
.line 13
add-int/lit8 v3, v2, 0x1
.line 14
.line 15
iput v3, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 16
.line 17
aput p1, v1, v2
.line 18
.line 19
add-int/2addr v2, v0
.line 20
iput v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 21
.line 22
aput p2, v1, v3
.line 23
.line 24
return-void
.end method
.method public final c(FFFFFF)V
.locals 4
.line 1
const/4 v0, 0x2
.line 2
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->f(B)V
.line 3
.line 4
.line 5
const/4 v0, 0x6
.line 6
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->g(I)V
.line 7
.line 8
.line 9
iget-object v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 10
.line 11
iget v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 12
.line 13
add-int/lit8 v3, v2, 0x1
.line 14
.line 15
iput v3, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 16
.line 17
aput p1, v1, v2
.line 18
.line 19
add-int/lit8 p1, v2, 0x2
.line 20
.line 21
iput p1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 22
.line 23
aput p2, v1, v3
.line 24
.line 25
add-int/lit8 p2, v2, 0x3
.line 26
.line 27
iput p2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 28
.line 29
aput p3, v1, p1
.line 30
.line 31
add-int/lit8 p1, v2, 0x4
.line 32
.line 33
iput p1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 34
.line 35
aput p4, v1, p2
.line 36
.line 37
add-int/lit8 p2, v2, 0x5
.line 38
.line 39
iput p2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 40
.line 41
aput p5, v1, p1
.line 42
.line 43
add-int/2addr v2, v0
.line 44
iput v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 45
.line 46
aput p6, v1, p2
.line 47
.line 48
return-void
.end method
.method public final close()V
.locals 1
.line 1
const/16 v0, 0x8
.line 2
.line 3
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->f(B)V
.line 4
.line 5
.line 6
return-void
.end method
.method public final d(FFFZZFF)V
.locals 2
.line 1
if-eqz p4, :cond_0
.line 2
.line 3
const/4 p4, 0x2
.line 4
goto :goto_0
.line 5
:cond_0
const/4 p4, 0x0
.line 6
:goto_0
or-int/lit8 p4, p4, 0x4
.line 7
.line 8
or-int/2addr p4, p5
.line 9
int-to-byte p4, p4
.line 10
invoke-virtual {p0, p4}, Lcom/caverock/androidsvg/SVG$PathDefinition;->f(B)V
.line 11
.line 12
.line 13
const/4 p4, 0x5
.line 14
invoke-virtual {p0, p4}, Lcom/caverock/androidsvg/SVG$PathDefinition;->g(I)V
.line 15
.line 16
.line 17
iget-object p5, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 18
.line 19
iget v0, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 20
.line 21
add-int/lit8 v1, v0, 0x1
.line 22
.line 23
iput v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 24
.line 25
aput p1, p5, v0
.line 26
.line 27
add-int/lit8 p1, v0, 0x2
.line 28
.line 29
iput p1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 30
.line 31
aput p2, p5, v1
.line 32
.line 33
add-int/lit8 p2, v0, 0x3
.line 34
.line 35
iput p2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 36
.line 37
aput p3, p5, p1
.line 38
.line 39
add-int/lit8 p1, v0, 0x4
.line 40
.line 41
iput p1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 42
.line 43
aput p6, p5, p2
.line 44
.line 45
add-int/2addr v0, p4
.line 46
iput v0, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 47
.line 48
aput p7, p5, p1
.line 49
.line 50
return-void
.end method
.method public final e(FF)V
.locals 4
.line 1
const/4 v0, 0x1
.line 2
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->f(B)V
.line 3
.line 4
.line 5
const/4 v0, 0x2
.line 6
invoke-virtual {p0, v0}, Lcom/caverock/androidsvg/SVG$PathDefinition;->g(I)V
.line 7
.line 8
.line 9
iget-object v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 10
.line 11
iget v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 12
.line 13
add-int/lit8 v3, v2, 0x1
.line 14
.line 15
iput v3, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 16
.line 17
aput p1, v1, v2
.line 18
.line 19
add-int/2addr v2, v0
.line 20
iput v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 21
.line 22
aput p2, v1, v3
.line 23
.line 24
return-void
.end method
.method public final f(B)V
.locals 4
.line 1
iget v0, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->b:I
.line 2
.line 3
iget-object v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->a:[B
.line 4
.line 5
array-length v2, v1
.line 6
if-ne v0, v2, :cond_0
.line 7
.line 8
array-length v0, v1
.line 9
mul-int/lit8 v0, v0, 0x2
.line 10
.line 11
new-array v0, v0, [B
.line 12
.line 13
array-length v2, v1
.line 14
const/4 v3, 0x0
.line 15
invoke-static {v1, v3, v0, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 16
.line 17
.line 18
iput-object v0, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->a:[B
.line 19
.line 20
:cond_0
iget-object v0, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->a:[B
.line 21
.line 22
iget v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->b:I
.line 23
.line 24
add-int/lit8 v2, v1, 0x1
.line 25
.line 26
iput v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->b:I
.line 27
.line 28
aput-byte p1, v0, v1
.line 29
.line 30
return-void
.end method
.method public final g(I)V
.locals 3
.line 1
iget-object v0, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 2
.line 3
array-length v1, v0
.line 4
iget v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->d:I
.line 5
.line 6
add-int/2addr v2, p1
.line 7
if-ge v1, v2, :cond_0
.line 8
.line 9
array-length p1, v0
.line 10
mul-int/lit8 p1, p1, 0x2
.line 11
.line 12
new-array p1, p1, [F
.line 13
.line 14
array-length v1, v0
.line 15
const/4 v2, 0x0
.line 16
invoke-static {v0, v2, p1, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 17
.line 18
.line 19
iput-object p1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 20
.line 21
:cond_0
return-void
.end method
.method public final h(Lcom/caverock/androidsvg/SVG$PathInterface;)V
.locals 12
.line 1
const/4 v8, 0x0
.line 2
move v0, v8
.line 3
move v9, v0
.line 4
:goto_0
iget v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->b:I
.line 5
.line 6
if-ge v9, v1, :cond_7
.line 7
.line 8
iget-object v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->a:[B
.line 9
.line 10
aget-byte v1, v1, v9
.line 11
.line 12
if-eqz v1, :cond_6
.line 13
.line 14
const/4 v2, 0x1
.line 15
if-eq v1, v2, :cond_5
.line 16
.line 17
const/4 v3, 0x2
.line 18
if-eq v1, v3, :cond_4
.line 19
.line 20
const/4 v3, 0x3
.line 21
if-eq v1, v3, :cond_3
.line 22
.line 23
const/16 v3, 0x8
.line 24
.line 25
if-eq v1, v3, :cond_2
.line 26
.line 27
and-int/lit8 v3, v1, 0x2
.line 28
.line 29
if-eqz v3, :cond_0
.line 30
.line 31
move v4, v2
.line 32
goto :goto_1
.line 33
:cond_0
move v4, v8
.line 34
:goto_1
and-int/lit8 v1, v1, 0x1
.line 35
.line 36
if-eqz v1, :cond_1
.line 37
.line 38
move v5, v2
.line 39
goto :goto_2
.line 40
:cond_1
move v5, v8
.line 41
:goto_2
iget-object v1, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 42
.line 43
add-int/lit8 v2, v0, 0x1
.line 44
.line 45
move-object v3, v1
.line 46
aget v1, v3, v0
.line 47
.line 48
add-int/lit8 v6, v0, 0x2
.line 49
.line 50
aget v2, v3, v2
.line 51
.line 52
add-int/lit8 v7, v0, 0x3
.line 53
.line 54
aget v6, v3, v6
.line 55
.line 56
add-int/lit8 v10, v0, 0x4
.line 57
.line 58
aget v7, v3, v7
.line 59
.line 60
add-int/lit8 v11, v0, 0x5
.line 61
.line 62
aget v0, v3, v10
.line 63
.line 64
move v3, v6
.line 65
move v6, v7
.line 66
move v7, v0
.line 67
move-object v0, p1
.line 68
invoke-interface/range {v0 .. v7}, Lcom/caverock/androidsvg/SVG$PathInterface;->d(FFFZZFF)V
.line 69
.line 70
.line 71
move v0, v11
.line 72
goto :goto_3
.line 73
:cond_2
invoke-interface {p1}, Lcom/caverock/androidsvg/SVG$PathInterface;->close()V
.line 74
.line 75
.line 76
goto :goto_3
.line 77
:cond_3
iget-object v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 78
.line 79
add-int/lit8 v3, v0, 0x1
.line 80
.line 81
aget v4, v2, v0
.line 82
.line 83
add-int/lit8 v5, v0, 0x2
.line 84
.line 85
aget v3, v2, v3
.line 86
.line 87
add-int/lit8 v6, v0, 0x3
.line 88
.line 89
aget v5, v2, v5
.line 90
.line 91
add-int/lit8 v0, v0, 0x4
.line 92
.line 93
aget v2, v2, v6
.line 94
.line 95
invoke-interface {p1, v4, v3, v5, v2}, Lcom/caverock/androidsvg/SVG$PathInterface;->a(FFFF)V
.line 96
.line 97
.line 98
goto :goto_3
.line 99
:cond_4
iget-object v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 100
.line 101
add-int/lit8 v3, v0, 0x1
.line 102
.line 103
aget v1, v2, v0
.line 104
.line 105
add-int/lit8 v4, v0, 0x2
.line 106
.line 107
aget v3, v2, v3
.line 108
.line 109
add-int/lit8 v5, v0, 0x3
.line 110
.line 111
aget v4, v2, v4
.line 112
.line 113
add-int/lit8 v6, v0, 0x4
.line 114
.line 115
aget v5, v2, v5
.line 116
.line 117
add-int/lit8 v7, v0, 0x5
.line 118
.line 119
aget v6, v2, v6
.line 120
.line 121
add-int/lit8 v10, v0, 0x6
.line 122
.line 123
aget v0, v2, v7
.line 124
.line 125
move v2, v3
.line 126
move v3, v4
.line 127
move v4, v5
.line 128
move v5, v6
.line 129
move v6, v0
.line 130
move-object v0, p1
.line 131
invoke-interface/range {v0 .. v6}, Lcom/caverock/androidsvg/SVG$PathInterface;->c(FFFFFF)V
.line 132
.line 133
.line 134
move v0, v10
.line 135
goto :goto_3
.line 136
:cond_5
iget-object v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 137
.line 138
add-int/lit8 v3, v0, 0x1
.line 139
.line 140
aget v4, v2, v0
.line 141
.line 142
add-int/lit8 v0, v0, 0x2
.line 143
.line 144
aget v2, v2, v3
.line 145
.line 146
invoke-interface {p1, v4, v2}, Lcom/caverock/androidsvg/SVG$PathInterface;->e(FF)V
.line 147
.line 148
.line 149
goto :goto_3
.line 150
:cond_6
iget-object v2, p0, Lcom/caverock/androidsvg/SVG$PathDefinition;->c:[F
.line 151
.line 152
add-int/lit8 v3, v0, 0x1
.line 153
.line 154
aget v4, v2, v0
.line 155
.line 156
add-int/lit8 v0, v0, 0x2
.line 157
.line 158
aget v2, v2, v3
.line 159
.line 160
invoke-interface {p1, v4, v2}, Lcom/caverock/androidsvg/SVG$PathInterface;->b(FF)V
.line 161
.line 162
.line 163
:goto_3
add-int/lit8 v9, v9, 0x1
.line 164
.line 165
goto/16 :goto_0
.line 166
.line 167
:cond_7
return-void
.end method