soul-browser/sources/resources/res/xml/splits0.xml
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

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>