* 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>
232 lines
6 KiB
XML
232 lines
6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<splits>
|
|
<module name="">
|
|
<language>
|
|
<entry
|
|
key="af"
|
|
split="config.af"/>
|
|
<entry
|
|
key="am"
|
|
split="config.am"/>
|
|
<entry
|
|
key="ar"
|
|
split="config.ar"/>
|
|
<entry
|
|
key="as"
|
|
split="config.as"/>
|
|
<entry
|
|
key="az"
|
|
split="config.az"/>
|
|
<entry
|
|
key="be"
|
|
split="config.be"/>
|
|
<entry
|
|
key="bg"
|
|
split="config.bg"/>
|
|
<entry
|
|
key="bn"
|
|
split="config.bn"/>
|
|
<entry
|
|
key="bs"
|
|
split="config.bs"/>
|
|
<entry
|
|
key="ca"
|
|
split="config.ca"/>
|
|
<entry
|
|
key="cs"
|
|
split="config.cs"/>
|
|
<entry
|
|
key="da"
|
|
split="config.da"/>
|
|
<entry
|
|
key="de"
|
|
split="config.de"/>
|
|
<entry
|
|
key="el"
|
|
split="config.el"/>
|
|
<entry
|
|
key="en"
|
|
split="config.en"/>
|
|
<entry
|
|
key="es"
|
|
split="config.es"/>
|
|
<entry
|
|
key="et"
|
|
split="config.et"/>
|
|
<entry
|
|
key="eu"
|
|
split="config.eu"/>
|
|
<entry
|
|
key="fa"
|
|
split="config.fa"/>
|
|
<entry
|
|
key="fi"
|
|
split="config.fi"/>
|
|
<entry
|
|
key="fr"
|
|
split="config.fr"/>
|
|
<entry
|
|
key="gl"
|
|
split="config.gl"/>
|
|
<entry
|
|
key="gu"
|
|
split="config.gu"/>
|
|
<entry
|
|
key="hi"
|
|
split="config.hi"/>
|
|
<entry
|
|
key="hr"
|
|
split="config.hr"/>
|
|
<entry
|
|
key="hu"
|
|
split="config.hu"/>
|
|
<entry
|
|
key="hy"
|
|
split="config.hy"/>
|
|
<entry
|
|
key="in"
|
|
split="config.in"/>
|
|
<entry
|
|
key="is"
|
|
split="config.is"/>
|
|
<entry
|
|
key="it"
|
|
split="config.it"/>
|
|
<entry
|
|
key="iw"
|
|
split="config.iw"/>
|
|
<entry
|
|
key="ja"
|
|
split="config.ja"/>
|
|
<entry
|
|
key="ka"
|
|
split="config.ka"/>
|
|
<entry
|
|
key="kk"
|
|
split="config.kk"/>
|
|
<entry
|
|
key="km"
|
|
split="config.km"/>
|
|
<entry
|
|
key="kn"
|
|
split="config.kn"/>
|
|
<entry
|
|
key="ko"
|
|
split="config.ko"/>
|
|
<entry
|
|
key="ky"
|
|
split="config.ky"/>
|
|
<entry
|
|
key="lo"
|
|
split="config.lo"/>
|
|
<entry
|
|
key="lt"
|
|
split="config.lt"/>
|
|
<entry
|
|
key="lv"
|
|
split="config.lv"/>
|
|
<entry
|
|
key="mk"
|
|
split="config.mk"/>
|
|
<entry
|
|
key="ml"
|
|
split="config.ml"/>
|
|
<entry
|
|
key="mn"
|
|
split="config.mn"/>
|
|
<entry
|
|
key="mr"
|
|
split="config.mr"/>
|
|
<entry
|
|
key="ms"
|
|
split="config.ms"/>
|
|
<entry
|
|
key="my"
|
|
split="config.my"/>
|
|
<entry
|
|
key="nb"
|
|
split="config.nb"/>
|
|
<entry
|
|
key="ne"
|
|
split="config.ne"/>
|
|
<entry
|
|
key="nl"
|
|
split="config.nl"/>
|
|
<entry
|
|
key="or"
|
|
split="config.or"/>
|
|
<entry
|
|
key="pa"
|
|
split="config.pa"/>
|
|
<entry
|
|
key="pl"
|
|
split="config.pl"/>
|
|
<entry
|
|
key="pt"
|
|
split="config.pt"/>
|
|
<entry
|
|
key="ro"
|
|
split="config.ro"/>
|
|
<entry
|
|
key="ru"
|
|
split="config.ru"/>
|
|
<entry
|
|
key="sat"
|
|
split="config.sat"/>
|
|
<entry
|
|
key="si"
|
|
split="config.si"/>
|
|
<entry
|
|
key="sk"
|
|
split="config.sk"/>
|
|
<entry
|
|
key="sl"
|
|
split="config.sl"/>
|
|
<entry
|
|
key="sq"
|
|
split="config.sq"/>
|
|
<entry
|
|
key="sr"
|
|
split="config.sr"/>
|
|
<entry
|
|
key="sv"
|
|
split="config.sv"/>
|
|
<entry
|
|
key="sw"
|
|
split="config.sw"/>
|
|
<entry
|
|
key="ta"
|
|
split="config.ta"/>
|
|
<entry
|
|
key="te"
|
|
split="config.te"/>
|
|
<entry
|
|
key="th"
|
|
split="config.th"/>
|
|
<entry
|
|
key="tl"
|
|
split="config.tl"/>
|
|
<entry
|
|
key="tr"
|
|
split="config.tr"/>
|
|
<entry
|
|
key="uk"
|
|
split="config.uk"/>
|
|
<entry
|
|
key="ur"
|
|
split="config.ur"/>
|
|
<entry
|
|
key="uz"
|
|
split="config.uz"/>
|
|
<entry
|
|
key="vi"
|
|
split="config.vi"/>
|
|
<entry
|
|
key="zh"
|
|
split="config.zh"/>
|
|
<entry
|
|
key="zu"
|
|
split="config.zu"/>
|
|
</language>
|
|
</module>
|
|
</splits>
|