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

CLI: "build" command for Android apps

    Details

    • Story Points:
      8

      Description

      Port the Python-based Android builder.py to Node.js. Portions of this has already been completed.

      Build Process

      • Validate command line arguments and tiapp.xml settings (TIMOB-14973)
      • fire "build.pre.construct" event
      • create Builder object
      • fire "build.pre.compile" event
      • Detect if need to force rebuild (TIMOB-14974)
      • Init the build/android directory and files (TIMOB-14976)
      • if not --build-only
        • make sure adb server is running (adb lib does this for us)
        • wait for the emulator/device to boot
        • detect if app is already installed (adb lib does this for us)
      • Compile resources (TIMOB-14977)
      • determine Google APIs are required (true unless not build only and building for emulator running non-Google API AVD)
      • if building for emulator and using Ti.Map.MapView, make sure the emulator is running Google APIs (TIMOB-5438 Compiler Warning When Using Maps with Non-Google APIs SDK) (TIMOB-6860 Tooling: Android build process requires "Google APIs" even if "Ti.Map.createView" only occurs in comments)
      • generate build/android/bin/assets/index.json with contents of build/android/bin/assets
      • generate jss stylesheet => build/android/gen/<split app id>/ApplicationStylesheet.java
      • generate aidl
      • process build/android/res/*.xml for all i18n strings
        • support app.xml to localize app name (TIMOB-2824 Android: App name localization)
      • handle splash screen
      • generate build/android/res/values/theme.xml
      • Create android.manifest (TIMOB-14978)
      • remove duplicate res in xml files???
      • if not --build-only and not package build, push deploy.json to emulator/device
        • wait for sdcard
          • gracefully handle timeouts (TIMOB-11827 Android: Installing an app to Android with 4.2 version takes long time)
      • Package and sign app (TIMOB-14980)
      • fire "build.post.compile" event
      • fire "build.finalize" event

      Hooks


      Misc

      • logcat
      • wait for emulator
      • delete unused support/android/templates/AppUserData.java
      • when subprocessing Java-based tools (android, etc), override "_JAVA_OPTIONS" environment variable (TIMOB-14322 CLI: Setting _JAVA_OPTIONS global variable breaks building of project)
      • convert default "dark" splash screen to a red-based one (TIMOB-4517 Android: default.png file is a gray image, should be the red default image)
      • TIMOB-11120 Android: Expose a way for users to exclude js files from being encrypted
      • TIMOB-339 Android: Missing Icons
      • TIMOB-13311 Android: CLI: possibility to build apk for beta release (like ios adhoc) (should be resolved with build profiles)
      • remove dependency on old Android SDKs (TIMOB-13983 Android: Titanium should use the latest stable Android SDK and NDK and not depend on 2.2 API 8)

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                cbarber Chris Barber
                Reporter:
                stephentramer Stephen Tramer
              • Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Git Source Code