soul-browser/app/smali/com/google/android/gms/internal/drive/zzjr.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

498 lines
8.1 KiB
Smali

.class public abstract Lcom/google/android/gms/internal/drive/zzjr;
.super Lcom/google/android/gms/internal/drive/zzjb;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/gms/internal/drive/zzjr$zza;,
Lcom/google/android/gms/internal/drive/zzjr$zzb;
}
.end annotation
# static fields
.field public static final b:Ljava/util/logging/Logger;
.field public static final c:Z
# instance fields
.field public a:Lcom/google/android/gms/internal/drive/zzjt;
# direct methods
.method static constructor <clinit>()V
.locals 1
.line 1
const-class v0, Lcom/google/android/gms/internal/drive/zzjr;
.line 2
.line 3
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
.line 4
.line 5
.line 6
move-result-object v0
.line 7
invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
.line 8
.line 9
.line 10
move-result-object v0
.line 11
sput-object v0, Lcom/google/android/gms/internal/drive/zzjr;->b:Ljava/util/logging/Logger;
.line 12
.line 13
sget-boolean v0, Lcom/google/android/gms/internal/drive/zznd;->f:Z
.line 14
.line 15
sput-boolean v0, Lcom/google/android/gms/internal/drive/zzjr;->c:Z
.line 16
.line 17
return-void
.end method
.method public static A(J)I
.locals 6
.line 1
const-wide/16 v0, -0x80
and-long/2addr v0, p0
const-wide/16 v2, 0x0
cmp-long v0, v0, v2
const/4 v1, 0x1
if-nez v0, :cond_0
return v1
:cond_0
cmp-long v0, p0, v2
if-gez v0, :cond_1
const/16 p0, 0xa
return p0
:cond_1
const-wide v4, -0x800000000L
and-long/2addr v4, p0
cmp-long v0, v4, v2
if-eqz v0, :cond_2
const/16 v0, 0x1c
ushr-long/2addr p0, v0
const/4 v0, 0x6
goto :goto_0
:cond_2
const/4 v0, 0x2
:goto_0
const-wide/32 v4, -0x200000
and-long/2addr v4, p0
cmp-long v4, v4, v2
if-eqz v4, :cond_3
add-int/lit8 v0, v0, 0x2
const/16 v4, 0xe
ushr-long/2addr p0, v4
:cond_3
const-wide/16 v4, -0x4000
and-long/2addr p0, v4
cmp-long p0, p0, v2
if-eqz p0, :cond_4
add-int/2addr v0, v1
:cond_4
return v0
.end method
.method public static g(I)I
.locals 0
.line 1
shl-int/lit8 p0, p0, 0x3
.line 2
.line 3
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->i(I)I
.line 4
.line 5
.line 6
move-result p0
.line 7
return p0
.end method
.method public static h(I)I
.locals 0
.line 1
if-ltz p0, :cond_0
.line 2
.line 3
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->i(I)I
.line 4
.line 5
.line 6
move-result p0
.line 7
return p0
.line 8
:cond_0
const/16 p0, 0xa
.line 9
.line 10
return p0
.end method
.method public static i(I)I
.locals 1
.line 1
and-int/lit8 v0, p0, -0x80
if-nez v0, :cond_0
const/4 p0, 0x1
return p0
:cond_0
and-int/lit16 v0, p0, -0x4000
if-nez v0, :cond_1
const/4 p0, 0x2
return p0
:cond_1
const/high16 v0, -0x200000
and-int/2addr v0, p0
if-nez v0, :cond_2
const/4 p0, 0x3
return p0
:cond_2
const/high16 v0, -0x10000000
and-int/2addr p0, v0
if-nez p0, :cond_3
const/4 p0, 0x4
return p0
:cond_3
const/4 p0, 0x5
return p0
.end method
.method public static m(ILcom/google/android/gms/internal/drive/zzjc;)I
.locals 1
.line 1
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->g(I)I
.line 2
.line 3
.line 4
move-result p0
.line 5
invoke-virtual {p1}, Lcom/google/android/gms/internal/drive/zzjc;->size()I
.line 6
.line 7
.line 8
move-result p1
.line 9
invoke-static {p1}, Lcom/google/android/gms/internal/drive/zzjr;->i(I)I
.line 10
.line 11
.line 12
move-result v0
.line 13
add-int/2addr v0, p1
.line 14
add-int/2addr v0, p0
.line 15
return v0
.end method
.method public static n(ILcom/google/android/gms/internal/drive/zzlq;Lcom/google/android/gms/internal/drive/zzmf;)I
.locals 2
.line 1
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->g(I)I
.line 2
.line 3
.line 4
move-result p0
.line 5
shl-int/lit8 p0, p0, 0x1
.line 6
.line 7
check-cast p1, Lcom/google/android/gms/internal/drive/zzit;
.line 8
.line 9
invoke-virtual {p1}, Lcom/google/android/gms/internal/drive/zzit;->g()I
.line 10
.line 11
.line 12
move-result v0
.line 13
const/4 v1, -0x1
.line 14
if-ne v0, v1, :cond_0
.line 15
.line 16
invoke-interface {p2, p1}, Lcom/google/android/gms/internal/drive/zzmf;->c(Lcom/google/android/gms/internal/drive/zzit;)I
.line 17
.line 18
.line 19
move-result v0
.line 20
invoke-virtual {p1, v0}, Lcom/google/android/gms/internal/drive/zzit;->h(I)V
.line 21
.line 22
.line 23
:cond_0
add-int/2addr p0, v0
.line 24
return p0
.end method
.method public static u(I)I
.locals 0
.line 1
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->g(I)I
.line 2
.line 3
.line 4
move-result p0
.line 5
add-int/lit8 p0, p0, 0x8
.line 6
.line 7
return p0
.end method
.method public static v(II)I
.locals 0
.line 1
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->g(I)I
.line 2
.line 3
.line 4
move-result p0
.line 5
invoke-static {p1}, Lcom/google/android/gms/internal/drive/zzjr;->i(I)I
.line 6
.line 7
.line 8
move-result p1
.line 9
add-int/2addr p1, p0
.line 10
return p1
.end method
.method public static w(I)I
.locals 0
.line 1
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->g(I)I
.line 2
.line 3
.line 4
move-result p0
.line 5
add-int/lit8 p0, p0, 0x4
.line 6
.line 7
return p0
.end method
.method public static y(Ljava/lang/String;)I
.locals 1
.line 1
:try_start_0
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zznf;->a(Ljava/lang/String;)I
.line 2
.line 3
.line 4
move-result p0
:try_end_0
.catch Lcom/google/android/gms/internal/drive/zznj; {:try_start_0 .. :try_end_0} :catch_0
.line 5
goto :goto_0
.line 6
:catch_0
sget-object v0, Lcom/google/android/gms/internal/drive/zzkm;->a:Ljava/nio/charset/Charset;
.line 7
.line 8
invoke-virtual {p0, v0}, Ljava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B
.line 9
.line 10
.line 11
move-result-object p0
.line 12
array-length p0, p0
.line 13
:goto_0
invoke-static {p0}, Lcom/google/android/gms/internal/drive/zzjr;->i(I)I
.line 14
.line 15
.line 16
move-result v0
.line 17
add-int/2addr v0, p0
.line 18
return v0
.end method
# virtual methods
.method public abstract B(I)V
.end method
.method public abstract C(I)V
.end method
.method public abstract a(IJ)V
.end method
.method public abstract b(ILcom/google/android/gms/internal/drive/zzjc;)V
.end method
.method public abstract c(ILcom/google/android/gms/internal/drive/zzlq;)V
.end method
.method public abstract d(ILcom/google/android/gms/internal/drive/zzlq;Lcom/google/android/gms/internal/drive/zzmf;)V
.end method
.method public abstract e(ILjava/lang/String;)V
.end method
.method public abstract f(I)V
.end method
.method public abstract j(II)V
.end method
.method public abstract k(ILcom/google/android/gms/internal/drive/zzjc;)V
.end method
.method public abstract l(IZ)V
.end method
.method public abstract o(B)V
.end method
.method public abstract p(II)V
.end method
.method public abstract q(IJ)V
.end method
.method public abstract r()I
.end method
.method public abstract s(II)V
.end method
.method public abstract t(II)V
.end method
.method public abstract x(J)V
.end method
.method public abstract z(J)V
.end method