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

98 lines
4.8 KiB
Java

package com.google.android.gms.internal.ads;
import android.util.Base64;
import com.google.common.util.concurrent.ListenableFuture;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Callable;
/* loaded from: classes.dex */
public final class zzery implements zzezx {
/* renamed from: a, reason: collision with root package name */
public final zzgyw f6867a;
public final zzfik b;
/* renamed from: c, reason: collision with root package name */
public final int f6868c;
public zzery(zzgyw zzgywVar, zzfik zzfikVar, int i) {
this.f6867a = zzgywVar;
this.b = zzfikVar;
this.f6868c = i;
}
@Override // com.google.android.gms.internal.ads.zzezx
public final ListenableFuture zza() {
return this.f6867a.v0(new Callable() { // from class: com.google.android.gms.internal.ads.zzerx
@Override // java.util.concurrent.Callable
public final Object call() {
List asList;
byte[] bArr;
zzhan zzhanVar;
zzery zzeryVar = zzery.this;
String str = null;
if (((Boolean) com.google.android.gms.ads.internal.client.zzbd.zzc().a(zzbgk.R7)).booleanValue()) {
zzfik zzfikVar = zzeryVar.b;
if (zzeryVar.f6868c != 2) {
String zzc = com.google.android.gms.ads.nonagon.signalgeneration.zzaa.zzc(zzfikVar.d);
if (((Boolean) com.google.android.gms.ads.internal.client.zzbd.zzc().a(zzbgk.T7)).booleanValue()) {
asList = Arrays.asList(((String) com.google.android.gms.ads.internal.client.zzbd.zzc().a(zzbgk.U7)).split(","));
} else {
asList = Arrays.asList(((String) com.google.android.gms.ads.internal.client.zzbd.zzc().a(zzbgk.S7)).split(","));
}
if (asList.contains(com.google.android.gms.ads.nonagon.signalgeneration.zzaa.zzb(zzc))) {
try {
zzhja zzhjaVar = zzhja.b;
synchronized (zzhjaVar) {
HashMap hashMap = zzhjaVar.f8587a;
if (hashMap.containsKey("AES128_GCM")) {
zzhanVar = (zzhan) hashMap.get("AES128_GCM");
} else {
throw new GeneralSecurityException("Name AES128_GCM does not exist");
}
}
if (zzhanVar == null) {
try {
zzhanVar = zzhat.a(((zzhka) zzhje.b.h(null)).b.h());
} catch (GeneralSecurityException e) {
throw new RuntimeException("Parsing parameters failed in getProto(). You probably want to call some Tink register function for ".concat("null"), e);
}
}
zzhai e2 = zzhai.e(zzhanVar);
try {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
e2.b().f(byteArrayOutputStream);
byteArrayOutputStream.close();
bArr = byteArrayOutputStream.toByteArray();
} catch (Throwable th) {
byteArrayOutputStream.close();
throw th;
}
} catch (IOException unused) {
throw new GeneralSecurityException("Serialize keyset failed");
}
} catch (GeneralSecurityException e3) {
com.google.android.gms.ads.internal.util.zze.zza("Failed to generate key".concat(e3.toString()));
com.google.android.gms.ads.internal.zzt.zzh().f("CryptoUtils.generateKey", e3);
bArr = new byte[0];
}
str = Base64.encodeToString(bArr, 11);
}
}
}
return new zzerz(str);
}
});
}
@Override // com.google.android.gms.internal.ads.zzezx
public final int zzb() {
return 5;
}
}