Uploaded image for project: 'Titanium SDK/CLI'
  1. Titanium SDK/CLI
  2. TIMOB-25240

Android: Improve incremental build times


    • Story Points:
    • Sprint:
      2019 Sprint 26


      While working on TIMOB-24829 i noticed a few more things in the android build that can be improved, resulting in a faster build time on incremental builds.

      Compared to the iOS build, which only takes ~5s for incremental builds, the Android build is much slower with ~30-40 sek. Most of the time is spend on recompiling and dexer operations, which are unnecessary if nothing related changed.

      The Android builder already contains a lot of comments about what can be skipped or cached, but contains no actual code that would do that. The actions in particular are:

      • Compile java classes (only needs to be done when files in build/android/src or build/android/gen change
      • Run Proguard (only needs to be done when any java classes changed)
      • Run dexer (only needs to be done if any libraries changed, any files in build/android/bin/classes have changed or debugging/profiling was toggled. This alone will cut down the android build time by approximately one third.

      Final Result:
      Below are the performance improvements between Titanium 8.3.0 and 9.0.0 with kitchensink-v2 on a 15" MacBook Pro 2015 with a solid state drive.

      Non-encrypted emulator builds:
      - Clean Build: 52s -> 20s  (2.6x faster)
      - Incremental: 18s -> 7s   (2.6x faster)
      Encrypted device/production builds:
      - Clean Build: 53s -> 21s  (2.5x faster)
      - Incremental: 50s -> 14s  (3.6x faster)
      - Benchmarks exclude gradle daemon startup of ~5s which is a one time hit.
      - Titanium did not support encrypted incremental builds before. This is new.


          Issue Links



              • Assignee:
                jquick Joshua Quick
                jvennemann Jan Vennemann
                Gary Mathews
              • Watchers:
                15 Start watching this issue


                • Created:

                  Backbone Issue Sync

                  • Backbone Issue Sync is enabled for your project, but we do not have any synchronization info for this issue.

                    Git Integration