1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// Copyright 2006 The Android Open Source Project 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// State bundle. Used to pass around stuff like command-line args. 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski// 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#ifndef __BUNDLE_H 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#define __BUNDLE_H 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <stdlib.h> 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/Log.h> 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/threads.h> 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/List.h> 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/Errors.h> 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/String8.h> 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/Vector.h> 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 17dcdfe9fef4b07ee53d312c3fbecc74cb215ace6fAdam Lesinski#include "SdkConstants.h" 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/* 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Things we can do. 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskitypedef enum Command { 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandUnknown = 0, 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandVersion, 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandList, 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandDump, 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandAdd, 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandRemove, 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandPackage, 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandCrunch, 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski kCommandSingleCrunch, 326f1280cf170b358a57ff70341a9f2ad224e5a662Jerome Dochez kCommandDaemon 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} Command; 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/* 36a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin * Pseudolocalization methods 37a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin */ 38a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumintypedef enum PseudolocalizationMethod { 39a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin NO_PSEUDOLOCALIZATION = 0, 40a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin PSEUDO_ACCENTED, 41a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin PSEUDO_BIDI, 42a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin} PseudolocalizationMethod; 43a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin 44a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin/* 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Bundle of goodies, including everything specified on the command line. 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass Bundle { 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Bundle(void) 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski : mCmd(kCommandUnknown), mVerbose(false), mAndroidList(false), 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mForce(false), mGrayscaleTolerance(0), mMakePackageDirs(false), 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mUpdate(false), mExtending(false), 53a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin mRequireLocalization(false), mPseudolocalize(NO_PSEUDOLOCALIZATION), 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mWantUTF16(false), mValues(false), mIncludeMetaData(false), 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mCompressionMethod(0), mJunkPath(false), mOutputAPKFile(NULL), 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mManifestPackageNameOverride(NULL), mInstrumentationPackageNameOverride(NULL), 576e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski mAutoAddOverlay(false), mGenDependencies(false), mNoVersionVectors(false), 584d35cca96ce55eb29d1948086214f91ae94e9adbYuichi Araki mNoVersionTransitions(false), 5986229cb622fccde8ab8cbe85eead91a34313a708Rohit Agrawal mCrunchedOutputDir(NULL), mProguardFile(NULL), mMainDexProguardFile(NULL), 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mAndroidManifestFile(NULL), mPublicOutputFile(NULL), 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL), 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL), 63df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mVersionCode(NULL), mVersionName(NULL), mReplaceVersion(false), mCustomPackage(NULL), 64df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mExtraPackages(NULL), mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), 655892248580859620db90d5ef2e3c2f48531933faAdrian Roos mSkipSymbolsWithoutDefaultLocalization(false), 66df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mProduct(NULL), mUseCrunchCache(false), mErrorOnFailedInsert(false), 67df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mErrorOnMissingConfigEntry(false), mOutputTextSymbols(NULL), 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mSingleCrunchInputFile(NULL), mSingleCrunchOutputFile(NULL), 69de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski mBuildSharedLibrary(false), 70a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai mBuildAppAsSharedLibrary(false), 7111be9317efffafcac52cd2dc5cce1d951c966dd1Alan Viverette mCompileSdkVersion(0), 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc(0), mArgv(NULL) 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski {} 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ~Bundle(void) {} 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Set the command value. Returns "false" if it was previously set. 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Command getCommand(void) const { return mCmd; } 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCommand(Command cmd) { mCmd = cmd; } 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Command modifiers. Not all modifiers are appropriate for all 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * commands. 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getVerbose(void) const { return mVerbose; } 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVerbose(bool val) { mVerbose = val; } 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getAndroidList(void) const { return mAndroidList; } 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAndroidList(bool val) { mAndroidList = val; } 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getForce(void) const { return mForce; } 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setForce(bool val) { mForce = val; } 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setGrayscaleTolerance(int val) { mGrayscaleTolerance = val; } 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getGrayscaleTolerance() const { return mGrayscaleTolerance; } 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getMakePackageDirs(void) const { return mMakePackageDirs; } 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMakePackageDirs(bool val) { mMakePackageDirs = val; } 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUpdate(void) const { return mUpdate; } 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setUpdate(bool val) { mUpdate = val; } 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getExtending(void) const { return mExtending; } 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setExtending(bool val) { mExtending = val; } 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getRequireLocalization(void) const { return mRequireLocalization; } 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setRequireLocalization(bool val) { mRequireLocalization = val; } 102a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin short getPseudolocalize(void) const { return mPseudolocalize; } 103a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin void setPseudolocalize(short val) { mPseudolocalize = val; } 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setWantUTF16(bool val) { mWantUTF16 = val; } 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getValues(void) const { return mValues; } 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setValues(bool val) { mValues = val; } 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getIncludeMetaData(void) const { return mIncludeMetaData; } 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setIncludeMetaData(bool val) { mIncludeMetaData = val; } 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getCompressionMethod(void) const { return mCompressionMethod; } 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCompressionMethod(int val) { mCompressionMethod = val; } 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getJunkPath(void) const { return mJunkPath; } 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setJunkPath(bool val) { mJunkPath = val; } 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getOutputAPKFile() const { return mOutputAPKFile; } 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setOutputAPKFile(const char* val) { mOutputAPKFile = val; } 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getManifestPackageNameOverride() const { return mManifestPackageNameOverride; } 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setManifestPackageNameOverride(const char * val) { mManifestPackageNameOverride = val; } 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getInstrumentationPackageNameOverride() const { return mInstrumentationPackageNameOverride; } 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setInstrumentationPackageNameOverride(const char * val) { mInstrumentationPackageNameOverride = val; } 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getAutoAddOverlay() { return mAutoAddOverlay; } 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAutoAddOverlay(bool val) { mAutoAddOverlay = val; } 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getGenDependencies() { return mGenDependencies; } 122282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setGenDependencies(bool val) { mGenDependencies = val; } 123282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getErrorOnFailedInsert() { return mErrorOnFailedInsert; } 124282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setErrorOnFailedInsert(bool val) { mErrorOnFailedInsert = val; } 125cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang bool getErrorOnMissingConfigEntry() { return mErrorOnMissingConfigEntry; } 126cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang void setErrorOnMissingConfigEntry(bool val) { mErrorOnMissingConfigEntry = val; } 12711be9317efffafcac52cd2dc5cce1d951c966dd1Alan Viverette const android::String8& getCompileSdkVersionCodename() { return mCompileSdkVersionCodename; } 12811be9317efffafcac52cd2dc5cce1d951c966dd1Alan Viverette void setCompileSdkVersionCodename(const android::String8& codename) { mCompileSdkVersionCodename = codename; } 12911be9317efffafcac52cd2dc5cce1d951c966dd1Alan Viverette int getCompileSdkVersion() { return mCompileSdkVersion; } 13011be9317efffafcac52cd2dc5cce1d951c966dd1Alan Viverette void setCompileSdkVersion(int version) { mCompileSdkVersion = version; } 131ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski const android::String8& getPlatformBuildVersionCode() { return mPlatformVersionCode; } 132ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski void setPlatformBuildVersionCode(const android::String8& code) { mPlatformVersionCode = code; } 133ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski const android::String8& getPlatformBuildVersionName() { return mPlatformVersionName; } 134ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski void setPlatformBuildVersionName(const android::String8& name) { mPlatformVersionName = name; } 135282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 13678713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski const android::String8& getPrivateSymbolsPackage() const { return mPrivateSymbolsPackage; } 13778713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski 13878713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski void setPrivateSymbolsPackage(const android::String8& package) { 13978713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski mPrivateSymbolsPackage = package; 14078713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski } 14178713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski 142282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUTF16StringsOption() { 143282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mWantUTF16 || !isMinSdkAtLeast(SDK_FROYO); 144282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 145282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 146282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 147282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Input options. 148282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 14909384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski const android::Vector<const char*>& getAssetSourceDirs() const { return mAssetSourceDirs; } 15009384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski void addAssetSourceDir(const char* dir) { mAssetSourceDirs.insertAt(dir,0); } 151282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getCrunchedOutputDir() const { return mCrunchedOutputDir; } 152282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCrunchedOutputDir(const char* dir) { mCrunchedOutputDir = dir; } 153282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getProguardFile() const { return mProguardFile; } 154282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setProguardFile(const char* file) { mProguardFile = file; } 15586229cb622fccde8ab8cbe85eead91a34313a708Rohit Agrawal const char* getMainDexProguardFile() const { return mMainDexProguardFile; } 15686229cb622fccde8ab8cbe85eead91a34313a708Rohit Agrawal void setMainDexProguardFile(const char* file) { mMainDexProguardFile = file; } 157282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; } 158282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); } 159282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getAndroidManifestFile() const { return mAndroidManifestFile; } 160282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAndroidManifestFile(const char* file) { mAndroidManifestFile = file; } 161282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getPublicOutputFile() const { return mPublicOutputFile; } 162282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setPublicOutputFile(const char* file) { mPublicOutputFile = file; } 163282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getRClassDir() const { return mRClassDir; } 164282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setRClassDir(const char* dir) { mRClassDir = dir; } 165fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::String8& getConfigurations() const { return mConfigurations; } 166282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addConfigurations(const char* val) { if (mConfigurations.size() > 0) { mConfigurations.append(","); mConfigurations.append(val); } else { mConfigurations = val; } } 167fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::String8& getPreferredDensity() const { return mPreferredDensity; } 168fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski void setPreferredDensity(const char* val) { mPreferredDensity = val; } 169fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski void addSplitConfigurations(const char* val) { mPartialConfigurations.add(android::String8(val)); } 170fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::Vector<android::String8>& getSplitConfigurations() const { return mPartialConfigurations; } 171282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getResourceIntermediatesDir() const { return mResourceIntermediatesDir; } 172282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setResourceIntermediatesDir(const char* dir) { mResourceIntermediatesDir = dir; } 173833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::Vector<android::String8>& getPackageIncludes() const { return mPackageIncludes; } 174833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void addPackageInclude(const char* file) { mPackageIncludes.add(android::String8(file)); } 175282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getJarFiles() const { return mJarFiles; } 176282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addJarFile(const char* file) { mJarFiles.add(file); } 177282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getNoCompressExtensions() const { return mNoCompressExtensions; } 178282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); } 179833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void setFeatureOfPackage(const char* str) { mFeatureOfPackage = str; } 180833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::String8& getFeatureOfPackage() const { return mFeatureOfPackage; } 181833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void setFeatureAfterPackage(const char* str) { mFeatureAfterPackage = str; } 182833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::String8& getFeatureAfterPackage() const { return mFeatureAfterPackage; } 183282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 184282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getManifestMinSdkVersion() const { return mManifestMinSdkVersion; } 185282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setManifestMinSdkVersion(const char* val) { mManifestMinSdkVersion = val; } 186282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMinSdkVersion() const { return mMinSdkVersion; } 187282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMinSdkVersion(const char* val) { mMinSdkVersion = val; } 188282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getTargetSdkVersion() const { return mTargetSdkVersion; } 189282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; } 190282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMaxSdkVersion() const { return mMaxSdkVersion; } 191282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMaxSdkVersion(const char* val) { mMaxSdkVersion = val; } 192282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getVersionCode() const { return mVersionCode; } 193282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVersionCode(const char* val) { mVersionCode = val; } 194282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getVersionName() const { return mVersionName; } 195282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVersionName(const char* val) { mVersionName = val; } 196df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson bool getReplaceVersion() { return mReplaceVersion; } 197df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson void setReplaceVersion(bool val) { mReplaceVersion = val; } 19854de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski const android::String8& getRevisionCode() { return mRevisionCode; } 19954de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski void setRevisionCode(const char* val) { mRevisionCode = android::String8(val); } 200282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getCustomPackage() const { return mCustomPackage; } 201282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCustomPackage(const char* val) { mCustomPackage = val; } 202282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getExtraPackages() const { return mExtraPackages; } 203282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setExtraPackages(const char* val) { mExtraPackages = val; } 204282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMaxResVersion() const { return mMaxResVersion; } 205282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMaxResVersion(const char * val) { mMaxResVersion = val; } 206282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getDebugMode() const { return mDebugMode; } 207282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setDebugMode(bool val) { mDebugMode = val; } 208282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getNonConstantId() const { return mNonConstantId; } 209282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setNonConstantId(bool val) { mNonConstantId = val; } 2105892248580859620db90d5ef2e3c2f48531933faAdrian Roos bool getSkipSymbolsWithoutDefaultLocalization() const { return mSkipSymbolsWithoutDefaultLocalization; } 2115892248580859620db90d5ef2e3c2f48531933faAdrian Roos void setSkipSymbolsWithoutDefaultLocalization(bool val) { mSkipSymbolsWithoutDefaultLocalization = val; } 212282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getProduct() const { return mProduct; } 213282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setProduct(const char * val) { mProduct = val; } 214282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setUseCrunchCache(bool val) { mUseCrunchCache = val; } 215282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUseCrunchCache() const { return mUseCrunchCache; } 216282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getOutputTextSymbols() const { return mOutputTextSymbols; } 217282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setOutputTextSymbols(const char* val) { mOutputTextSymbols = val; } 218282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getSingleCrunchInputFile() const { return mSingleCrunchInputFile; } 219282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setSingleCrunchInputFile(const char* val) { mSingleCrunchInputFile = val; } 220282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getSingleCrunchOutputFile() const { return mSingleCrunchOutputFile; } 221282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setSingleCrunchOutputFile(const char* val) { mSingleCrunchOutputFile = val; } 222de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski bool getBuildSharedLibrary() const { return mBuildSharedLibrary; } 223de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski void setBuildSharedLibrary(bool val) { mBuildSharedLibrary = val; } 224a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai bool getBuildAppAsSharedLibrary() const { return mBuildAppAsSharedLibrary; } 225a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai void setBuildAppAsSharedLibrary(bool val) { mBuildAppAsSharedLibrary = val; } 2266e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski void setNoVersionVectors(bool val) { mNoVersionVectors = val; } 2276e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski bool getNoVersionVectors() const { return mNoVersionVectors; } 2284d35cca96ce55eb29d1948086214f91ae94e9adbYuichi Araki void setNoVersionTransitions(bool val) { mNoVersionTransitions = val; } 2294d35cca96ce55eb29d1948086214f91ae94e9adbYuichi Araki bool getNoVersionTransitions() const { return mNoVersionTransitions; } 230282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 231282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 232282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Set and get the file specification. 233282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 234282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Note this does NOT make a copy of argv. 235282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 236282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setFileSpec(char* const argv[], int argc) { 237282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc = argc; 238282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgv = argv; 239282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 240282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getFileSpecCount(void) const { return mArgc; } 241282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getFileSpecEntry(int idx) const { return mArgv[idx]; } 242282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void eatArgs(int n) { 243282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (n > mArgc) n = mArgc; 244282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgv += n; 245282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc -= n; 246282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 247282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 248282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#if 0 249282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 250282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Package count. Nothing to do with anything else here; this is 251282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * just a convenient place to stuff it so we don't have to pass it 252282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * around everywhere. 253282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 254282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getPackageCount(void) const { return mPackageCount; } 255282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setPackageCount(int val) { mPackageCount = val; } 256282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif 257282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 258282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* Certain features may only be available on a specific SDK level or 259282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * above. SDK levels that have a non-numeric identifier are assumed 260282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * to be newer than any SDK level that has a number designated. 261282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 26248efde4fb14cfe160747a8148b8e1a810c8f1c6eMatt Sarett bool isMinSdkAtLeast(int desired) const { 263282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* If the application specifies a minSdkVersion in the manifest 264282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * then use that. Otherwise, check what the user specified on 265282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the command line. If neither, it's not available since 266282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the minimum SDK version is assumed to be 1. 267282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 268282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char *minVer; 269282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (mManifestMinSdkVersion != NULL) { 270282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski minVer = mManifestMinSdkVersion; 271282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else if (mMinSdkVersion != NULL) { 272282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski minVer = mMinSdkVersion; 273282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else { 274282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 275282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 276282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 277282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski char *end; 278282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int minSdkNum = (int)strtol(minVer, &end, 0); 279282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (*end == '\0') { 280282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (minSdkNum < desired) { 281282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 282282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 283282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 284282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return true; 285282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 286282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 287282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 288282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* commands & modifiers */ 289282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Command mCmd; 290282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mVerbose; 291282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mAndroidList; 292282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mForce; 293282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mGrayscaleTolerance; 294282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mMakePackageDirs; 295282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mUpdate; 296282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mExtending; 297282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mRequireLocalization; 298a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin short mPseudolocalize; 299282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mWantUTF16; 300282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mValues; 301282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mIncludeMetaData; 302282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mCompressionMethod; 303282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mJunkPath; 304282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mOutputAPKFile; 305282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mManifestPackageNameOverride; 306282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mInstrumentationPackageNameOverride; 307282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mAutoAddOverlay; 308282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mGenDependencies; 3096e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski bool mNoVersionVectors; 3104d35cca96ce55eb29d1948086214f91ae94e9adbYuichi Araki bool mNoVersionTransitions; 311282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mCrunchedOutputDir; 312282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mProguardFile; 31386229cb622fccde8ab8cbe85eead91a34313a708Rohit Agrawal const char* mMainDexProguardFile; 314282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mAndroidManifestFile; 315282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mPublicOutputFile; 316282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mRClassDir; 317282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mResourceIntermediatesDir; 318282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::String8 mConfigurations; 319fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski android::String8 mPreferredDensity; 320fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski android::Vector<android::String8> mPartialConfigurations; 321833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::Vector<android::String8> mPackageIncludes; 322282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mJarFiles; 323282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mNoCompressExtensions; 32409384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski android::Vector<const char*> mAssetSourceDirs; 325282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mResourceSourceDirs; 326282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 327833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::String8 mFeatureOfPackage; 328833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::String8 mFeatureAfterPackage; 32954de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski android::String8 mRevisionCode; 330282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mManifestMinSdkVersion; 331282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMinSdkVersion; 332282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mTargetSdkVersion; 333282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMaxSdkVersion; 334282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mVersionCode; 335282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mVersionName; 336df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson bool mReplaceVersion; 337282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mCustomPackage; 338282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mExtraPackages; 339282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMaxResVersion; 340282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mDebugMode; 341282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mNonConstantId; 3425892248580859620db90d5ef2e3c2f48531933faAdrian Roos bool mSkipSymbolsWithoutDefaultLocalization; 343282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mProduct; 344282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mUseCrunchCache; 345282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mErrorOnFailedInsert; 346cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang bool mErrorOnMissingConfigEntry; 347282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mOutputTextSymbols; 348282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mSingleCrunchInputFile; 349282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mSingleCrunchOutputFile; 350de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski bool mBuildSharedLibrary; 351a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai bool mBuildAppAsSharedLibrary; 35211be9317efffafcac52cd2dc5cce1d951c966dd1Alan Viverette int mCompileSdkVersion; 35311be9317efffafcac52cd2dc5cce1d951c966dd1Alan Viverette android::String8 mCompileSdkVersionCodename; 354ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski android::String8 mPlatformVersionCode; 355ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski android::String8 mPlatformVersionName; 35678713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski android::String8 mPrivateSymbolsPackage; 357282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 358282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* file specification */ 359282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mArgc; 360282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski char* const* mArgv; 361282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 362282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#if 0 363282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* misc stuff */ 364282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mPackageCount; 365282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif 366282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 367282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 368282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 369282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif // __BUNDLE_H 370