Kwandroid

The kwandroid command allows you to obtain the build specification file for an Android project (versions 10, 11, 12, 13, 14).

To generate a build specification for Android 9 or previous versions, run the following bash script:

#!/bin/bash
source build/envsetup.sh
lunch aosp_arm-eng
kwinject -o kwinject.out make

Usage

kwandroid --android-version <version> --output <output_file> --android <dir> --script <script_file> [optional arguments]
where
  • <version> specifies the version of Android (For example: 10, 11, 12, 13, or 14)
  • <output_file> specifies the name of the build specification file that is created
  • <dir> is the location of your Android working directory
  • <script_file> is the bash script used to run the Android build. For example:
    #!/bin/bash
    source build/envsetup.sh
    lunch aosp_arm-eng
    m
    
  • [optional arguments] are any additional options you may want to specify. See the 'Optional arguments' section below for more details.

kwandroid runs the Android build as defined in the specified <script_file>. It captures the build specification for java and stores it in the specified <output_file>. For example, you can use the following command to capture the build specification for an Android 11 project:

$<kw-intallation-dir>/bin/kwandroid --android-version 11 --output /tmp/kwinject.out --android /space/android-r --script /space/android-r-build.sh

The command above runs compilation for an Android-R project (android working directory is /space/android-r). The compilation command is defined in the /space/android-r-build.sh script file and the generated build specification is stored in the /tmp/kwinject.out file.

Options

Name (and short name) Description
--android-version <version> to specify the version of Android
--android <dir> location of your android working directory
--bazel supports analysis of Android Bazel builds
--output <file> the build specification <file> to create
--script <file> bash script to run Android build

Optional arguments

Name (and short name) Description
--trace-out <file> specify the trace file to create (default is 'trace.out')
--config <file> (-c) read filter configuration from a file (default is KW-HOME/config/kwfilter.conf)
--no-config do not read filter configuration from config file
--no-resolve do no resolve symbolic links
--prog PROG[=FILTER][,PROG[=FILTER]...] (-P) intercept execution of command PROG; use FILTER to handle options/arguments
--ignore-files PATTERN[,PATTERN...]

ignore C/C++ or Java source files matching one of the specified PATTERNs. Example of PATTERNS:

*/srcjars/android/Manifest.java,*/srcjars/android/R.java
*LockscreenShadeScrimTransitionController_Factory.java
/space/android/packages/apps/Gallery2/**/*.java
/space/android/packages/apps/Gallery2/**/LightCycleHelper.java
/space/android/packages/apps/Gallery2/src_pd/com/android/gallery3d/util/LightCycleHelper.java
*packages/apps/Gallery2/*/*.java
--white-dir <directory> allow input files from the specified directory, even if it is temporary
--exclude-prog PATTERN[,PATTERN...] do not handle programs matching one of the specified PATTERNs
--exclude-description PATTERN[,PATTERN...] do not handle a program if the description matches one of the specified PATTERNs
--cache-files PATTERN[,PATTERN...] (-C) save source files matching one of the specified PATTERNs; if any of these files is deleted during a build, it is restored
--cache-dir <directory> use specified cache directory to save source files (default is current working directory)
--variable VARIABLE=STRING (-V) replace every occurrence of STRING in the output file with reference to VARIABLE
--filter <file> (-F) read variables from the specified file
--lang LANGUAGE specify the language option to generate separate build specifications for C/C++ (cxx) and Java (java). Not declaring --lang assumes the default behavior, which traces both C/C++ and Java.