* 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>
38 lines
6.3 KiB
Smali
38 lines
6.3 KiB
Smali
.class final Lcom/google/android/gms/common/zzd;
|
|
.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\u0005\u00c80\u0082\u0003\u00b0\u00a0\u0003\u0002\u0001\u0002\u0002\u0014\u007f\u00a2f\u00fa\u00a7p\u0085xb\u00b1\u009c\u00b7\u00b7R\u00ecMV\u00bfy\u00d90\r\u0006\t*\u0086H\u0086\u00f7\r\u0001\u0001\u000b\u0005\u00000t1\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\u00100\u000e\u0006\u0003U\u0004\u0003\u0013\u0007Android0 \u0017\r240223201719Z\u0018\u000f20540223201719Z0t1\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\u00100\u000e\u0006\u0003U\u0004\u0003\u0013\u0007Android0\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\u00c9G\u00f7\u00dc.\u00fd_\u00a4\u000b\u00d4\u00fdL\u00ff\u00eb\u00eb}\u0087\u00bf\u00bf\u0004\u0014\u00de\u0096\u00be\u00f3\u009d3\u009c0S\u00df\u00fa[\u00cd\u00ff\u009c\u007f\u008e\u00dc\u000e\u00aaEF\u0019\u00f7\u00acP`\u0084\u00016&\u0092f\u00cd\u007f\u00d40\u0089r1\u00ad\u0019\u0095>?\u009a\u00ba;|\u00b3\tl\u00d7\u00d1\u0005\u0012\u00d2S\u00d0p\u00eb8\u0080N\u00a4\u00f4\u00ea\u00f7 \u0080\u0093\u00ed$\u00d5\u00fc\u009eh\u00d9\u00d3\u00ae\u00f50.\u00e3\"\u00d9[\u00f7\u0001\u00fa\u00a14\u00ed\u000f\u0002\u00dc0c\u00fc\u00c0\u00e6ABXM+_\u00deZ\u00a91p\u00ad\u00ce\u00c3\u00ffd\u0006PleXyD\u001b\u00b9\u00e9gv0W\u00bf\u00bd\u00ab\u0012\u00e0(\u00e5\u00f8\u0001jM\u00a5\u00bf\u0097AFr\u00a8\u0004\u00a7\u008ac\u00cc\u00c8a\u0004\u00ec\u00d6h\u0097D2\u00edVA6\u00cbR\u0005\u00bar\u0097\u00e6v\u00b7\u00f8\u0004`_\u009f\u0019\u009e\u0085\'\u0088$\u0090V\u00ffY\u00d3a\u009c%\u0083\u00cf\u008e\u00a9\u00a4\u00d6\u00c0\u00d3\u00d4&\u008b^\u0086\u00b1h\u0088\u0001`\u001e\u009e;\u00ba\u008f\u0095\u00a8\u00ec\u00c0\u00c5\u0010\u00c0@\u00ff\u008f\u00ef}\u00b5Z\u00bd\u0080\u0099?7\u008a\u00c3al\u0019\"!\u00ec\u00f6\u0018f\u00925\u00f2w-\u00b3\u00df\u001cch\u00fd\u00a9t#x\u0017\u00cf\u0094\u001c!SEo\u00be\u00df5\u00f3\rV\u00f9w\u00f8w\u00d4\u00f2\u00eb\u00ce\u001e\u0013\u00ef\u00a5\u00f1jy\u000eF\u0096\u00b7\u00f8\\\u00d4W\u009b\u000b\u00b6Eq\u0010\u0001\u00fa\u00a8o\u00a9ju3[2\u0097qi\u00cb\u009aM\u00f6\u00ee\u00f5q\u00bf=\u00ef<aF\u0006\u00fd\u00dc\u00d6\u00abIu\u00d4\u008c6A\u0091\u00cb\u00a2\u00a5\u00f8\u0085\u00e6\u00f7G\u00f3\u00c1\u00cd\u008a\u00d0\u00c3it2p\u00df\"\u00cf\u00bd\u0086\u001d\u0008\u0014\u00ef\u00ad\u00990kH$K\u00c6@^\u00d4{4{\u0096#\u0005\u0008K\u000c\u001c\u00e2D\u00cb\'\u00a1\u0085\u00f5\u00b5\u0011\u00f0\u00ae\u00abf\u0014\u0007\u00dbJ\u0005\u009a\u00d1\u00b6\u0010\u00bb\u0004\u00dc\u0094\r\u00b8\u00ad\u00fdz?m^\u0093\u00a9^\u00dc\u0091\u00a4\u001d]\rI\u001d\u001d\u00b6\u00f4\u00d8\t6\u009e\u00d11f\u00e5d\"\u00c78\u00d7\u00b1k\u0007Z\u00afN\u00f2\'IM\u00b3\u00b3\u009f\u00d3\u00e8V\u00c82W\u00bb162\u00d5rA\u00ba\u00b2\u0082\u00fb\u0086\u00fav.p\u00c4\u00f1E\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\u00d3\u0007\u0087\u00e7\u000bF\u0097i\u0002B4%z\u00f4\u0087\u00cd\u0001c\u0081\u00c30\u001f\u0006\u0003U\u001d#\u0004\u00180\u0016\u0080\u0014\u00d3\u0007\u0087\u00e7\u000bF\u0097i\u0002B4%z\u00f4\u0087\u00cd\u0001c\u0081\u00c30\r\u0006\t*\u0086H\u0086\u00f7\r\u0001\u0001\u000b\u0005\u0000\u0003\u0082\u0002\u0001\u0000\u0006\n\u00e4d\u00ba\u00f7w\u0095\u00f7\u00f9\u00ee\u0090P \u0085^\u009c\u00dc\u00f6\u00f7\u0015P\u0082\u00b2=x\u009dJ\u00a4h\u00be\u0011\r\u0005\u0097]5\u00f9\'k>i|\u009a\u00e3\u00ae\u00a5@o\u00cd\u0081\u00e6T\u0096j\u00abJ]\u00c8{\u0011\u00f6\u001c\u00b1Oz\u00f9\u00c0w\u0089\u00b6\u00f8\rl\tU\u00b5\u00bb\u00b2\u007fH\u0001\u00c0\u00fc\u00ac\u00c7l\u00ed\u00081\u00e3\u00eb\u00c2\u00ae\u00b8\u00a3@|\u000cO\u008d\u001b\u009b\u00cd\u009a\u0016>\u0093\u0097\u0016\u00de\u00b9\u001b\u00c5\u0097V\u00c0\u0090\u001c\u00f2\u0083o\u0013\u0001&\u00a0>\u00ad\u00dcF\u0095S\u00c2\u00d2\u00be\u00fb\u00f5D1 \"\u0081}\u00e6)\u001b\u00d7q7\u0094I\u0013Tn\u0091\u0097R\u008b!\u00e3\u0000`\u008a\u00c6\u008fW\u00ec\u0082~\u001b\u00c49\u00bb}\u0087\u00d6e\u00d1K$\u0004\u00bc\u00e9\u0008\u0013\u0099\u0010\u00d5|\u009d\u00c3\u00f4C1\u00ba\u00b3\u0098\u00fa\u0015\u00cf<\u008f\'p\u008c\u0019j\u009a/L%\u00fa \u007f\u00ef\u00a7m\u00ea\u00b7j\t\u00deG~\u00f4\u00d4\u00d18\u00df\u0084\u00a8\u00a5\u00c9X\u00f6:WZ\u00c8\u000f\u0098\no\u0015\u0014\u0095\u0095x\u0097\u000c\u00fc\u0091i\u00e3\u001d\u00d4#\u00013\u00c2\u009f\u0093b\u0015\u0097\u0003q\u00899kd\u00b9Me\u0092\u000e\u00a4R\u00e8\u00d2Q\u00a48\u008e\u00c0\u00e7\u00af\u008a,Z\u00b0!\u00fd\u00c652#_\u00be\u0080\u00e2\u001e\u00d2\u00b8A\u00e2\u008b\u0019\u0083\u00f2d!\u00ddXR\u00f2`5\u0003\u00f5\u000b;\u008fU\u00efW\u00ae)\u0011\u0000c I\u00ceQ\u00b0\\$;\u0006\u00d4S@t\u0018\u00f3\u00d0\u00cc\u00f7\u0017\u00ff\u00d8+E\u001e\u00faV74\u00c2\u0099k{\u00b8S\u00d7\u0013\n,\u00ce#\u00ea\u00f9\u00d6}r\u00d6\u00d5#\u0016h\u00d06\u0088\u0095\u00f9&\u00f9\u00a7rq\u00c0P\u0001\u0081\u00c4 \u00e4\u0091Aq\u00c3i\u0014\u00e2\u00db\u0016!\u0012MR\u00e2\u0098\u00afR\u00ef\u00ec~\u00c7.\u00b9\u0002\u00f8\u00a9\u00b0-\u001f\u00ba#Gq\u00d8\u00b1\u0002.\u00bal\u0084\u000e\u009b|\u0014\u00fe\u00e7[\u00b1\u00d6\u0014\u00b6\u001d\u00bb\u00151\u001b\u00aa\u001fo\u00aad5\u00b5:\u00b5\u0013\u00ef\u0086\u0017\u00dc.a\u0017\u00acM\u0090-~\n\u0006\u0018`@\u009c\u009c\u00a03>\u001f\u00dce\u00f8\u0087\u00ab\u00ac\u0007\u009b\u00b0C\u0083?\u00f1\u0082A\u009ft\u00ce\u00e2\u00a7%+C\u00f0\u000b"
|
|
|
|
.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
|