soul-browser/app/smali/com/google/android/gms/common/zze.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

38 lines
6.5 KiB
Smali

.class final Lcom/google/android/gms/common/zze;
.super Lcom/google/android/gms/common/zzm;
.source "SourceFile"
# direct methods
.method public constructor <init>([B)V
.locals 0
.line 1
invoke-direct {p0, p1}, Lcom/google/android/gms/common/zzm;-><init>([B)V
.line 2
.line 3
.line 4
return-void
.end method
# virtual methods
.method public final zzb()[B
.locals 1
.line 1
const-string v0, "0\u0082\u0006\u00040\u0082\u0003\u00ec\u00a0\u0003\u0002\u0001\u0002\u0002\u0014Q\u00d5\u00db\u0004\u00f7X\u00e7B\u0086<\u00ed\u009e\u0019\u007f\u00d7\u00da`Z\u00dd\u00c30\r\u0006\t*\u0086H\u0086\u00f7\r\u0001\u0001\u000b\u0005\u00000\u0081\u00911\u000b0\t\u0006\u0003U\u0004\u0006\u0013\u0002US1\u00130\u0011\u0006\u0003U\u0004\u0008\u0013\nCalifornia1\u00160\u0014\u0006\u0003U\u0004\u0007\u0013\rMountain View1\u00140\u0012\u0006\u0003U\u0004\n\u0013\u000bGoogle Inc.1\u00100\u000e\u0006\u0003U\u0004\u000b\u0013\u0007Android1-0+\u0006\u0003U\u0004\u0003\u000c$com_google_android_gms-rotation-20240 \u0017\r240223201718Z\u0018\u000f20540223201718Z0\u0081\u00911\u000b0\t\u0006\u0003U\u0004\u0006\u0013\u0002US1\u00130\u0011\u0006\u0003U\u0004\u0008\u0013\nCalifornia1\u00160\u0014\u0006\u0003U\u0004\u0007\u0013\rMountain View1\u00140\u0012\u0006\u0003U\u0004\n\u0013\u000bGoogle Inc.1\u00100\u000e\u0006\u0003U\u0004\u000b\u0013\u0007Android1-0+\u0006\u0003U\u0004\u0003\u000c$com_google_android_gms-rotation-20240\u0082\u0002\"0\r\u0006\t*\u0086H\u0086\u00f7\r\u0001\u0001\u0001\u0005\u0000\u0003\u0082\u0002\u000f\u00000\u0082\u0002\n\u0002\u0082\u0002\u0001\u0000\u008c\u0092\u00fdP\u0013$2\u0012\u0014\u0097\u00f1l\u001b\u0082\u0004\u00d9\u0004\u00aa\u001f`}a\u0086t\u00fdu\u0000\u0008U\u008amg\n\u009e\u008cS\u00a8\u0001\u009f\u0080]H\u001b\u00a6\u00ac\u00d5\u00ed^\u0011\u00bcv\u00b8<:\u009f\u00c6v\u00fe\u00d2a\u000e\u00e1 \u0011x\u007f\u00baW\u00961\u00d7\u00a6\u00e4\u00f0\u0085\u0003A\u0089TQ\u00c8\u00fd\u00b3\u00a4\u001b\u00b4\u00e7\u00fa|\u0092\u0094\u00d9J\u00a9\u0083\u0016\u00aa\u00c9\u00ca@\u00b1\\IaD\u0093\u00b2\u0085\u00b6\u0080\u008big\u00cb\u0014\u0005\u00c6\u00a9\u00d3\u00f3l\u00be~\u0089V\u00fc*\u00d0B#\r\u00a2\u008b\u00d1_\u0080\u00ff6\u00ab\u00dcV\u0018)\u00f6\u00ed;\u00a7b\u00d3\u0095\u009e\u00fd\u009d\u00d0F2\u001b\u008f\u0082\u001b\u00b7(\u00e2J^C\u00dfoz\u0007[\u00a6\u0080_*\u0089\u00bdD\nA9\u001f\u0085=\u00ae\u00e9\u00fbL\u00eeK-\u00d2\u00f0\u001c\u0082\u00c9\u00a0~v(\u009dg\u00b3&\u00c8@\u0014\u00cb4\u001a\u001f\u00d6b\u0015\u00162`Qo\u009f/\u0005\u00d3\u0084\u0004\u00f3%#>>b/H\u00afs\u00b106\u00de6]\u00d0\u00f1\u00c4)+\u00a9\u00bbC\u00f4\u00bc}%C\u00c8l\u00bd\u00bf\u00ba\u0015\u0002}^8\u00fa\u008f\u00ff\u001a\u00f7xn\u00f6\u00ce\u00d1\u0099\u008f\u00efZPA\u00aa\u00a6\u00a2\u0086&0\u008e\u008d`z\"\u00a2\u008c\u00181{K\u00ca\u009c\u00fc|y\u008b\u00c9%i}\u00c12u4mn2aj\u00c8\u001f\\\u00c9\u0003\u00d3{\u00b3_M\u00ce]\u000f\u00a7_\u0010\u00c9\u0019\u0003>.\u00c1\u00e3\u00c2\u0014M\u00ac\u0006n\u00c3\u00b5ZA2\u0085\u0084\u0006\u00c8\u0098\u00acq \u00b9\u00bfO\u00f1\u00fa\u0090?\u0098\u0087G\u00d0\u009f*\t\u00dd\u00a4\u00d5\u00a9\u001f_\u00adZ\u0084\u00e5bf\u0082\u00db\u00cf\u00a6.9\u00e9O\u008f\u001a\u008d\u00d1\u009a\u00af\u009c1\u0016^\u00bd\u00bf\u00a4\u0090y\u0005\u00b3\u00bd\u00cc\u00ac\u009f\u00dbU\u00b8\u00fe\u00cf7<<\u0096\n\u00d2E\u008a\u009f\u0098<\u00d0p\u0011\u009d\u00a6\u00b6\u00f9\u008eG\u00ae\u0008\u00b3\u00c4\u00fa\u00f7\u00ea\n\u0087\u0001?\u00ac\u009f\u009c\u0091\u00e0\u008fK\u000c\u00d7\u008c\u0002\u00c63\u00f8]\u00b7D\u001b\u000b\u0005\u0081~\u00dc\t{\u00c2\u00f7\u00e5L(\u00aa\u00dc3\u00d3\u00d0+\u0011Y\u00f0\u00c6\\\u0013\u009d\u00bd\u00c4\u001cP\u00fe\u008d\u00e0\u0016 N\u00d8\u00da\u00a2\u00f2o\u00af\u0082\u00d7\u00a4\r\u0002\u0003\u0001\u0000\u0001\u00a3P0N0\u000c\u0006\u0003U\u001d\u0013\u0004\u00050\u0003\u0001\u0001\u00ff0\u001d\u0006\u0003U\u001d\u000e\u0004\u0016\u0004\u0014\u00fe=\u00ed\u00a4\u00ba\u00a1\u008d\u0017\u00a4\u00d9\u00a4s\u0007F38k\u0005)\u00f10\u001f\u0006\u0003U\u001d#\u0004\u00180\u0016\u0080\u0014\u00fe=\u00ed\u00a4\u00ba\u00a1\u008d\u0017\u00a4\u00d9\u00a4s\u0007F38k\u0005)\u00f10\r\u0006\t*\u0086H\u0086\u00f7\r\u0001\u0001\u000b\u0005\u0000\u0003\u0082\u0002\u0001\u00005\u0096\u00cf\u00beL\u00f4\u0091\u009e\u00d8:BW\u00c7+\u00fb\u00dd6\u0080\u00d4\u0014\u00af\u0096\t\u00cdI\u00bda\u0086\u008ei\u0094\u009c\u001c\u00c6\u00da\u0084\u0080_\u00da\\\u001f\u0097*2\u00c9gjX\u00e6m\u00ca\"\u00dc\u00e4D\u00fc\u000f\u00af\u0015e\u00d1\u00c1w\u00ca}\u00d4\u00b2\u00e8\u00dc\u0001\u00ea\u0081\u0006\u00d6\u00d8\u00f7\u009d>\u00a5\u00a6\u008fOmj\u00f2\u009e\u000c\u00cd\u000c\u00b2\u000c\u008c\\\u009eU\u00ac\u0015\r\u00e8l\u00b2\u00fc\u0096+G\u0011\u0014\u0093k\u00c4\u00e6\u00ec<D\u00ae\u00b5\u00ea=\u00baI\u00b3\u00f49\u009c_\u0007\u0013\u00fe{t4\u00ec\u00ceZ=\"HH\u00be\u00e1\u008f0\u0003\u001b\u0081\u000eWoH\u00c0\u00f8\u00e3J\u0098\u0084\'o\u00ee\u00f3++\u00b2C\u00da\u0014\u00f0\u0001\u00d3\u0097\u00bbL\u00b9\u00e5D\u00d8|\u00c4~\u000e\u0014{\u00d1\u00d0\t\u00de\u00d5N\u009f\u0093\u0007\u00e5B\u0008 4\u00f2\u0011\u00f7\u00b28\u0085\u00cfcU\u00eeG;\u00d3T\u0094\u00bd>\u00e1j\u0000aWZ\u00dc\u0095\u0089\u0011\u00d5\u0015\u0099~\u00edop\u00dcB\u0015\u0015I\u0082\u0019\u001c\u00ae\u0005X{\u009f>\u00b0\u0094r\u0017\u009c\u00a2\u00a1\u009a\u00c6\u00a5Qtw\u00bc`*\u0001\u00c23\u00be\u00b65]\u0013\u00ab\u0019UU9\u0018\u00e5=<\u0010!\u00da\u00d2^U\u00ea\u00f1\u00a2\u00aeK\u00e7\u00a7\u00b9\u00f7\u0096\u00de\u00a33\u00ef\u00e3.\u00cb^)\u00fa^\u00eey\u00e6\u0091x}\u009cje(V\u00ea\u0083\"$\u0094\u00c4\u00b9\u00dc\u00ceS2\u008f\u0082\u00c6\u00d7\\\u0081\u001d\u000c\'\u00b2\u00caO9\u00a51\u00e1\u009d\u00d4\u00d1\u00f2\u0002\u00e1\u0019yG\u00b7\u00fe\u00f3\u0096\u00cbT\u00c9\u0007\u00c0q\u0019\u0007\u0092\\\u00bc\u00ac]\u007f\u00bd\u00f8\u00eaD\u0089\u00f7/\u00ca\u001c\u0018\u00db\u009dC\u00ecb\u0085\u00de\u00fa\u00f2\u00165\u00fb>I\u00c9\u001e\u00c4d1)=\u008b\n\u0008Tn;jBM\u00da\u0092\u0000\u00f4\u00b1\u001a\u00fe(\u00fe\u0002\u00a9\u00c9\u0010B\u00bc\u00cc\u0099\u001f\u00d7h\u00d3\u00adO-\u0013\u00edx\u00d2\u0082Rg\nPv\u0091\u00fe\u008c\u00c4\u00f1\u00d5\u001a\u008d\u0017\u00c9\u0011\u00a1\u0012S=`\u0003j\u00ef}}\u00e8\u00c4\u001f\u00b2\u00b2\u008f*\u0013;v\u0091m\u001a\u009aO,\u00fc\u00ac\u00eb\u001e%\u0082m\u0008\u00b1\u00abnR\u00c8\u00cd\u00f5h\nM\u001e*\u00e2\u0085\u0003\u00d6w\u0086\u00d5\u00bc\u007f\u00b1\u00b9Za"
.line 2
.line 3
invoke-static {v0}, Lcom/google/android/gms/common/zzj;->zzf(Ljava/lang/String;)[B
.line 4
.line 5
.line 6
move-result-object v0
.line 7
return-object v0
.end method