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// State bundle. Used to pass around stuff like command-line args. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef __BUNDLE_H 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define __BUNDLE_H 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdlib.h> 103b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Log.h> 113b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/threads.h> 123b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/List.h> 133b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Errors.h> 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/String8.h> 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/Vector.h> 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Things we can do. 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttypedef enum Command { 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandUnknown = 0, 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandVersion, 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandList, 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandDump, 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandAdd, 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandRemove, 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandPackage, 288a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin kCommandCrunch, 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} Command; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle of goodies, including everything specified on the command line. 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Bundle { 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle(void) 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : mCmd(kCommandUnknown), mVerbose(false), mAndroidList(false), 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mForce(false), mGrayscaleTolerance(0), mMakePackageDirs(false), 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mUpdate(false), mExtending(false), 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequireLocalization(false), mPseudolocalize(false), 411741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root mWantUTF16(false), mValues(false), 42ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn mCompressionMethod(0), mOutputAPKFile(NULL), 43ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn mManifestPackageNameOverride(NULL), mInstrumentationPackageNameOverride(NULL), 4457f4b77c89bafedf9468f9a636561c0c193405c9Mårten Kongstad mIsOverlayPackage(false), 459bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin mAutoAddOverlay(false), mGenDependencies(false), 468a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin mAssetSourceDir(NULL), 478a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin mCrunchedOutputDir(NULL), mProguardFile(NULL), 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAndroidManifestFile(NULL), mPublicOutputFile(NULL), 491741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL), 50fa6baa259d8b1af768e5c1d7ceb27184391f8fb1Dianne Hackborn mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL), 51ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), mExtraPackages(NULL), 52d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), mProduct(NULL), 538a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin mUseCrunchCache(false), mArgc(0), mArgv(NULL) 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {} 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ~Bundle(void) {} 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the command value. Returns "false" if it was previously set. 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Command getCommand(void) const { return mCmd; } 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setCommand(Command cmd) { mCmd = cmd; } 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Command modifiers. Not all modifiers are appropriate for all 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * commands. 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getVerbose(void) const { return mVerbose; } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setVerbose(bool val) { mVerbose = val; } 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getAndroidList(void) const { return mAndroidList; } 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setAndroidList(bool val) { mAndroidList = val; } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getForce(void) const { return mForce; } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setForce(bool val) { mForce = val; } 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setGrayscaleTolerance(int val) { mGrayscaleTolerance = val; } 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getGrayscaleTolerance() { return mGrayscaleTolerance; } 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getMakePackageDirs(void) const { return mMakePackageDirs; } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setMakePackageDirs(bool val) { mMakePackageDirs = val; } 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getUpdate(void) const { return mUpdate; } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setUpdate(bool val) { mUpdate = val; } 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getExtending(void) const { return mExtending; } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setExtending(bool val) { mExtending = val; } 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getRequireLocalization(void) const { return mRequireLocalization; } 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setRequireLocalization(bool val) { mRequireLocalization = val; } 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getPseudolocalize(void) const { return mPseudolocalize; } 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPseudolocalize(bool val) { mPseudolocalize = val; } 851741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root bool getWantUTF16(void) const { return mWantUTF16; } 861741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root void setWantUTF16(bool val) { mWantUTF16 = val; } 87e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn bool getValues(void) const { return mValues; } 88e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn void setValues(bool val) { mValues = val; } 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getCompressionMethod(void) const { return mCompressionMethod; } 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setCompressionMethod(int val) { mCompressionMethod = val; } 91dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker bool getJunkPath(void) const { return mJunkPath; } 92dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker void setJunkPath(bool val) { mJunkPath = val; } 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getOutputAPKFile() const { return mOutputAPKFile; } 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setOutputAPKFile(const char* val) { mOutputAPKFile = val; } 952fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton const char* getManifestPackageNameOverride() const { return mManifestPackageNameOverride; } 962fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton void setManifestPackageNameOverride(const char * val) { mManifestPackageNameOverride = val; } 97ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn const char* getInstrumentationPackageNameOverride() const { return mInstrumentationPackageNameOverride; } 98ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn void setInstrumentationPackageNameOverride(const char * val) { mInstrumentationPackageNameOverride = val; } 9957f4b77c89bafedf9468f9a636561c0c193405c9Mårten Kongstad bool getIsOverlayPackage() const { return mIsOverlayPackage; } 10057f4b77c89bafedf9468f9a636561c0c193405c9Mårten Kongstad void setIsOverlayPackage(bool val) { mIsOverlayPackage = val; } 10199080c7d9ad9e5ccfec70dd10e4c24468a960c45Xavier Ducrohet bool getAutoAddOverlay() { return mAutoAddOverlay; } 10299080c7d9ad9e5ccfec70dd10e4c24468a960c45Xavier Ducrohet void setAutoAddOverlay(bool val) { mAutoAddOverlay = val; } 1039bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin bool getGenDependencies() { return mGenDependencies; } 1049bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin void setGenDependencies(bool val) { mGenDependencies = val; } 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 106dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker /* 107dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker * Input options. 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getAssetSourceDir() const { return mAssetSourceDir; } 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setAssetSourceDir(const char* dir) { mAssetSourceDir = dir; } 1118a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin const char* getCrunchedOutputDir() const { return mCrunchedOutputDir; } 1128a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin void setCrunchedOutputDir(const char* dir) { mCrunchedOutputDir = dir; } 1131553c82e084ac5763fb393857224145506771b99Joe Onorato const char* getProguardFile() const { return mProguardFile; } 1141553c82e084ac5763fb393857224145506771b99Joe Onorato void setProguardFile(const char* file) { mProguardFile = file; } 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; } 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); } 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getAndroidManifestFile() const { return mAndroidManifestFile; } 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setAndroidManifestFile(const char* file) { mAndroidManifestFile = file; } 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getPublicOutputFile() const { return mPublicOutputFile; } 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPublicOutputFile(const char* file) { mPublicOutputFile = file; } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getRClassDir() const { return mRClassDir; } 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setRClassDir(const char* dir) { mRClassDir = dir; } 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getConfigurations() const { return mConfigurations.size() > 0 ? mConfigurations.string() : NULL; } 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addConfigurations(const char* val) { if (mConfigurations.size() > 0) { mConfigurations.append(","); mConfigurations.append(val); } else { mConfigurations = val; } } 125e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn const char* getPreferredConfigurations() const { return mPreferredConfigurations.size() > 0 ? mPreferredConfigurations.string() : NULL; } 126e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn void addPreferredConfigurations(const char* val) { if (mPreferredConfigurations.size() > 0) { mPreferredConfigurations.append(","); mPreferredConfigurations.append(val); } else { mPreferredConfigurations = val; } } 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getResourceIntermediatesDir() const { return mResourceIntermediatesDir; } 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setResourceIntermediatesDir(const char* dir) { mResourceIntermediatesDir = dir; } 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getPackageIncludes() const { return mPackageIncludes; } 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addPackageInclude(const char* file) { mPackageIncludes.add(file); } 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getJarFiles() const { return mJarFiles; } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addJarFile(const char* file) { mJarFiles.add(file); } 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getNoCompressExtensions() const { return mNoCompressExtensions; } 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1361741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root const char* getManifestMinSdkVersion() const { return mManifestMinSdkVersion; } 1371741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root void setManifestMinSdkVersion(const char* val) { mManifestMinSdkVersion = val; } 138a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getMinSdkVersion() const { return mMinSdkVersion; } 1391741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root void setMinSdkVersion(const char* val) { mMinSdkVersion = val; } 140a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getTargetSdkVersion() const { return mTargetSdkVersion; } 141a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; } 142a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getMaxSdkVersion() const { return mMaxSdkVersion; } 143a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setMaxSdkVersion(const char* val) { mMaxSdkVersion = val; } 144a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getVersionCode() const { return mVersionCode; } 145a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setVersionCode(const char* val) { mVersionCode = val; } 146a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getVersionName() const { return mVersionName; } 147a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setVersionName(const char* val) { mVersionName = val; } 14863459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet const char* getCustomPackage() const { return mCustomPackage; } 14963459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet void setCustomPackage(const char* val) { mCustomPackage = val; } 150ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin const char* getExtraPackages() const { return mExtraPackages; } 151ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin void setExtraPackages(const char* val) { mExtraPackages = val; } 152588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick const char* getMaxResVersion() const { return mMaxResVersion; } 153588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick void setMaxResVersion(const char * val) { mMaxResVersion = val; } 1546487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet bool getDebugMode() { return mDebugMode; } 1556487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet void setDebugMode(bool val) { mDebugMode = val; } 156d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet bool getNonConstantId() { return mNonConstantId; } 157d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet void setNonConstantId(bool val) { mNonConstantId = val; } 15890964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer const char* getProduct() const { return mProduct; } 15990964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer void setProduct(const char * val) { mProduct = val; } 1608a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin void setUseCrunchCache(bool val) { mUseCrunchCache = val; } 1618a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin bool getUseCrunchCache() { return mUseCrunchCache; } 162dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set and get the file specification. 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Note this does NOT make a copy of argv. 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setFileSpec(char* const argv[], int argc) { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgc = argc; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgv = argv; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getFileSpecCount(void) const { return mArgc; } 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getFileSpecEntry(int idx) const { return mArgv[idx]; } 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void eatArgs(int n) { 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n > mArgc) n = mArgc; 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgv += n; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgc -= n; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Package count. Nothing to do with anything else here; this is 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * just a convenient place to stuff it so we don't have to pass it 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * around everywhere. 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getPackageCount(void) const { return mPackageCount; } 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPackageCount(int val) { mPackageCount = val; } 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 190c9f3088036dd7cce6903e307afea3e289a334036Kenny Root /* Certain features may only be available on a specific SDK level or 191c9f3088036dd7cce6903e307afea3e289a334036Kenny Root * above. SDK levels that have a non-numeric identifier are assumed 192c9f3088036dd7cce6903e307afea3e289a334036Kenny Root * to be newer than any SDK level that has a number designated. 1931741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root */ 194c9f3088036dd7cce6903e307afea3e289a334036Kenny Root bool isMinSdkAtLeast(int desired) { 1951741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root /* If the application specifies a minSdkVersion in the manifest 1961741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root * then use that. Otherwise, check what the user specified on 1971741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root * the command line. If neither, it's not available since 1981741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root * the minimum SDK version is assumed to be 1. 1991741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root */ 2001741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root const char *minVer; 2011741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root if (mManifestMinSdkVersion != NULL) { 2021741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root minVer = mManifestMinSdkVersion; 2031741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root } else if (mMinSdkVersion != NULL) { 2041741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root minVer = mMinSdkVersion; 2051741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root } else { 2061741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root return false; 2071741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root } 2081741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root 2091741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root char *end; 2101741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root int minSdkNum = (int)strtol(minVer, &end, 0); 2111741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root if (*end == '\0') { 212c9f3088036dd7cce6903e307afea3e289a334036Kenny Root if (minSdkNum < desired) { 2131741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root return false; 2141741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root } 2151741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root } 2161741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root return true; 2171741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root } 2181741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* commands & modifiers */ 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Command mCmd; 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mVerbose; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mAndroidList; 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mForce; 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mGrayscaleTolerance; 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mMakePackageDirs; 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mUpdate; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mExtending; 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mRequireLocalization; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mPseudolocalize; 2311741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root bool mWantUTF16; 232e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn bool mValues; 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mCompressionMethod; 234dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker bool mJunkPath; 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mOutputAPKFile; 2362fee0ed6eb99b211efa06f095a41268a2021214aJeff Hamilton const char* mManifestPackageNameOverride; 237ef05e076ced1a32c5c0aaee28403779834adb2baDianne Hackborn const char* mInstrumentationPackageNameOverride; 23857f4b77c89bafedf9468f9a636561c0c193405c9Mårten Kongstad bool mIsOverlayPackage; 23999080c7d9ad9e5ccfec70dd10e4c24468a960c45Xavier Ducrohet bool mAutoAddOverlay; 2409bf34ca6f85309c65b0ebdf614cb8266401b49baJosiah Gaskin bool mGenDependencies; 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mAssetSourceDir; 2428a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin const char* mCrunchedOutputDir; 2431553c82e084ac5763fb393857224145506771b99Joe Onorato const char* mProguardFile; 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mAndroidManifestFile; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mPublicOutputFile; 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mRClassDir; 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mResourceIntermediatesDir; 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::String8 mConfigurations; 249e6b680364dd992907a8d2037685a2e500d188dfbDianne Hackborn android::String8 mPreferredConfigurations; 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mPackageIncludes; 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mJarFiles; 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mNoCompressExtensions; 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mResourceSourceDirs; 254dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker 2551741cd4904414b5b4e768953a8f1abb3f0ef0a0aKenny Root const char* mManifestMinSdkVersion; 256a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mMinSdkVersion; 257a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mTargetSdkVersion; 258a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mMaxSdkVersion; 259a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mVersionCode; 260a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mVersionName; 26163459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet const char* mCustomPackage; 262ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0Josiah Gaskin const char* mExtraPackages; 263588f228d6a3e3b254fbc1f13f29ee47e13a669c1Ficus Kirkpatrick const char* mMaxResVersion; 2646487b099231b1e5d36ae37a921399b028b3b3ad9Xavier Ducrohet bool mDebugMode; 265d06c1afbb920111d6bb77381560faa1fac5f2d69Xavier Ducrohet bool mNonConstantId; 26690964040cabfc67f92a7c3322a02401bb6f8ae82Eric Fischer const char* mProduct; 2678a39da80b33691b0c82458c3b7727e13ff71277eJosiah Gaskin bool mUseCrunchCache; 268dbe7a68cc13ae135b33769918932838d2d447169Doug Zongker 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* file specification */ 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mArgc; 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char* const* mArgv; 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* misc stuff */ 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mPackageCount; 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 277b5ef7ee1644b099498ddd29c1d051e7ee26ccfd3Kenny Root 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // __BUNDLE_H 281