19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Copyright 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Android Asset Packaging Tool main entry point. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "Main.h" 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "Bundle.h" 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 93b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Log.h> 103b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/threads.h> 113b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/List.h> 123b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Errors.h> 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdlib.h> 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <getopt.h> 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <assert.h> 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectusing namespace android; 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic const char* gProgName = "aapt"; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * When running under Cygwin on Windows, this will convert slash-based 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * paths into back-slash-based ones. Otherwise the ApptAssets file comparisons 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * fail later as they use back-slash separators under Windows. 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This operates in-place on the path string. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid convertPath(char *path) { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (path != NULL && OS_PATH_SEPARATOR != '/') { 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (; *path; path++) { 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (*path == '/') { 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *path = OS_PATH_SEPARATOR; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Print usage info. 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid usage(void) 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "Android Asset Packaging Tool\n\n"); 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "Usage:\n"); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " %s l[ist] [-v] [-a] file.{zip,jar,apk}\n" 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " List contents of Zip-compatible archive.\n\n", gProgName); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, 50e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn " %s d[ump] [--values] WHAT file.{apk} [asset [asset ...]]\n" 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " badging Print the label and icon for the app declared in APK.\n" 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " permissions Print the permissions from the APK.\n" 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " resources Print the resource table from the APK.\n" 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " configurations Print the configurations in the APK.\n" 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " xmltree Print the compiled xmls in the given assets.\n" 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " xmlstrings Print the strings of the given compiled xml assets.\n\n", gProgName); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " %s p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \\\n" 5962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \\\n" 606487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet " [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \\\n" 61ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \\\n" 62ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " [--rename-manifest-package PACKAGE] \\\n" 63ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " [--rename-instrumentation-target-package PACKAGE] \\\n" 64ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " [--utf16] [--auto-add-overlay] \\\n" 65588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick " [--max-res-version VAL] \\\n" 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " [-I base-package [-I base-package ...]] \\\n" 671553c82e084ac5763fb393857224145506771b99Joe Onorato " [-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] \\\n" 68e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn " [-S resource-sources [-S resource-sources ...]] \\\n" 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " [-F apk-file] [-J R-file-dir] \\\n" 7090964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer " [--product product1,product2,...] \\\n" 71e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn " [-c CONFIGS] [--preferred-configurations CONFIGS] \\\n" 72f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet " [raw-files-dir [raw-files-dir] ...] \\\n" 73f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet " [--output-text-symbols DIR]\n" 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "\n" 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " Package the android resources. It will read assets and resources that are\n" 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " supplied with the -M -A -S or raw-files-dir arguments. The -J -P -F and -R\n" 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " options control which files are output.\n\n" 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project , gProgName); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " %s r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]\n" 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " Delete specified files from Zip-compatible archive.\n\n", 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gProgName); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " %s a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]\n" 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " Add specified files to Zip-compatible archive.\n\n", gProgName); 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, 878a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin " %s c[runch] [-v] -S resource-sources ... -C output-folder ...\n" 8822d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet " Do PNG preprocessing on one or several resource folders\n" 8922d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet " and store the results in the output folder.\n\n", gProgName); 9022d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet fprintf(stderr, 9122d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet " %s s[ingleCrunch] [-v] -i input-file -o outputfile\n" 9222d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet " Do PNG preprocessing on a single file.\n\n", gProgName); 938a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin fprintf(stderr, 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " %s v[ersion]\n" 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " Print program version.\n\n", gProgName); 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " Modifiers:\n" 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -a print Android-specific data (resources, manifest) when listing\n" 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -c specify which configurations to include. The default is all\n" 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " configurations. The value of the parameter should be a comma\n" 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " separated list of configuration values. Locales should be specified\n" 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " as either a language or language-region pair. Some examples:\n" 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " en\n" 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " port,en\n" 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " port,land,en_US\n" 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " If you put the special locale, zz_ZZ on the list, it will perform\n" 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " pseudolocalization on the default locale, modifying all of the\n" 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " strings so you can look for strings that missed the\n" 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " internationalization process. For example:\n" 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " port,land,zz_ZZ\n" 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -d one or more device assets to include, separated by commas\n" 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -f force overwrite of existing files\n" 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -g specify a pixel tolerance to force images to grayscale, default 0\n" 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -j specify a jar or zip file containing classes to include\n" 115dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker " -k junk path of file(s) added\n" 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -m make package directories under location specified by -J\n" 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -p pseudolocalize the default configuration\n" 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -u update existing packages (add new, replace older, remove deleted files)\n" 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -v verbose output\n" 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -x create extending (non-application) resource IDs\n" 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -z require localization of resource attributes marked with\n" 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " localization=\"suggested\"\n" 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -A additional directory in which to find raw asset files\n" 1261553c82e084ac5763fb393857224145506771b99Joe Onorato " -G A file to output proguard options into.\n" 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -F specify the apk file to output\n" 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -I add an existing package to base include set\n" 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -J specify where to output R.java resource constant definitions\n" 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -M specify full path to AndroidManifest.xml to include in zip\n" 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -P specify where to output public resource definitions\n" 13263459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet " -S directory in which to find resources. Multiple directories will be scanned\n" 13363459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet " and the first match found (left to right) will take precedence.\n" 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " -0 specifies an additional extension for which such files will not\n" 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " be stored compressed in the .apk. An empty string means to not\n" 13662da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " compress any files at all.\n" 1376487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet " --debug-mode\n" 1386487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet " inserts android:debuggable=\"true\" in to the application node of the\n" 1396487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet " manifest, making the application debuggable even on production devices.\n" 14062da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " --min-sdk-version\n" 141745e17a07c77aa6b347d9e75c99eb3fcb381bc5dKenny Root " inserts android:minSdkVersion in to manifest. If the version is 7 or\n" 142745e17a07c77aa6b347d9e75c99eb3fcb381bc5dKenny Root " higher, the default encoding for resources will be in UTF-8.\n" 14362da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " --target-sdk-version\n" 14462da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " inserts android:targetSdkVersion in to manifest.\n" 145588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick " --max-res-version\n" 146588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick " ignores versioned resource directories above the given value.\n" 147e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn " --values\n" 148e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn " when used with \"dump resources\" also includes resource values.\n" 14962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " --version-code\n" 15062da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " inserts android:versionCode in to manifest.\n" 15162da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn " --version-name\n" 15263459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet " inserts android:versionName in to manifest.\n" 15363459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet " --custom-package\n" 154745e17a07c77aa6b347d9e75c99eb3fcb381bc5dKenny Root " generates R.java into a different package.\n" 155ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin " --extra-packages\n" 1569bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin " generate R.java for libraries. Separate libraries with ':'.\n" 1579bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin " --generate-dependencies\n" 15803589cc65355220e0a4a0c816189a9fa25cc81fcJosiah Gaskin " generate dependency files in the same directories for R.java and resource package\n" 15999080c7d9ad9e5ccfec70dd10e4c24468a960c45Xavier Ducrohet " --auto-add-overlay\n" 16099080c7d9ad9e5ccfec70dd10e4c24468a960c45Xavier Ducrohet " Automatically add resources that are only in overlays.\n" 161e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn " --preferred-configurations\n" 162e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn " Like the -c option for filtering out unneeded configurations, but\n" 163e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn " only expresses a preference. If there is no resource available with\n" 164e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn " the preferred configuration then it will not be stripped.\n" 165ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " --rename-manifest-package\n" 166ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " Rewrite the manifest so that its package name is the package name\n" 167ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " given here. Relative class names (for example .Foo) will be\n" 168ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " changed to absolute names with the old package so that the code\n" 169ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " does not need to change.\n" 170ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " --rename-instrumentation-target-package\n" 171ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " Rewrite the manifest so that all of its instrumentation\n" 172ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " components target the given package. Useful when used in\n" 173ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " conjunction with --rename-manifest-package to fix tests against\n" 174ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn " a package that has been renamed.\n" 17590964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer " --product\n" 17690964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer " Specifies which variant to choose for strings that have\n" 17790964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer " product variants\n" 178745e17a07c77aa6b347d9e75c99eb3fcb381bc5dKenny Root " --utf16\n" 179745e17a07c77aa6b347d9e75c99eb3fcb381bc5dKenny Root " changes default encoding for resources to UTF-16. Only useful when API\n" 180d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet " level is set to 7 or higher where the default encoding is UTF-8.\n" 181d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet " --non-constant-id\n" 182d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet " Make the resources ID non constant. This is required to make an R java class\n" 183d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet " that does not contain the final value but is used to make reusable compiled\n" 18490897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll " libraries that need to access resources.\n" 1857714a2429b192c88e134ff67b969121bbaeb5457Xavier Ducrohet " --error-on-failed-insert\n" 1867714a2429b192c88e134ff67b969121bbaeb5457Xavier Ducrohet " Forces aapt to return an error if it fails to insert values into the manifest\n" 1877714a2429b192c88e134ff67b969121bbaeb5457Xavier Ducrohet " with --debug-mode, --min-sdk-version, --target-sdk-version --version-code\n" 1887714a2429b192c88e134ff67b969121bbaeb5457Xavier Ducrohet " and --version-name.\n" 1897714a2429b192c88e134ff67b969121bbaeb5457Xavier Ducrohet " Insertion typically fails if the manifest already defines the attribute.\n" 190f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet " --output-text-symbols\n" 191f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet " Generates a text file containing the resource symbols of the R class in the\n" 192f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet " specified folder.\n" 19390897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll " --ignore-assets\n" 19490897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll " Assets to be ignored. Default pattern is:\n" 19590897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll " %s\n", 19690897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll gDefaultIgnoreAssets); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Dispatch the command. 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint handleCommand(Bundle* bundle) 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //printf("--- command %d (verbose=%d force=%d):\n", 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // bundle->getCommand(), bundle->getVerbose(), bundle->getForce()); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //for (int i = 0; i < bundle->getFileSpecCount(); i++) 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // printf(" %d: '%s'\n", i, bundle->getFileSpecEntry(i)); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (bundle->getCommand()) { 21022d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandVersion: return doVersion(bundle); 21122d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandList: return doList(bundle); 21222d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandDump: return doDump(bundle); 21322d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandAdd: return doAdd(bundle); 21422d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandRemove: return doRemove(bundle); 21522d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandPackage: return doPackage(bundle); 21622d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandCrunch: return doCrunch(bundle); 21722d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case kCommandSingleCrunch: return doSingleCrunch(bundle); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "%s: requested command not yet supported\n", gProgName); 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Parse args. 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint main(int argc, char* const argv[]) 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char *prog = argv[0]; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle bundle; 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool wantUsage = false; 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int result = 1; // pessimistically assume an error. 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int tolerance = 0; 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* default to compression */ 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCompressionMethod(ZipEntry::kCompressDeflated); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (argc < 2) { 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (argv[1][0] == 'v') 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCommand(kCommandVersion); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else if (argv[1][0] == 'd') 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCommand(kCommandDump); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else if (argv[1][0] == 'l') 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCommand(kCommandList); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else if (argv[1][0] == 'a') 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCommand(kCommandAdd); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else if (argv[1][0] == 'r') 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCommand(kCommandRemove); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else if (argv[1][0] == 'p') 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCommand(kCommandPackage); 2558a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin else if (argv[1][0] == 'c') 2568a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin bundle.setCommand(kCommandCrunch); 25722d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet else if (argv[1][0] == 's') 25822d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet bundle.setCommand(kCommandSingleCrunch); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project else { 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: Unknown command '%s'\n", argv[1]); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc -= 2; 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv += 2; 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Pull out flags. We support "-fv" and "-f -v". 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (argc && argv[0][0] == '-') { 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* flag(s) found */ 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* cp = argv[0] +1; 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (*cp != '\0') { 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (*cp) { 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'v': 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setVerbose(true); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'a': 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setAndroidList(true); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'c': 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-c' option\n"); 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.addConfigurations(argv[0]); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'f': 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setForce(true); 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'g': 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-g' option\n"); 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project tolerance = atoi(argv[0]); 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setGrayscaleTolerance(tolerance); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("%s: Images with deviation <= %d will be forced to grayscale.\n", prog, tolerance); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 307dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker case 'k': 308dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker bundle.setJunkPath(true); 309dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker break; 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'm': 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setMakePackageDirs(true); 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'p': 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setPseudolocalize(true); 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'u': 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setUpdate(true); 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'x': 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setExtending(true); 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'z': 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setRequireLocalization(true); 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'j': 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-j' option\n"); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.addJarFile(argv[0]); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'A': 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-A' option\n"); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setAssetSourceDir(argv[0]); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3491553c82e084ac5763fb393857224145506771b99Joe Onorato case 'G': 3501553c82e084ac5763fb393857224145506771b99Joe Onorato argc--; 3511553c82e084ac5763fb393857224145506771b99Joe Onorato argv++; 3521553c82e084ac5763fb393857224145506771b99Joe Onorato if (!argc) { 3531553c82e084ac5763fb393857224145506771b99Joe Onorato fprintf(stderr, "ERROR: No argument supplied for '-G' option\n"); 3541553c82e084ac5763fb393857224145506771b99Joe Onorato wantUsage = true; 3551553c82e084ac5763fb393857224145506771b99Joe Onorato goto bail; 3561553c82e084ac5763fb393857224145506771b99Joe Onorato } 3571553c82e084ac5763fb393857224145506771b99Joe Onorato convertPath(argv[0]); 3581553c82e084ac5763fb393857224145506771b99Joe Onorato bundle.setProguardFile(argv[0]); 3591553c82e084ac5763fb393857224145506771b99Joe Onorato break; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'I': 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-I' option\n"); 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.addPackageInclude(argv[0]); 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'F': 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-F' option\n"); 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setOutputAPKFile(argv[0]); 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'J': 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-J' option\n"); 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setRClassDir(argv[0]); 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'M': 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-M' option\n"); 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setAndroidManifestFile(argv[0]); 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'P': 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-P' option\n"); 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setPublicOutputFile(argv[0]); 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case 'S': 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-S' option\n"); 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project convertPath(argv[0]); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.addResourceSourceDir(argv[0]); 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 4268a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin case 'C': 4278a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin argc--; 4288a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin argv++; 4298a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin if (!argc) { 4308a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin fprintf(stderr, "ERROR: No argument supplied for '-C' option\n"); 4318a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin wantUsage = true; 4328a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin goto bail; 4338a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin } 4348a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin convertPath(argv[0]); 4358a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin bundle.setCrunchedOutputDir(argv[0]); 4368a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin break; 43722d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case 'i': 43822d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet argc--; 43922d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet argv++; 44022d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet if (!argc) { 44122d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet fprintf(stderr, "ERROR: No argument supplied for '-i' option\n"); 44222d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet wantUsage = true; 44322d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet goto bail; 44422d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet } 44522d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet convertPath(argv[0]); 44622d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet bundle.setSingleCrunchInputFile(argv[0]); 44722d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet break; 44822d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet case 'o': 44922d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet argc--; 45022d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet argv++; 45122d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet if (!argc) { 45222d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet fprintf(stderr, "ERROR: No argument supplied for '-o' option\n"); 45322d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet wantUsage = true; 45422d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet goto bail; 45522d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet } 45622d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet convertPath(argv[0]); 45722d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet bundle.setSingleCrunchOutputFile(argv[0]); 45822d7cf239d8a9b009ea7adf86d8826a8a8116d03Xavier Ducrohet break; 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case '0': 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!argc) { 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: No argument supplied for '-e' option\n"); 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (argv[0][0] != 0) { 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.addNoCompressExtension(argv[0]); 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setCompressionMethod(ZipEntry::kCompressStored); 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 47362da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn case '-': 4746487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet if (strcmp(cp, "-debug-mode") == 0) { 4756487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet bundle.setDebugMode(true); 4766487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet } else if (strcmp(cp, "-min-sdk-version") == 0) { 47762da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argc--; 47862da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argv++; 47962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn if (!argc) { 48062da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn fprintf(stderr, "ERROR: No argument supplied for '--min-sdk-version' option\n"); 48162da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn wantUsage = true; 48262da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn goto bail; 48362da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } 48462da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn bundle.setMinSdkVersion(argv[0]); 48562da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } else if (strcmp(cp, "-target-sdk-version") == 0) { 48662da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argc--; 48762da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argv++; 48862da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn if (!argc) { 48962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn fprintf(stderr, "ERROR: No argument supplied for '--target-sdk-version' option\n"); 49062da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn wantUsage = true; 49162da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn goto bail; 49262da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } 49362da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn bundle.setTargetSdkVersion(argv[0]); 49462da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } else if (strcmp(cp, "-max-sdk-version") == 0) { 49562da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argc--; 49662da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argv++; 49762da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn if (!argc) { 49862da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn fprintf(stderr, "ERROR: No argument supplied for '--max-sdk-version' option\n"); 49962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn wantUsage = true; 50062da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn goto bail; 50162da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } 50262da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn bundle.setMaxSdkVersion(argv[0]); 503588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick } else if (strcmp(cp, "-max-res-version") == 0) { 504588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick argc--; 505588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick argv++; 506588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick if (!argc) { 507588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick fprintf(stderr, "ERROR: No argument supplied for '--max-res-version' option\n"); 508588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick wantUsage = true; 509588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick goto bail; 510588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick } 511588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick bundle.setMaxResVersion(argv[0]); 51262da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } else if (strcmp(cp, "-version-code") == 0) { 51362da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argc--; 51462da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argv++; 51562da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn if (!argc) { 51662da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn fprintf(stderr, "ERROR: No argument supplied for '--version-code' option\n"); 51762da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn wantUsage = true; 51862da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn goto bail; 51962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } 52062da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn bundle.setVersionCode(argv[0]); 52162da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } else if (strcmp(cp, "-version-name") == 0) { 52262da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argc--; 52362da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn argv++; 52462da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn if (!argc) { 52562da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn fprintf(stderr, "ERROR: No argument supplied for '--version-name' option\n"); 52662da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn wantUsage = true; 52762da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn goto bail; 52862da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } 52962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn bundle.setVersionName(argv[0]); 530e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn } else if (strcmp(cp, "-values") == 0) { 531e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn bundle.setValues(true); 53263459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet } else if (strcmp(cp, "-custom-package") == 0) { 53363459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet argc--; 53463459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet argv++; 53563459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet if (!argc) { 53663459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet fprintf(stderr, "ERROR: No argument supplied for '--custom-package' option\n"); 53763459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet wantUsage = true; 53863459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet goto bail; 53963459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet } 54063459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet bundle.setCustomPackage(argv[0]); 541ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin } else if (strcmp(cp, "-extra-packages") == 0) { 542ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin argc--; 543ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin argv++; 544ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin if (!argc) { 545ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin fprintf(stderr, "ERROR: No argument supplied for '--extra-packages' option\n"); 546ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin wantUsage = true; 547ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin goto bail; 548ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin } 549ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin bundle.setExtraPackages(argv[0]); 5509bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin } else if (strcmp(cp, "-generate-dependencies") == 0) { 5519bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin bundle.setGenDependencies(true); 552745e17a07c77aa6b347d9e75c99eb3fcb381bc5dKenny Root } else if (strcmp(cp, "-utf16") == 0) { 5531741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root bundle.setWantUTF16(true); 554e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn } else if (strcmp(cp, "-preferred-configurations") == 0) { 555e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn argc--; 556e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn argv++; 557e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn if (!argc) { 558e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn fprintf(stderr, "ERROR: No argument supplied for '--preferred-configurations' option\n"); 559e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn wantUsage = true; 560e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn goto bail; 561e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn } 562e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn bundle.addPreferredConfigurations(argv[0]); 5632fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton } else if (strcmp(cp, "-rename-manifest-package") == 0) { 5642fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton argc--; 5652fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton argv++; 5662fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton if (!argc) { 5672fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton fprintf(stderr, "ERROR: No argument supplied for '--rename-manifest-package' option\n"); 5682fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton wantUsage = true; 5692fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton goto bail; 5702fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton } 5712fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton bundle.setManifestPackageNameOverride(argv[0]); 572ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn } else if (strcmp(cp, "-rename-instrumentation-target-package") == 0) { 573ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn argc--; 574ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn argv++; 575ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn if (!argc) { 576ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn fprintf(stderr, "ERROR: No argument supplied for '--rename-instrumentation-target-package' option\n"); 577ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn wantUsage = true; 578ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn goto bail; 579ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn } 580ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn bundle.setInstrumentationPackageNameOverride(argv[0]); 58199080c7d9ad9e5ccfec70dd10e4c24468a960c45Xavier Ducrohet } else if (strcmp(cp, "-auto-add-overlay") == 0) { 58299080c7d9ad9e5ccfec70dd10e4c24468a960c45Xavier Ducrohet bundle.setAutoAddOverlay(true); 5837714a2429b192c88e134ff67b969121bbaeb5457Xavier Ducrohet } else if (strcmp(cp, "-error-on-failed-insert") == 0) { 5847714a2429b192c88e134ff67b969121bbaeb5457Xavier Ducrohet bundle.setErrorOnFailedInsert(true); 585f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet } else if (strcmp(cp, "-output-text-symbols") == 0) { 586f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet argc--; 587f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet argv++; 588f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet if (!argc) { 589f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet fprintf(stderr, "ERROR: No argument supplied for '-output-text-symbols' option\n"); 590f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet wantUsage = true; 591f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet goto bail; 592f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet } 593f5de650ff1e161ea135c828e43515895343d2c0fXavier Ducrohet bundle.setOutputTextSymbols(argv[0]); 59490964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer } else if (strcmp(cp, "-product") == 0) { 59590964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer argc--; 59690964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer argv++; 59790964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer if (!argc) { 59890964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer fprintf(stderr, "ERROR: No argument supplied for '--product' option\n"); 59990964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer wantUsage = true; 60090964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer goto bail; 60190964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer } 60290964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer bundle.setProduct(argv[0]); 603d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet } else if (strcmp(cp, "-non-constant-id") == 0) { 604d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet bundle.setNonConstantId(true); 6058a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin } else if (strcmp(cp, "-no-crunch") == 0) { 6068a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin bundle.setUseCrunchCache(true); 60790897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll } else if (strcmp(cp, "-ignore-assets") == 0) { 60890897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll argc--; 60990897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll argv++; 61090897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll if (!argc) { 61190897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll fprintf(stderr, "ERROR: No argument supplied for '--ignore-assets' option\n"); 61290897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll wantUsage = true; 61390897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll goto bail; 61490897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll } 61590897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll gUserIgnoreAssets = argv[0]; 61690897ed87bce639bf6bb2ccf15fbabb59b131babRaphael Moll } else { 61762da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn fprintf(stderr, "ERROR: Unknown option '-%s'\n", cp); 61862da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn wantUsage = true; 61962da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn goto bail; 62062da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn } 62162da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn cp += strlen(cp) - 1; 62262da8461ed5317fe78ae5e3793662694e7fc99a3Dianne Hackborn break; 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ERROR: Unknown flag '-%c'\n", *cp); 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project wantUsage = true; 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto bail; 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cp++; 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argc--; 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project argv++; 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * We're past the flags. The rest all goes straight in. 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bundle.setFileSpec(argv, argc); 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result = handleCommand(&bundle); 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbail: 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (wantUsage) { 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project usage(); 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result = 2; 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //printf("--> returning %d\n", result); 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 651