logo

Andrei Zhukouski

App icon

jbart

Current version: 20201102.01 (11 Nov 2020)

Crossplatform application for Android ROM developers.

  • Edit and translate any Android rom
  • Flexible .smali, .xml, .prop patches
  • Fast resources.arsc patching (without using apktool)
  • Incremental OTA update packages based on two roms
  • Parse ROM translations to get untranslated resources
  • Deodex roms using smali/baksmali
  • Supports Android roms archives in CWM format (up to Android R)

Download links

Features

  • Crossplatform (Win, Linux, macOS)
  • Rom translation (you need translation files)
  • Single apk/jar translation
  • Parse translations (get untranslated resources)
  • Flexible patches for smali, prop and xml
  • Translated into many languages
  • Rom deodex
  • Sign zip, apk, jar files
  • Create OTA package
  • Hex mode (direct resources.arsc patching)
  • GUI and CLI user interface
  • More features coming...

jbart is crossplatform tool intended to help rom developers in translating and patching Android rom files. Current version supports only roms created in CWM recovery format - zip archive with system, framework, vendor, and other directories inside along with boot.img and another files.

So roms packed with brotli and ext4 (files system.new.dat, system.new.dat.br, etc.) currently not supported.

Screenshots

Slide 1 of 6

Help with app localization

App translation

Download xml assets to to help me in translating the application into your language.

Download files, translate English strings

Send translated files back to me

Changelog

20201102.01

11 Nov 2020

  • Added option to set Android version for single files processing (sometimes apktool writes default dex 035 to classes files, but this file may come from Android 11 with dex 039). It will write correspondig correct dex version to all classes files.

20201014.01

14 Oct 2020

  • Updated UI design
  • Added support to point .prop file to patch (propfile ;)
  • replaceinsmali now searches in all smali directories (smali, smali_classes2, …, smali_classes87 and so on)
  • In alt_rom_name.conf added support for ....+md5+… - as a result output ROM file name will contain 10 symbols of its md5
  • Hex: Added support for 440dpi resource directories
  • Hex: arrays.xml - replace default values from translation instead of keeping original values
  • Decompiler: added possibility to turn on and off 'debug-info' in smali for single file processing
  • Added option to automatically select apktool version to use based on android version (rom processing, not works for single file). It needs config file at settings directory with name rom.apktool.versions.conf with the following content: apktool_2.0.0.jar=6.0 (each such string from the new line)
  • Patcher: fixed directory removing by 'move' patch in case if destination directory for this patch does not exists
  • Added rom translation primary mode switch (with two modes: apktool and hex). In apktool mode jbart preffers to translate apk files using selected apktool.jar, and use hex only for those, which are set at the hex.filelist.conf config file. In hex mode jbart preffers to translate apk files using internal hex engine, and use apktool only for those files, which are listed in the apktool.filelist.conf file. These config files (hex.filelist.conf and apktool.filelist.conf) are located at the data/settings directory (will be moved to the translation repository directory soon)
  • Added 'apkinjector' command line option to use single file translation with apk injector (hex mode)
  • Hex: Added -night- (-notnight-) resources support
  • Hex: Added support for replacing original reference type values (@string/xxx, for example) by translation items
  • Hex: Allow to add more array items than in default translation
  • Added new patch for replacing hex strings in files (all files are presented as binary hex files). Example patch:
    hexreplace '%rom%/firmware-update/dtbo.img' '776169742C617662' '7761697400000000';
  • Hex: Added support for -land, -port and -square orientation resources
  • Added support for Android Q build.prop keys for device and rom info (ro.system.build.version.release, ro.product.system.device, etc.)
  • Added zipalign tool (embedded into .jar file) - on Android 11+ (SDK 30+) all apk files should be aligned with 4-byte boundary