soul-browser/sources/java/com/google/android/gms/internal/drive/zzkb.java
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

484 lines
16 KiB
Java

package com.google.android.gms.internal.drive;
import androidx.work.impl.workers.a;
import com.google.android.gms.internal.drive.zzkd;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes.dex */
public final class zzkb<FieldDescriptorType extends zzkd<FieldDescriptorType>> {
/* renamed from: a, reason: collision with root package name */
public final zzmj f10213a;
public boolean b;
/* renamed from: c, reason: collision with root package name */
public boolean f10214c;
static {
new zzkb(0);
}
/* JADX WARN: Type inference failed for: r0v1, types: [com.google.android.gms.internal.drive.zzmi, com.google.android.gms.internal.drive.zzmj] */
public zzkb() {
this.f10214c = false;
this.f10213a = new zzmi(16);
}
public static int c(zznm zznmVar, int i, Object obj) {
int g = zzjr.g(i);
if (zznmVar == zznm.o) {
Charset charset = zzkm.f10222a;
g <<= 1;
}
return g + g(zznmVar, obj);
}
/* JADX WARN: Code restructure failed: missing block: B:12:0x0024, code lost:
if ((r3 instanceof com.google.android.gms.internal.drive.zzkn) == false) goto L15;
*/
/* JADX WARN: Code restructure failed: missing block: B:16:0x0030, code lost:
if ((r3 instanceof byte[]) == false) goto L15;
*/
/* JADX WARN: Code restructure failed: missing block: B:6:0x001b, code lost:
if ((r3 instanceof com.google.android.gms.internal.drive.zzkt) == false) goto L15;
*/
/* JADX WARN: Code restructure failed: missing block: B:7:0x0027, code lost:
r0 = false;
*/
/* JADX WARN: Failed to find 'out' block for switch in B:2:0x0011. Please report as an issue. */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public static void e(com.google.android.gms.internal.drive.zznm r2, java.lang.Object r3) {
/*
java.nio.charset.Charset r0 = com.google.android.gms.internal.drive.zzkm.f10222a
r3.getClass()
int[] r0 = com.google.android.gms.internal.drive.zzkc.f10215a
com.google.android.gms.internal.drive.zznr r2 = r2.f10264c
int r2 = r2.ordinal()
r2 = r0[r2]
r0 = 1
r1 = 0
switch(r2) {
case 1: goto L42;
case 2: goto L3f;
case 3: goto L3c;
case 4: goto L39;
case 5: goto L36;
case 6: goto L33;
case 7: goto L2a;
case 8: goto L1e;
case 9: goto L15;
default: goto L14;
}
L14:
goto L45
L15:
boolean r2 = r3 instanceof com.google.android.gms.internal.drive.zzlq
if (r2 != 0) goto L28
boolean r2 = r3 instanceof com.google.android.gms.internal.drive.zzkt
if (r2 == 0) goto L27
goto L28
L1e:
boolean r2 = r3 instanceof java.lang.Integer
if (r2 != 0) goto L28
boolean r2 = r3 instanceof com.google.android.gms.internal.drive.zzkn
if (r2 == 0) goto L27
goto L28
L27:
r0 = r1
L28:
r1 = r0
goto L45
L2a:
boolean r2 = r3 instanceof com.google.android.gms.internal.drive.zzjc
if (r2 != 0) goto L28
boolean r2 = r3 instanceof byte[]
if (r2 == 0) goto L27
goto L28
L33:
boolean r0 = r3 instanceof java.lang.String
goto L28
L36:
boolean r0 = r3 instanceof java.lang.Boolean
goto L28
L39:
boolean r0 = r3 instanceof java.lang.Double
goto L28
L3c:
boolean r0 = r3 instanceof java.lang.Float
goto L28
L3f:
boolean r0 = r3 instanceof java.lang.Long
goto L28
L42:
boolean r0 = r3 instanceof java.lang.Integer
goto L28
L45:
if (r1 == 0) goto L48
return
L48:
java.lang.IllegalArgumentException r2 = new java.lang.IllegalArgumentException
java.lang.String r3 = "Wrong object type used with protocol message reflection."
r2.<init>(r3)
throw r2
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.gms.internal.drive.zzkb.e(com.google.android.gms.internal.drive.zznm, java.lang.Object):void");
}
public static int f(zzkd zzkdVar, Object obj) {
zznm A0 = zzkdVar.A0();
int m = zzkdVar.m();
if (zzkdVar.k0()) {
int i = 0;
if (zzkdVar.F()) {
Iterator it = ((List) obj).iterator();
while (it.hasNext()) {
i += g(A0, it.next());
}
return zzjr.i(i) + zzjr.g(m) + i;
}
Iterator it2 = ((List) obj).iterator();
while (it2.hasNext()) {
i += c(A0, m, it2.next());
}
return i;
}
return c(A0, m, obj);
}
public static int g(zznm zznmVar, Object obj) {
int d;
int i;
switch (zzkc.b[zznmVar.ordinal()]) {
case 1:
((Double) obj).getClass();
Logger logger = zzjr.b;
return 8;
case 2:
((Float) obj).getClass();
Logger logger2 = zzjr.b;
return 4;
case 3:
return zzjr.A(((Long) obj).longValue());
case 4:
return zzjr.A(((Long) obj).longValue());
case 5:
return zzjr.h(((Integer) obj).intValue());
case 6:
((Long) obj).getClass();
Logger logger3 = zzjr.b;
return 8;
case 7:
((Integer) obj).getClass();
Logger logger4 = zzjr.b;
return 4;
case 8:
((Boolean) obj).getClass();
Logger logger5 = zzjr.b;
return 1;
case 9:
Logger logger6 = zzjr.b;
return ((zzlq) obj).d();
case 10:
if (obj instanceof zzkt) {
Logger logger7 = zzjr.b;
d = ((zzkt) obj).b();
i = zzjr.i(d);
break;
} else {
Logger logger8 = zzjr.b;
d = ((zzlq) obj).d();
i = zzjr.i(d);
break;
}
case 11:
if (obj instanceof zzjc) {
Logger logger9 = zzjr.b;
d = ((zzjc) obj).size();
i = zzjr.i(d);
break;
} else {
return zzjr.y((String) obj);
}
case 12:
if (obj instanceof zzjc) {
Logger logger10 = zzjr.b;
d = ((zzjc) obj).size();
i = zzjr.i(d);
break;
} else {
Logger logger11 = zzjr.b;
d = ((byte[]) obj).length;
i = zzjr.i(d);
break;
}
case 13:
return zzjr.i(((Integer) obj).intValue());
case 14:
((Integer) obj).getClass();
Logger logger12 = zzjr.b;
return 4;
case 15:
((Long) obj).getClass();
Logger logger13 = zzjr.b;
return 8;
case 16:
int intValue = ((Integer) obj).intValue();
return zzjr.i((intValue >> 31) ^ (intValue << 1));
case 17:
long longValue = ((Long) obj).longValue();
return zzjr.A((longValue >> 63) ^ (longValue << 1));
case 18:
if (obj instanceof zzkn) {
return zzjr.h(((zzkn) obj).m());
}
return zzjr.h(((Integer) obj).intValue());
default:
throw new RuntimeException("There is no way to get here, but the compiler thinks otherwise.");
}
return i + d;
}
public static boolean h(Map.Entry entry) {
zzkd zzkdVar = (zzkd) entry.getKey();
if (zzkdVar.X() == zznr.MESSAGE) {
if (zzkdVar.k0()) {
Iterator it = ((List) entry.getValue()).iterator();
while (it.hasNext()) {
if (!((zzlq) it.next()).isInitialized()) {
return false;
}
}
} else {
Object value = entry.getValue();
if (value instanceof zzlq) {
if (!((zzlq) value).isInitialized()) {
return false;
}
} else {
if (value instanceof zzkt) {
return true;
}
throw new IllegalArgumentException("Wrong object type used with protocol message reflection.");
}
}
}
return true;
}
public static int j(Map.Entry entry) {
int g = zzjr.g(3);
int g2 = zzjr.g(1);
zzkd zzkdVar = (zzkd) entry.getKey();
Object value = entry.getValue();
if (zzkdVar.X() == zznr.MESSAGE && !zzkdVar.k0() && !zzkdVar.F()) {
if (value instanceof zzkt) {
int v = zzjr.v(2, ((zzkd) entry.getKey()).m()) + (g2 << 1);
int b = ((zzkt) value).b();
return a.c(b, b, g, v);
}
int v2 = zzjr.v(2, ((zzkd) entry.getKey()).m()) + (g2 << 1);
int d = ((zzlq) value).d();
return a.c(d, d, g, v2);
}
return f(zzkdVar, value);
}
public static Object k(Object obj) {
if (obj instanceof zzlx) {
return ((zzlx) obj).C0();
}
if (obj instanceof byte[]) {
byte[] bArr = (byte[]) obj;
byte[] bArr2 = new byte[bArr.length];
System.arraycopy(bArr, 0, bArr2, 0, bArr.length);
return bArr2;
}
return obj;
}
/* JADX WARN: Code restructure failed: missing block: B:8:0x0034, code lost:
return false;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public final boolean a() {
/*
r4 = this;
r0 = 0
r1 = r0
L2:
com.google.android.gms.internal.drive.zzmj r2 = r4.f10213a
java.util.List r3 = r2.f
int r3 = r3.size()
if (r1 >= r3) goto L1a
java.util.Map$Entry r2 = r2.c(r1)
boolean r2 = h(r2)
if (r2 != 0) goto L17
goto L34
L17:
int r1 = r1 + 1
goto L2
L1a:
java.lang.Iterable r1 = r2.f()
java.util.Iterator r1 = r1.iterator()
L22:
boolean r2 = r1.hasNext()
if (r2 == 0) goto L35
java.lang.Object r2 = r1.next()
java.util.Map$Entry r2 = (java.util.Map.Entry) r2
boolean r2 = h(r2)
if (r2 != 0) goto L22
L34:
return r0
L35:
r0 = 1
return r0
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.gms.internal.drive.zzkb.a():boolean");
}
public final Iterator b() {
boolean z = this.f10214c;
zzmj zzmjVar = this.f10213a;
if (z) {
return new zzkw(((zzmr) zzmjVar.entrySet()).iterator());
}
return ((zzmr) zzmjVar.entrySet()).iterator();
}
public final Object clone() {
zzmj zzmjVar;
zzkb zzkbVar = new zzkb();
int i = 0;
while (true) {
zzmjVar = this.f10213a;
if (i >= zzmjVar.f.size()) {
break;
}
Map.Entry c2 = zzmjVar.c(i);
zzkbVar.d((zzkd) c2.getKey(), c2.getValue());
i++;
}
for (Map.Entry entry : zzmjVar.f()) {
zzkbVar.d((zzkd) entry.getKey(), entry.getValue());
}
zzkbVar.f10214c = this.f10214c;
return zzkbVar;
}
public final void d(zzkd zzkdVar, Object obj) {
if (zzkdVar.k0()) {
if (obj instanceof List) {
ArrayList arrayList = new ArrayList();
arrayList.addAll((List) obj);
int size = arrayList.size();
int i = 0;
while (i < size) {
Object obj2 = arrayList.get(i);
i++;
e(zzkdVar.A0(), obj2);
}
obj = arrayList;
} else {
throw new IllegalArgumentException("Wrong object type used with protocol message reflection.");
}
} else {
e(zzkdVar.A0(), obj);
}
if (obj instanceof zzkt) {
this.f10214c = true;
}
this.f10213a.put(zzkdVar, obj);
}
public final boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof zzkb)) {
return false;
}
return this.f10213a.equals(((zzkb) obj).f10213a);
}
public final int hashCode() {
return this.f10213a.hashCode();
}
public final void i(Map.Entry entry) {
Object G;
zzkd zzkdVar = (zzkd) entry.getKey();
Object value = entry.getValue();
if (!(value instanceof zzkt)) {
boolean k0 = zzkdVar.k0();
zzmj zzmjVar = this.f10213a;
if (k0) {
Object obj = zzmjVar.get(zzkdVar);
if (!(obj instanceof zzkt)) {
if (obj == null) {
obj = new ArrayList();
}
Iterator it = ((List) value).iterator();
while (it.hasNext()) {
((List) obj).add(k(it.next()));
}
zzmjVar.put(zzkdVar, obj);
return;
}
int i = zzkt.f10225c;
throw new NoSuchMethodError();
}
if (zzkdVar.X() == zznr.MESSAGE) {
Object obj2 = zzmjVar.get(zzkdVar);
if (!(obj2 instanceof zzkt)) {
if (obj2 == null) {
zzmjVar.put(zzkdVar, k(value));
return;
}
if (obj2 instanceof zzlx) {
G = zzkdVar.m4zza();
} else {
((zzlq) obj2).e();
G = zzkdVar.zza().G();
}
zzmjVar.put(zzkdVar, G);
return;
}
int i2 = zzkt.f10225c;
throw new NoSuchMethodError();
}
zzmjVar.put(zzkdVar, k(value));
return;
}
int i3 = zzkt.f10225c;
throw new NoSuchMethodError();
}
/* JADX WARN: Type inference failed for: r0v0, types: [com.google.android.gms.internal.drive.zzmi, com.google.android.gms.internal.drive.zzmj] */
public zzkb(int i) {
this.f10214c = false;
?? zzmiVar = new zzmi(0);
this.f10213a = zzmiVar;
if (this.b) {
return;
}
zzmiVar.e();
this.b = true;
}
}