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

329 lines
11 KiB
Java

package com.google.android.gms.ads.internal;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.media.a;
import android.text.TextUtils;
import android.view.ViewGroup;
import android.webkit.WebView;
import androidx.annotation.Nullable;
import com.google.ads.mediation.admob.AdMobAdapter;
import com.google.android.gms.ads.internal.client.zzbh;
import com.google.android.gms.ads.internal.client.zzbk;
import com.google.android.gms.ads.internal.client.zzbn;
import com.google.android.gms.ads.internal.client.zzbw;
import com.google.android.gms.ads.internal.client.zzcb;
import com.google.android.gms.ads.internal.client.zzco;
import com.google.android.gms.ads.internal.client.zzcs;
import com.google.android.gms.ads.internal.client.zzcv;
import com.google.android.gms.ads.internal.client.zzdt;
import com.google.android.gms.ads.internal.client.zzea;
import com.google.android.gms.ads.internal.client.zzed;
import com.google.android.gms.ads.internal.client.zzeh;
import com.google.android.gms.ads.internal.client.zzga;
import com.google.android.gms.ads.internal.client.zzx;
import com.google.android.gms.ads.internal.util.client.VersionInfoParcel;
import com.google.android.gms.ads.internal.util.zzac;
import com.google.android.gms.common.internal.Preconditions;
import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.dynamic.ObjectWrapper;
import com.google.android.gms.internal.ads.zzbeg;
import com.google.android.gms.internal.ads.zzbhf;
import com.google.android.gms.internal.ads.zzbhw;
import com.google.android.gms.internal.ads.zzbxh;
import com.google.android.gms.internal.ads.zzbxk;
import com.google.android.gms.internal.ads.zzbzs;
import java.util.TreeMap;
import javax.annotation.ParametersAreNonnullByDefault;
@ParametersAreNonnullByDefault
/* loaded from: classes.dex */
public final class zzs extends zzbw {
/* renamed from: c, reason: collision with root package name */
public final VersionInfoParcel f3180c;
public final com.google.android.gms.ads.internal.client.zzr f;
public final Context g;
public final zzr h;
public WebView i;
public zzbk j;
public AsyncTask k;
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Type inference failed for: r2v6, types: [java.lang.Object, android.view.View$OnTouchListener] */
public zzs(Context context, com.google.android.gms.ads.internal.client.zzr zzrVar, String str, VersionInfoParcel versionInfoParcel) {
this.g = context;
this.f3180c = versionInfoParcel;
this.f = zzrVar;
this.i = new WebView(context);
this.h = new zzr(context, str);
c5(0);
this.i.setVerticalScrollBarEnabled(false);
this.i.getSettings().setJavaScriptEnabled(true);
this.i.setWebViewClient(new zzo(this));
this.i.setOnTouchListener(new Object());
}
public final void c5(int i) {
if (this.i == null) {
return;
}
this.i.setLayoutParams(new ViewGroup.LayoutParams(-1, i));
}
public final String d5() {
String str = this.h.e;
if (true == TextUtils.isEmpty(str)) {
str = "www.google.com";
}
String str2 = (String) zzbhw.d.c();
return a.q(new StringBuilder(String.valueOf(str).length() + 8 + String.valueOf(str2).length()), "https://", str, str2);
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final boolean zzA() {
return false;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final boolean zzB() {
return false;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzC(zzbzs zzbzsVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzD(String str) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzE(String str) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
@Nullable
public final zzed zzF() {
return null;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzG(zzga zzgaVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzH(zzeh zzehVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzI(zzx zzxVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzJ(zzbeg zzbegVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzK(boolean z) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzP(zzdt zzdtVar) {
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzQ(com.google.android.gms.ads.internal.client.zzm zzmVar, zzbn zzbnVar) {
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzR(IObjectWrapper iObjectWrapper) {
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzS(zzcv zzcvVar) {
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzT(long j) {
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final long zzU() {
return 0L;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzY(zzcs zzcsVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final IObjectWrapper zzb() {
Preconditions.checkMainThread("getAdFrame must be called on the main UI thread.");
return new ObjectWrapper(this.i);
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzc() {
Preconditions.checkMainThread("destroy must be called on the main UI thread.");
this.k.cancel(true);
this.i.destroy();
this.i = null;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final boolean zzd() {
return false;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzdR(zzbk zzbkVar) {
this.j = zzbkVar;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final boolean zze(com.google.android.gms.ads.internal.client.zzm zzmVar) {
Bundle bundle;
Preconditions.checkNotNull(this.i, "This Search Ad has already been torn down");
zzr zzrVar = this.h;
TreeMap treeMap = zzrVar.f3179c;
zzrVar.d = zzmVar.zzj.zza;
Bundle bundle2 = zzmVar.zzm;
if (bundle2 != null) {
bundle = bundle2.getBundle(AdMobAdapter.class.getName());
} else {
bundle = null;
}
if (bundle != null) {
String str = (String) zzbhw.f4694c.c();
for (String str2 : bundle.keySet()) {
if (str.equals(str2)) {
zzrVar.e = bundle.getString(str2);
} else if (str2.startsWith("csa_")) {
treeMap.put(str2.substring(4), bundle.getString(str2));
}
}
treeMap.put("SDKVersion", this.f3180c.afmaVersion);
if (((Boolean) zzbhw.f4693a.c()).booleanValue()) {
Bundle zzb = zzac.zzb(zzrVar.f3178a, (String) zzbhw.b.c());
for (String str3 : zzb.keySet()) {
treeMap.put(str3, zzb.get(str3).toString());
}
}
}
this.k = new zzq(this).execute(new Void[0]);
return true;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzf() {
Preconditions.checkMainThread("pause must be called on the main UI thread.");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzg() {
Preconditions.checkMainThread("resume must be called on the main UI thread.");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzi(zzco zzcoVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzj(zzcb zzcbVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final Bundle zzk() {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzl() {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzm() {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final com.google.android.gms.ads.internal.client.zzr zzn() {
return this.f;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzo(com.google.android.gms.ads.internal.client.zzr zzrVar) {
throw new IllegalStateException("AdSize must be set before initialization");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzp(zzbxh zzbxhVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzq(zzbxk zzbxkVar, String str) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
@Nullable
public final String zzr() {
return null;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
@Nullable
public final String zzs() {
return null;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
@Nullable
public final zzea zzt() {
return null;
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final String zzu() {
throw new IllegalStateException("getAdUnitId not implemented");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final zzco zzv() {
throw new IllegalStateException("getIAppEventListener not implemented");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final zzbk zzw() {
throw new IllegalStateException("getIAdListener not implemented");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzx(zzbhf zzbhfVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzy(zzbh zzbhVar) {
throw new IllegalStateException("Unused method");
}
@Override // com.google.android.gms.ads.internal.client.zzbx
public final void zzz(boolean z) {
}
}