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

342 lines
17 KiB
Java

package com.google.android.gms.internal.ads;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.JsonReader;
import com.google.android.gms.ads.RequestConfiguration;
import j$.util.Objects;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/* loaded from: classes.dex */
public final class zzdyt extends zzbop {
public final zzdyw f;
public final zzdyr g;
public final HashMap h = new HashMap();
public zzdyt(zzdyw zzdywVar, zzdyr zzdyrVar) {
this.f = zzdywVar;
this.g = zzdyrVar;
}
public static com.google.android.gms.ads.internal.client.zzm c5(Map map) {
com.google.android.gms.ads.internal.client.zzn zznVar = new com.google.android.gms.ads.internal.client.zzn();
String str = (String) map.get("ad_request");
if (str == null) {
return zznVar.zza();
}
JsonReader jsonReader = new JsonReader(new StringReader(Uri.decode(str)));
try {
jsonReader.beginObject();
while (jsonReader.hasNext()) {
String nextName = jsonReader.nextName();
switch (nextName.hashCode()) {
case -1289032093:
if (!nextName.equals("extras")) {
break;
} else {
jsonReader.beginObject();
Bundle bundle = new Bundle();
while (jsonReader.hasNext()) {
bundle.putString(jsonReader.nextName(), jsonReader.nextString());
}
jsonReader.endObject();
zznVar.zzb(bundle);
break;
}
case -839117230:
if (!nextName.equals("isTestDevice")) {
break;
} else {
zznVar.zzd(jsonReader.nextBoolean());
break;
}
case -733436947:
if (!nextName.equals("tagForUnderAgeOfConsent")) {
break;
} else if (jsonReader.nextBoolean()) {
zznVar.zzf(1);
break;
} else {
zznVar.zzf(0);
break;
}
case -99890337:
if (!nextName.equals("httpTimeoutMillis")) {
break;
} else {
zznVar.zzh(jsonReader.nextInt());
break;
}
case 523149226:
if (!nextName.equals("keywords")) {
break;
} else {
jsonReader.beginArray();
ArrayList arrayList = new ArrayList();
while (jsonReader.hasNext()) {
arrayList.add(jsonReader.nextString());
}
jsonReader.endArray();
zznVar.zzc(arrayList);
break;
}
case 597632527:
if (!nextName.equals("maxAdContentRating")) {
break;
} else {
String nextString = jsonReader.nextString();
if (!RequestConfiguration.zza.contains(nextString)) {
break;
} else {
zznVar.zzg(nextString);
break;
}
}
case 1411582723:
if (!nextName.equals("tagForChildDirectedTreatment")) {
break;
} else if (jsonReader.nextBoolean()) {
zznVar.zze(1);
break;
} else {
zznVar.zze(0);
break;
}
}
jsonReader.skipValue();
}
jsonReader.endObject();
} catch (IOException unused) {
int i = com.google.android.gms.ads.internal.util.zze.zza;
com.google.android.gms.ads.internal.util.client.zzo.zzd("Ad Request json was malformed, parsing ended early.");
}
com.google.android.gms.ads.internal.client.zzm zza = zznVar.zza();
Bundle bundle2 = zza.zzm;
Bundle bundle3 = bundle2.getBundle("com.google.ads.mediation.admob.AdMobAdapter");
if (bundle3 == null) {
bundle3 = zza.zzc;
bundle2.putBundle("com.google.ads.mediation.admob.AdMobAdapter", bundle3);
}
return new com.google.android.gms.ads.internal.client.zzm(zza.zza, zza.zzb, bundle3, zza.zzd, zza.zze, zza.zzf, zza.zzg, zza.zzh, zza.zzi, zza.zzj, zza.zzk, zza.zzl, bundle2, zza.zzn, zza.zzo, zza.zzp, zza.zzq, zza.zzr, zza.zzs, zza.zzt, zza.zzu, zza.zzv, zza.zzw, zza.zzx, zza.zzy, zza.zzz, zza.zzA);
}
@Override // com.google.android.gms.internal.ads.zzboq
public final void zze(String str) {
if (!((Boolean) com.google.android.gms.ads.internal.client.zzbd.zzc().a(zzbgk.nb)).booleanValue()) {
return;
}
com.google.android.gms.ads.internal.util.zze.zza("Received H5 gmsg: ".concat(String.valueOf(str)));
Uri parse = Uri.parse(str);
com.google.android.gms.ads.internal.zzt.zzc();
Map zzV = com.google.android.gms.ads.internal.util.zzs.zzV(parse);
String str2 = (String) zzV.get("action");
if (TextUtils.isEmpty(str2)) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("H5 gmsg did not contain an action");
return;
}
int hashCode = str2.hashCode();
HashMap hashMap = this.h;
zzdyr zzdyrVar = this.g;
if (hashCode != 579053441) {
if (hashCode == 871091088) {
String str3 = "initialize";
if (str2.equals("initialize")) {
hashMap.clear();
zzdyrVar.getClass();
zzdyrVar.b(new zzdyq(str3));
return;
}
}
} else if (str2.equals("dispose_all")) {
Iterator it = hashMap.values().iterator();
while (it.hasNext()) {
((zzdyn) it.next()).zzc();
}
hashMap.clear();
return;
}
String str4 = (String) zzV.get("obj_id");
try {
Objects.requireNonNull(str4);
long parseLong = Long.parseLong(str4);
int hashCode2 = str2.hashCode();
String str5 = "rewarded";
String str6 = "interstitial";
String str7 = "creation";
zzdyw zzdywVar = this.f;
switch (hashCode2) {
case -1790951212:
if (str2.equals("show_interstitial_ad")) {
zzdyn zzdynVar = (zzdyn) hashMap.get(Long.valueOf(parseLong));
if (zzdynVar == null) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("Could not show H5 ad, object ID does not exist");
zzdyrVar.getClass();
zzdyq zzdyqVar = new zzdyq(str6);
zzdyqVar.f6263a = Long.valueOf(parseLong);
zzdyqVar.f6264c = "onNativeAdObjectNotAvailable";
zzdyrVar.b(zzdyqVar);
return;
}
zzdynVar.zzb();
return;
}
break;
case -1266374734:
if (str2.equals("show_rewarded_ad")) {
zzdyn zzdynVar2 = (zzdyn) hashMap.get(Long.valueOf(parseLong));
if (zzdynVar2 == null) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("Could not show H5 ad, object ID does not exist");
zzdyrVar.getClass();
zzdyq zzdyqVar2 = new zzdyq(str5);
zzdyqVar2.f6263a = Long.valueOf(parseLong);
zzdyqVar2.f6264c = "onNativeAdObjectNotAvailable";
zzdyrVar.b(zzdyqVar2);
return;
}
zzdynVar2.zzb();
return;
}
break;
case -257098725:
if (str2.equals("load_rewarded_ad")) {
zzdyn zzdynVar3 = (zzdyn) hashMap.get(Long.valueOf(parseLong));
if (zzdynVar3 == null) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("Could not load H5 ad, object ID does not exist");
zzdyrVar.getClass();
zzdyq zzdyqVar3 = new zzdyq(str5);
zzdyqVar3.f6263a = Long.valueOf(parseLong);
zzdyqVar3.f6264c = "onNativeAdObjectNotAvailable";
zzdyrVar.b(zzdyqVar3);
return;
}
zzdynVar3.a(c5(zzV));
return;
}
break;
case 393881811:
if (str2.equals("create_interstitial_ad")) {
if (hashMap.size() >= ((Integer) com.google.android.gms.ads.internal.client.zzbd.zzc().a(zzbgk.ob)).intValue()) {
com.google.android.gms.ads.internal.util.client.zzo.zzi("Could not create H5 ad, too many existing objects");
zzdyrVar.a(parseLong);
return;
}
Long valueOf = Long.valueOf(parseLong);
if (hashMap.containsKey(valueOf)) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("Could not create H5 ad, object ID already exists");
zzdyrVar.a(parseLong);
return;
}
String str8 = (String) zzV.get("ad_unit");
if (TextUtils.isEmpty(str8)) {
com.google.android.gms.ads.internal.util.client.zzo.zzi("Could not create H5 ad, missing ad unit id");
zzdyrVar.a(parseLong);
return;
}
zzcni zzcniVar = (zzcni) zzdywVar.zzc();
zzcniVar.c(parseLong);
zzcniVar.b(str8);
zzcnj zzcnjVar = (zzcnj) zzcniVar.a();
long longValue = zzcnjVar.f5303a.longValue();
zzcnl zzcnlVar = zzcnjVar.d;
hashMap.put(valueOf, new zzdyy(longValue, zzcnlVar.f5307a, new zzdyr(zzcnlVar.b), zzcnjVar.f5304c, zzcnjVar.b));
zzdyrVar.getClass();
zzdyq zzdyqVar4 = new zzdyq(str7);
zzdyqVar4.f6263a = Long.valueOf(parseLong);
zzdyqVar4.f6264c = "nativeObjectCreated";
zzdyrVar.b(zzdyqVar4);
StringBuilder sb = new StringBuilder(String.valueOf(parseLong).length() + 39 + str8.length());
a.j(sb, "Created H5 interstitial #", parseLong, " with ad unit ");
sb.append(str8);
com.google.android.gms.ads.internal.util.zze.zza(sb.toString());
return;
}
break;
case 585513149:
if (str2.equals("load_interstitial_ad")) {
zzdyn zzdynVar4 = (zzdyn) hashMap.get(Long.valueOf(parseLong));
if (zzdynVar4 == null) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("Could not load H5 ad, object ID does not exist");
zzdyrVar.getClass();
zzdyq zzdyqVar5 = new zzdyq(str6);
zzdyqVar5.f6263a = Long.valueOf(parseLong);
zzdyqVar5.f6264c = "onNativeAdObjectNotAvailable";
zzdyrVar.b(zzdyqVar5);
return;
}
zzdynVar4.a(c5(zzV));
return;
}
break;
case 1671767583:
if (str2.equals("dispose")) {
Long valueOf2 = Long.valueOf(parseLong);
zzdyn zzdynVar5 = (zzdyn) hashMap.get(valueOf2);
if (zzdynVar5 == null) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("Could not dispose H5 ad, object ID does not exist");
return;
}
zzdynVar5.zzc();
hashMap.remove(valueOf2);
StringBuilder sb2 = new StringBuilder(String.valueOf(parseLong).length() + 16);
sb2.append("Disposed H5 ad #");
sb2.append(parseLong);
com.google.android.gms.ads.internal.util.zze.zza(sb2.toString());
return;
}
break;
case 2109237041:
if (str2.equals("create_rewarded_ad")) {
if (hashMap.size() >= ((Integer) com.google.android.gms.ads.internal.client.zzbd.zzc().a(zzbgk.ob)).intValue()) {
com.google.android.gms.ads.internal.util.client.zzo.zzi("Could not create H5 ad, too many existing objects");
zzdyrVar.a(parseLong);
return;
}
Long valueOf3 = Long.valueOf(parseLong);
if (hashMap.containsKey(valueOf3)) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("Could not create H5 ad, object ID already exists");
zzdyrVar.a(parseLong);
return;
}
String str9 = (String) zzV.get("ad_unit");
if (TextUtils.isEmpty(str9)) {
com.google.android.gms.ads.internal.util.client.zzo.zzi("Could not create H5 ad, missing ad unit id");
zzdyrVar.a(parseLong);
return;
}
zzcni zzcniVar2 = (zzcni) zzdywVar.zzc();
zzcniVar2.c(parseLong);
zzcniVar2.b(str9);
zzcnj zzcnjVar2 = (zzcnj) zzcniVar2.a();
long longValue2 = zzcnjVar2.f5303a.longValue();
zzcnl zzcnlVar2 = zzcnjVar2.d;
hashMap.put(valueOf3, new zzdzc(longValue2, zzcnlVar2.f5307a, new zzdyr(zzcnlVar2.b), zzcnjVar2.f5304c, zzcnjVar2.b));
zzdyrVar.getClass();
zzdyq zzdyqVar6 = new zzdyq(str7);
zzdyqVar6.f6263a = Long.valueOf(parseLong);
zzdyqVar6.f6264c = "nativeObjectCreated";
zzdyrVar.b(zzdyqVar6);
StringBuilder sb3 = new StringBuilder(String.valueOf(parseLong).length() + 35 + str9.length());
a.j(sb3, "Created H5 rewarded #", parseLong, " with ad unit ");
sb3.append(str9);
com.google.android.gms.ads.internal.util.zze.zza(sb3.toString());
return;
}
break;
}
com.google.android.gms.ads.internal.util.client.zzo.zzd("H5 gmsg contained invalid action: ".concat(str2));
} catch (NullPointerException | NumberFormatException unused) {
com.google.android.gms.ads.internal.util.client.zzo.zzd("H5 gmsg did not contain a valid object id: ".concat(String.valueOf(str4)));
}
}
@Override // com.google.android.gms.internal.ads.zzboq
public final void zzf() {
this.h.clear();
}
}