[Android Software/Hacking General [Developers Only]] kikfox:
Tutorial / Tip

Source: https://github.com/REAndroid/APKEditor

This tool combines splitted apk files to single apk file.

1. Download pre-built jar file (or build your own) from latest release

2. Place all your splitted apk files in one directory "apk_files"

3. Run from your console

java -jar APKEditor.jar m -i "apk_files" -o "merged_app.apk"

4. Sign

View attachment 5789423

I tested this tool with tiktok xapk and here is the log :

$ java -jar APKEditor.jar m -i tiktok_27.02 -o tiktok_merged.apk
00.001 I: [MERGE] Merging ...
Input: tiktok_27.02
Output: tiktok_merged.apk
----------------------------
00.021 I: [MERGE] Searching apk files ...
00.024 I: [MERGE] Found apk files: 38
00.189 I: [MERGE] Found modules: 38
00.287 I: [MERGE] Merging: com.zhiliaoapp.musically
00.334 I: [MERGE] Added [com.zhiliaoapp.musically] classes.dex -> classes.dex
00.335 I: [MERGE] Added [com.zhiliaoapp.musically] classes2.dex -> classes2.dex
00.336 I: [MERGE] Added [com.zhiliaoapp.musically] classes3.dex -> classes3.dex
00.341 I: [MERGE] Merging resource table: com.zhiliaoapp.musically
05.663 [MERGE] Added: res/d/bzu.xml
05.664 I: [MERGE] Merging: df_oppo_push.config.vi
05.671 I: [MERGE] Merging resource table: df_oppo_push.config.vi
05.776 I: [MERGE] Merging: df_oppo_push.config.th
05.781 I: [MERGE] Merging resource table: df_oppo_push.config.th
05.824 I: [MERGE] Merging: config.arm64_v8a
05.868 [MERGE] ed: lib/arm64-v8a/libtailor.so
05.868 I: [MERGE] Merging: df_oppo_push.config.zh
05.888 I: [MERGE] Merging resource table: df_oppo_push.config.zh
05.934 I: [MERGE] Merging: df_oppo_push.config.es
05.943 I: [MERGE] Merging resource table: df_oppo_push.config.es
05.996 I: [MERGE] Merging: df_oppo_push.config.ar
06.004 I: [MERGE] Merging resource table: df_oppo_push.config.ar
06.055 I: [MERGE] Merging: df_oppo_push.config.it
06.063 I: [MERGE] Merging resource table: df_oppo_push.config.it
06.107 I: [MERGE] Merging: df_oppo_push.config.my
06.113 I: [MERGE] Merging resource table: df_oppo_push.config.my
06.165 I: [MERGE] Merging: df_oppo_push.config.en
06.171 I: [MERGE] Merging resource table: df_oppo_push.config.en
06.221 I: [MERGE] Merging: df_oppo_push.config.ru
06.226 I: [MERGE] Merging resource table: df_oppo_push.config.ru
06.280 I: [MERGE] Merging: config.ar
06.285 I: [MERGE] Merging resource table: config.ar
06.786 I: [MERGE] Merging: df_oppo_push.config.pt
06.789 I: [MERGE] Merging resource table: df_oppo_push.config.pt
06.856 I: [MERGE] Merging: config.vi
06.860 I: [MERGE] Merging resource table: config.vi
07.548 I: [MERGE] Merging: df_oppo_push.config.tr
07.554 I: [MERGE] Merging resource table: df_oppo_push.config.tr
07.695 I: [MERGE] Merging: config.my
07.701 I: [MERGE] Merging resource table: config.my
08.333 I: [MERGE] Merging: config.zh
08.336 I: [MERGE] Merging resource table: config.zh
09.365 I: [MERGE] Merging: config.es
09.368 I: [MERGE] Merging resource table: config.es
10.066 I: [MERGE] Merging: df_oppo_push.config.de
10.069 I: [MERGE] Merging resource table: df_oppo_push.config.de
10.163 I: [MERGE] Merging: df_oppo_push.config.hi
10.167 I: [MERGE] Merging resource table: df_oppo_push.config.hi
10.250 I: [MERGE] Merging: config.en
10.256 I: [MERGE] Merging resource table: config.en
10.363 I: [MERGE] Merging: df_oppo_push
10.367 I: [MERGE] Added [df_oppo_push] classes.dex -> classes15.dex
10.367 I: [MERGE] Merging resource table: df_oppo_push
10.472 I: [MERGE] Merging: config.it
10.475 I: [MERGE] Merging resource table: config.it
11.259 I: [MERGE] Merging: config.ko
11.263 I: [MERGE] Merging resource table: config.ko
17.141 I: [MERGE] Merging resource table: df_oppo_push.config.fr
49.991 I: [MERGE] Merging: config.xhdpi
50.939 I: [MERGE] Merging resource table: config.xhdpi
54.065 [MERGE] Added: res/p/r2.webp
54.065 I: [MERGE] Merging: config.pt
54.071 I: [MERGE] Merging resource table: config.pt
01:04.155 I: [MERGE] Sanitizing manifest ...
01:04.173 I: [MERGE] Removed: extractNativeLibs
01:04.178 I: [MERGE] Removed: isSplitRequired
01:04.179 I: [MERGE] Writing apk...
01:26.435 [MERGE] Writing: total=213504370 bytes : transport-runtime.properties
01:27.331 I: [MERGE] Saved to: tiktok_merged.apk
01:27.331 I: [MERGE] Done