! Use at your own risk! The scripts and binaries are provided as-is and may contain bugs or errors. The author is not responsible for any damage or data loss caused by the use of these scripts.
! Take caution, check your version of Zeekr OS before installing any APKs.
The repo describes how to modify APKs for Zeekr OS (infotaimanet system from Zeekr 001/007, aka "the Tablet"), e.g. translating Chinese UI to English.
It includes:
- Decompiled sources of some of the original apps, e.g.
6.0.5/original/folder has the originals from the OS version 6.0.5 - Modified apps' sources,
6.0.5/modded/folder has the modified apps (translated to English) - Modified APKs,
6.0.5/modded_apks/folder has the APKs built from the modified sources - Scripts, docs, helpers and some binaries at the root of the repo
- Find one under the deisred frimwares/OS version folder (e.g. 6.0.5/modded_apks/)
- Use
adb install -g app.apkto install the APK (e.g.adb install -g 6.0.5/modded_apks/com.geely.pma.settings_en.apk)
| App | Version | APK | Description |
|---|---|---|---|
| Launcher with Yandex Navi | 6.7.0 | 6.7.0/modded_apks/XCLauncher3-670-yandex-signed.apk | Home screen with Yandex Navigator |
| Launcher with Yandex Navi | 6.3.3 | 6.3.3/modded_apks/XCLauncher3-633-yandex-signed.apk | Home screen with Yandex Navigator |
| Car Settings | 6.0.5 (Zeekr 007) | 6.0.5/modded_apks/com.geely.pma.settings_en.apk | Car Settings APP Translated to English |
| Bluetooth Phone | 6.0.5 (Zeekr 007) | 6.0.5/modded_apks/com.ecarx.btphone_en_signed.apk | Bluetooth Phone APP Translated to English |
P.S> Modded Yandex Navi with increaswed screen scale can be found here: https://github.com/maxim-saplin/ynavi-zee
If you want just to pick one of the ready-made APKs:
- Engineering menu enabled in the CAR (Zeekr 001/007 have brigth orange button at the top center of the screen, tap it 10 times)
- ADB set to 'Peripheral'
- Android Platform Tools (ADB)
If you wish to Mod an APK decompiling, changing and recompiling it, you will need:
- Engineering menu enabled in the CAR
- ADB set to 'Peripheral'
- Apktool
- !!! You migth need to manually install APK Tool 2.9.3 as some packages (e.g. systemui) can not be recompiled back via newer APKTool versions (e.g. 2.10.0)
- Install the most recent version on macOS:
brew install apktool - Other platforms: https://ibotpeaches.github.io/Apktool/install/
- Alternatively you can use GUI based tool APK Studio Editor which bundles APKTool
- Android Platform Tools (ADB)
- Android Build Tools (apksigner, zipalign)
- macOS versions from Android SDK are provided
- Python (Optional)
- Bash
- Git Bash on Windows
- Terminal on macOS
- git-lfs to be able to push large files to the repo
brew install git-lfs,git lfs installandgit lfs track "*.apk"on macOS
You can use the backup.bat on Windows or backup.sh on macOS to backup all the APKs from the car.
Some of the apps:
- com.android.systemui - Status bar at the top of the screen
- com.geely.pma.settings - Car Settings app
YOU MIGHT NEED THIS APKS if something goes wrong, just reinstall the APK from the backup.
apktool d _input/com.geely.pma.settings.apk -o 6.0.5/modded/com.geely.pma.settings_en
- res/values
- Check strings.xml, arrays.xml, plurals.xml
- Pay attention to encoding special chars in XML, e.g. use
\'for single quotes- E.g. when you get 'unescaped apostrophe in string' error from APKTool
- Use '[^\x00-\x7F]' RegEx to help find non-ASCII characters
- Use
validate_resources.pyscript to check that the modded resources are not broken and have exactly the same struture as the original one (i.e. you haven't deleted certain key)- E.g.
python validate_resources.py '/var/user/src/zeekr_apk_mod/6.0.5/modded/zeekr.bx.sentry/res/values' '/var/user/src/zeekr_apk_mod/6.0.5/original/zeekr.bx.sentry/res/values'
- E.g.
E.g. translating Launcher 3D View (with the model of the car in 3D)
On newer models (007, 001 Restyle) with Zeekr OS 6.x.x Android 12L is used. Some apps are treated as part of OS, reside at /systems-ext/priv-pp and they can not be easily updated using adb install or adb push (unlike Zeekrs OS 5.x.x which is based on Android 9 and the process is easier).
Zeekr OS is based on AOSP and uses test keys supplied by Google. I have included .JKS that is used to sign APK to ensure standard signatures are retained. This way apps can be updated inplace.
zsh build_apk.sh -inputFolder 6.0.5/modded/com.geely.pma.settings -outputFile _output/com.geely.pma.settingsi_en.apk (or use sh instead of zsh)
-
Output Directory Check: The script ensures that the directory for the output file exists and is empty. If the directory is not empty, it halts execution to prevent overwriting existing files.
-
APK Building: Using
apktool, the script compiles the source files in theinputFolderinto an APK file specified byoutputFile. This step is crucial for creating a functional APK from modified source files.Command:
apktool b "$inputFolder" -o "$outputFile" -
APK Alignment: The script uses
zipalignto optimize the APK file. Without this stage the system will not accept the APK.Command:
./zipalign -p 4 "$outputFile" "$alignedApk" -
APK Signing: Finally, the script signs the APK using
apksignerwith a bundled ASOP keystore (androiddebugkey.jks). This step is necessary to ensure the APK can be installed on the device replacing the original one.Command:
./apksigner sign \ --ks "$keystorePath" \ --ks-key-alias "$keyAlias" \ --ks-pass pass:"$keystorePassword" \ --key-pass pass:"$keystorePassword" \ --out "$signedApk" \ --v1-signing-enabled false \ --v2-signing-enabled true \ --v3-signing-enabled false \ "$alignedApk"
Installs signed APK:
adb install -g _output/com.android.systemui_en_signed.apk
- Some apps (com.android.systemui) can't be recompiled back via APK tool even if you don't change anything - you get private reource error (e.g. error: resource android:attr/colorSurfaceVariant is private).
- APK Studio Editor with APK Tool 2.9.3 seems to work just fine (decompiling and recompiling back systemui), I ued the most recent 2.10.0 version installed via brew, might try manual install of 2.9.3.
- Some apps are system apps and can't be updated using
adb installoradb push(com.android.systemui, come.ecarx.btphone_en_signed) on Android 12L/Zeekr OS 6.x.x. No resolution yet.
Code/APK contributions are welcome. File a PR, describe in details what you would like to add, share screenshots/videos of the tested app (if you submit a modifed APK)
