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), 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc(0), mArgv(NULL) 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski {} 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ~Bundle(void) {} 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Set the command value. Returns "false" if it was previously set. 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Command getCommand(void) const { return mCmd; } 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCommand(Command cmd) { mCmd = cmd; } 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Command modifiers. Not all modifiers are appropriate for all 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * commands. 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getVerbose(void) const { return mVerbose; } 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVerbose(bool val) { mVerbose = val; } 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getAndroidList(void) const { return mAndroidList; } 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAndroidList(bool val) { mAndroidList = val; } 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getForce(void) const { return mForce; } 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setForce(bool val) { mForce = val; } 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setGrayscaleTolerance(int val) { mGrayscaleTolerance = val; } 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getGrayscaleTolerance() const { return mGrayscaleTolerance; } 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getMakePackageDirs(void) const { return mMakePackageDirs; } 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMakePackageDirs(bool val) { mMakePackageDirs = val; } 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUpdate(void) const { return mUpdate; } 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setUpdate(bool val) { mUpdate = val; } 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getExtending(void) const { return mExtending; } 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setExtending(bool val) { mExtending = val; } 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getRequireLocalization(void) const { return mRequireLocalization; } 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setRequireLocalization(bool val) { mRequireLocalization = val; } 101a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin short getPseudolocalize(void) const { return mPseudolocalize; } 102a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin void setPseudolocalize(short val) { mPseudolocalize = val; } 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setWantUTF16(bool val) { mWantUTF16 = val; } 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getValues(void) const { return mValues; } 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setValues(bool val) { mValues = val; } 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getIncludeMetaData(void) const { return mIncludeMetaData; } 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setIncludeMetaData(bool val) { mIncludeMetaData = val; } 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getCompressionMethod(void) const { return mCompressionMethod; } 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCompressionMethod(int val) { mCompressionMethod = val; } 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getJunkPath(void) const { return mJunkPath; } 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setJunkPath(bool val) { mJunkPath = val; } 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getOutputAPKFile() const { return mOutputAPKFile; } 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setOutputAPKFile(const char* val) { mOutputAPKFile = val; } 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getManifestPackageNameOverride() const { return mManifestPackageNameOverride; } 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setManifestPackageNameOverride(const char * val) { mManifestPackageNameOverride = val; } 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getInstrumentationPackageNameOverride() const { return mInstrumentationPackageNameOverride; } 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setInstrumentationPackageNameOverride(const char * val) { mInstrumentationPackageNameOverride = val; } 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getAutoAddOverlay() { return mAutoAddOverlay; } 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAutoAddOverlay(bool val) { mAutoAddOverlay = val; } 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getGenDependencies() { return mGenDependencies; } 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setGenDependencies(bool val) { mGenDependencies = val; } 122282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getErrorOnFailedInsert() { return mErrorOnFailedInsert; } 123282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setErrorOnFailedInsert(bool val) { mErrorOnFailedInsert = val; } 124cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang bool getErrorOnMissingConfigEntry() { return mErrorOnMissingConfigEntry; } 125cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang void setErrorOnMissingConfigEntry(bool val) { mErrorOnMissingConfigEntry = val; } 126ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski const android::String8& getPlatformBuildVersionCode() { return mPlatformVersionCode; } 127ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski void setPlatformBuildVersionCode(const android::String8& code) { mPlatformVersionCode = code; } 128ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski const android::String8& getPlatformBuildVersionName() { return mPlatformVersionName; } 129ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski void setPlatformBuildVersionName(const android::String8& name) { mPlatformVersionName = name; } 130282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 13178713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski const android::String8& getPrivateSymbolsPackage() const { return mPrivateSymbolsPackage; } 13278713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski 13378713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski void setPrivateSymbolsPackage(const android::String8& package) { 13478713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski mPrivateSymbolsPackage = package; 13578713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski } 13678713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski 137282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUTF16StringsOption() { 138282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mWantUTF16 || !isMinSdkAtLeast(SDK_FROYO); 139282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 140282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 141282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 142282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Input options. 143282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 14409384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski const android::Vector<const char*>& getAssetSourceDirs() const { return mAssetSourceDirs; } 14509384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski void addAssetSourceDir(const char* dir) { mAssetSourceDirs.insertAt(dir,0); } 146282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getCrunchedOutputDir() const { return mCrunchedOutputDir; } 147282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCrunchedOutputDir(const char* dir) { mCrunchedOutputDir = dir; } 148282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getProguardFile() const { return mProguardFile; } 149282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setProguardFile(const char* file) { mProguardFile = file; } 15086229cb622fccde8ab8cbe85eead91a34313a708Rohit Agrawal const char* getMainDexProguardFile() const { return mMainDexProguardFile; } 15186229cb622fccde8ab8cbe85eead91a34313a708Rohit Agrawal void setMainDexProguardFile(const char* file) { mMainDexProguardFile = file; } 152282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; } 153282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); } 154282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getAndroidManifestFile() const { return mAndroidManifestFile; } 155282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAndroidManifestFile(const char* file) { mAndroidManifestFile = file; } 156282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getPublicOutputFile() const { return mPublicOutputFile; } 157282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setPublicOutputFile(const char* file) { mPublicOutputFile = file; } 158282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getRClassDir() const { return mRClassDir; } 159282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setRClassDir(const char* dir) { mRClassDir = dir; } 160fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::String8& getConfigurations() const { return mConfigurations; } 161282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addConfigurations(const char* val) { if (mConfigurations.size() > 0) { mConfigurations.append(","); mConfigurations.append(val); } else { mConfigurations = val; } } 162fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::String8& getPreferredDensity() const { return mPreferredDensity; } 163fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski void setPreferredDensity(const char* val) { mPreferredDensity = val; } 164fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski void addSplitConfigurations(const char* val) { mPartialConfigurations.add(android::String8(val)); } 165fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::Vector<android::String8>& getSplitConfigurations() const { return mPartialConfigurations; } 166282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getResourceIntermediatesDir() const { return mResourceIntermediatesDir; } 167282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setResourceIntermediatesDir(const char* dir) { mResourceIntermediatesDir = dir; } 168833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::Vector<android::String8>& getPackageIncludes() const { return mPackageIncludes; } 169833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void addPackageInclude(const char* file) { mPackageIncludes.add(android::String8(file)); } 170282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getJarFiles() const { return mJarFiles; } 171282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addJarFile(const char* file) { mJarFiles.add(file); } 172282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getNoCompressExtensions() const { return mNoCompressExtensions; } 173282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); } 174833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void setFeatureOfPackage(const char* str) { mFeatureOfPackage = str; } 175833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::String8& getFeatureOfPackage() const { return mFeatureOfPackage; } 176833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void setFeatureAfterPackage(const char* str) { mFeatureAfterPackage = str; } 177833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::String8& getFeatureAfterPackage() const { return mFeatureAfterPackage; } 178282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 179282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getManifestMinSdkVersion() const { return mManifestMinSdkVersion; } 180282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setManifestMinSdkVersion(const char* val) { mManifestMinSdkVersion = val; } 181282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMinSdkVersion() const { return mMinSdkVersion; } 182282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMinSdkVersion(const char* val) { mMinSdkVersion = val; } 183282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getTargetSdkVersion() const { return mTargetSdkVersion; } 184282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; } 185282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMaxSdkVersion() const { return mMaxSdkVersion; } 186282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMaxSdkVersion(const char* val) { mMaxSdkVersion = val; } 187282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getVersionCode() const { return mVersionCode; } 188282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVersionCode(const char* val) { mVersionCode = val; } 189282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getVersionName() const { return mVersionName; } 190282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVersionName(const char* val) { mVersionName = val; } 191df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson bool getReplaceVersion() { return mReplaceVersion; } 192df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson void setReplaceVersion(bool val) { mReplaceVersion = val; } 19354de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski const android::String8& getRevisionCode() { return mRevisionCode; } 19454de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski void setRevisionCode(const char* val) { mRevisionCode = android::String8(val); } 195282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getCustomPackage() const { return mCustomPackage; } 196282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCustomPackage(const char* val) { mCustomPackage = val; } 197282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getExtraPackages() const { return mExtraPackages; } 198282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setExtraPackages(const char* val) { mExtraPackages = val; } 199282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMaxResVersion() const { return mMaxResVersion; } 200282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMaxResVersion(const char * val) { mMaxResVersion = val; } 201282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getDebugMode() const { return mDebugMode; } 202282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setDebugMode(bool val) { mDebugMode = val; } 203282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getNonConstantId() const { return mNonConstantId; } 204282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setNonConstantId(bool val) { mNonConstantId = val; } 2055892248580859620db90d5ef2e3c2f48531933faAdrian Roos bool getSkipSymbolsWithoutDefaultLocalization() const { return mSkipSymbolsWithoutDefaultLocalization; } 2065892248580859620db90d5ef2e3c2f48531933faAdrian Roos void setSkipSymbolsWithoutDefaultLocalization(bool val) { mSkipSymbolsWithoutDefaultLocalization = val; } 207282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getProduct() const { return mProduct; } 208282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setProduct(const char * val) { mProduct = val; } 209282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setUseCrunchCache(bool val) { mUseCrunchCache = val; } 210282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUseCrunchCache() const { return mUseCrunchCache; } 211282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getOutputTextSymbols() const { return mOutputTextSymbols; } 212282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setOutputTextSymbols(const char* val) { mOutputTextSymbols = val; } 213282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getSingleCrunchInputFile() const { return mSingleCrunchInputFile; } 214282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setSingleCrunchInputFile(const char* val) { mSingleCrunchInputFile = val; } 215282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getSingleCrunchOutputFile() const { return mSingleCrunchOutputFile; } 216282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setSingleCrunchOutputFile(const char* val) { mSingleCrunchOutputFile = val; } 217de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski bool getBuildSharedLibrary() const { return mBuildSharedLibrary; } 218de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski void setBuildSharedLibrary(bool val) { mBuildSharedLibrary = val; } 219a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai bool getBuildAppAsSharedLibrary() const { return mBuildAppAsSharedLibrary; } 220a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai void setBuildAppAsSharedLibrary(bool val) { mBuildAppAsSharedLibrary = val; } 2216e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski void setNoVersionVectors(bool val) { mNoVersionVectors = val; } 2226e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski bool getNoVersionVectors() const { return mNoVersionVectors; } 2234d35cca96ce55eb29d1948086214f91ae94e9adbYuichi Araki void setNoVersionTransitions(bool val) { mNoVersionTransitions = val; } 2244d35cca96ce55eb29d1948086214f91ae94e9adbYuichi Araki bool getNoVersionTransitions() const { return mNoVersionTransitions; } 225282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 226282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 227282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Set and get the file specification. 228282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 229282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Note this does NOT make a copy of argv. 230282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 231282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setFileSpec(char* const argv[], int argc) { 232282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc = argc; 233282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgv = argv; 234282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 235282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getFileSpecCount(void) const { return mArgc; } 236282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getFileSpecEntry(int idx) const { return mArgv[idx]; } 237282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void eatArgs(int n) { 238282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (n > mArgc) n = mArgc; 239282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgv += n; 240282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc -= n; 241282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 242282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 243282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#if 0 244282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 245282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Package count. Nothing to do with anything else here; this is 246282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * just a convenient place to stuff it so we don't have to pass it 247282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * around everywhere. 248282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 249282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getPackageCount(void) const { return mPackageCount; } 250282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setPackageCount(int val) { mPackageCount = val; } 251282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif 252282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 253282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* Certain features may only be available on a specific SDK level or 254282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * above. SDK levels that have a non-numeric identifier are assumed 255282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * to be newer than any SDK level that has a number designated. 256282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 25748efde4fb14cfe160747a8148b8e1a810c8f1c6eMatt Sarett bool isMinSdkAtLeast(int desired) const { 258282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* If the application specifies a minSdkVersion in the manifest 259282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * then use that. Otherwise, check what the user specified on 260282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the command line. If neither, it's not available since 261282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the minimum SDK version is assumed to be 1. 262282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 263282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char *minVer; 264282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (mManifestMinSdkVersion != NULL) { 265282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski minVer = mManifestMinSdkVersion; 266282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else if (mMinSdkVersion != NULL) { 267282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski minVer = mMinSdkVersion; 268282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else { 269282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 270282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 271282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 272282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski char *end; 273282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int minSdkNum = (int)strtol(minVer, &end, 0); 274282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (*end == '\0') { 275282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (minSdkNum < desired) { 276282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 277282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 278282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 279282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return true; 280282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 281282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 282282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 283282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* commands & modifiers */ 284282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Command mCmd; 285282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mVerbose; 286282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mAndroidList; 287282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mForce; 288282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mGrayscaleTolerance; 289282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mMakePackageDirs; 290282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mUpdate; 291282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mExtending; 292282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mRequireLocalization; 293a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin short mPseudolocalize; 294282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mWantUTF16; 295282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mValues; 296282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mIncludeMetaData; 297282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mCompressionMethod; 298282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mJunkPath; 299282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mOutputAPKFile; 300282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mManifestPackageNameOverride; 301282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mInstrumentationPackageNameOverride; 302282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mAutoAddOverlay; 303282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mGenDependencies; 3046e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski bool mNoVersionVectors; 3054d35cca96ce55eb29d1948086214f91ae94e9adbYuichi Araki bool mNoVersionTransitions; 306282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mCrunchedOutputDir; 307282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mProguardFile; 30886229cb622fccde8ab8cbe85eead91a34313a708Rohit Agrawal const char* mMainDexProguardFile; 309282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mAndroidManifestFile; 310282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mPublicOutputFile; 311282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mRClassDir; 312282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mResourceIntermediatesDir; 313282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::String8 mConfigurations; 314fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski android::String8 mPreferredDensity; 315fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski android::Vector<android::String8> mPartialConfigurations; 316833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::Vector<android::String8> mPackageIncludes; 317282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mJarFiles; 318282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mNoCompressExtensions; 31909384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski android::Vector<const char*> mAssetSourceDirs; 320282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mResourceSourceDirs; 321282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 322833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::String8 mFeatureOfPackage; 323833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::String8 mFeatureAfterPackage; 32454de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski android::String8 mRevisionCode; 325282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mManifestMinSdkVersion; 326282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMinSdkVersion; 327282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mTargetSdkVersion; 328282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMaxSdkVersion; 329282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mVersionCode; 330282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mVersionName; 331df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson bool mReplaceVersion; 332282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mCustomPackage; 333282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mExtraPackages; 334282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMaxResVersion; 335282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mDebugMode; 336282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mNonConstantId; 3375892248580859620db90d5ef2e3c2f48531933faAdrian Roos bool mSkipSymbolsWithoutDefaultLocalization; 338282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mProduct; 339282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mUseCrunchCache; 340282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mErrorOnFailedInsert; 341cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang bool mErrorOnMissingConfigEntry; 342282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mOutputTextSymbols; 343282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mSingleCrunchInputFile; 344282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mSingleCrunchOutputFile; 345de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski bool mBuildSharedLibrary; 346a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai bool mBuildAppAsSharedLibrary; 347ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski android::String8 mPlatformVersionCode; 348ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski android::String8 mPlatformVersionName; 34978713998f94a2cc2562aa0ae7761bbc563d8eafaAdam Lesinski android::String8 mPrivateSymbolsPackage; 350282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 351282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* file specification */ 352282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mArgc; 353282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski char* const* mArgv; 354282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 355282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#if 0 356282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* misc stuff */ 357282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mPackageCount; 358282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif 359282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 360282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 361282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 362282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif // __BUNDLE_H 363