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), 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mCrunchedOutputDir(NULL), mProguardFile(NULL), 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mAndroidManifestFile(NULL), mPublicOutputFile(NULL), 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL), 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL), 62df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mVersionCode(NULL), mVersionName(NULL), mReplaceVersion(false), mCustomPackage(NULL), 63df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mExtraPackages(NULL), mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), 645892248580859620db90d5ef2e3c2f48531933faAdrian Roos mSkipSymbolsWithoutDefaultLocalization(false), 65df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mProduct(NULL), mUseCrunchCache(false), mErrorOnFailedInsert(false), 66df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson mErrorOnMissingConfigEntry(false), mOutputTextSymbols(NULL), 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mSingleCrunchInputFile(NULL), mSingleCrunchOutputFile(NULL), 68de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski mBuildSharedLibrary(false), 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc(0), mArgv(NULL) 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski {} 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ~Bundle(void) {} 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Set the command value. Returns "false" if it was previously set. 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Command getCommand(void) const { return mCmd; } 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCommand(Command cmd) { mCmd = cmd; } 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Command modifiers. Not all modifiers are appropriate for all 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * commands. 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getVerbose(void) const { return mVerbose; } 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVerbose(bool val) { mVerbose = val; } 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getAndroidList(void) const { return mAndroidList; } 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAndroidList(bool val) { mAndroidList = val; } 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getForce(void) const { return mForce; } 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setForce(bool val) { mForce = val; } 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setGrayscaleTolerance(int val) { mGrayscaleTolerance = val; } 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getGrayscaleTolerance() const { return mGrayscaleTolerance; } 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getMakePackageDirs(void) const { return mMakePackageDirs; } 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMakePackageDirs(bool val) { mMakePackageDirs = val; } 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUpdate(void) const { return mUpdate; } 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setUpdate(bool val) { mUpdate = val; } 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getExtending(void) const { return mExtending; } 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setExtending(bool val) { mExtending = val; } 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getRequireLocalization(void) const { return mRequireLocalization; } 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setRequireLocalization(bool val) { mRequireLocalization = val; } 99a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin short getPseudolocalize(void) const { return mPseudolocalize; } 100a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin void setPseudolocalize(short val) { mPseudolocalize = val; } 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setWantUTF16(bool val) { mWantUTF16 = val; } 102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getValues(void) const { return mValues; } 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setValues(bool val) { mValues = val; } 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getIncludeMetaData(void) const { return mIncludeMetaData; } 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setIncludeMetaData(bool val) { mIncludeMetaData = val; } 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getCompressionMethod(void) const { return mCompressionMethod; } 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCompressionMethod(int val) { mCompressionMethod = val; } 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getJunkPath(void) const { return mJunkPath; } 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setJunkPath(bool val) { mJunkPath = val; } 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getOutputAPKFile() const { return mOutputAPKFile; } 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setOutputAPKFile(const char* val) { mOutputAPKFile = val; } 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getManifestPackageNameOverride() const { return mManifestPackageNameOverride; } 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setManifestPackageNameOverride(const char * val) { mManifestPackageNameOverride = val; } 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getInstrumentationPackageNameOverride() const { return mInstrumentationPackageNameOverride; } 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setInstrumentationPackageNameOverride(const char * val) { mInstrumentationPackageNameOverride = val; } 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getAutoAddOverlay() { return mAutoAddOverlay; } 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAutoAddOverlay(bool val) { mAutoAddOverlay = val; } 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getGenDependencies() { return mGenDependencies; } 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setGenDependencies(bool val) { mGenDependencies = val; } 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getErrorOnFailedInsert() { return mErrorOnFailedInsert; } 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setErrorOnFailedInsert(bool val) { mErrorOnFailedInsert = val; } 122cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang bool getErrorOnMissingConfigEntry() { return mErrorOnMissingConfigEntry; } 123cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang void setErrorOnMissingConfigEntry(bool val) { mErrorOnMissingConfigEntry = val; } 124ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski const android::String8& getPlatformBuildVersionCode() { return mPlatformVersionCode; } 125ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski void setPlatformBuildVersionCode(const android::String8& code) { mPlatformVersionCode = code; } 126ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski const android::String8& getPlatformBuildVersionName() { return mPlatformVersionName; } 127ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski void setPlatformBuildVersionName(const android::String8& name) { mPlatformVersionName = name; } 128282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 129282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUTF16StringsOption() { 130282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mWantUTF16 || !isMinSdkAtLeast(SDK_FROYO); 131282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 132282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 133282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 134282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Input options. 135282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 13609384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski const android::Vector<const char*>& getAssetSourceDirs() const { return mAssetSourceDirs; } 13709384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski void addAssetSourceDir(const char* dir) { mAssetSourceDirs.insertAt(dir,0); } 138282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getCrunchedOutputDir() const { return mCrunchedOutputDir; } 139282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCrunchedOutputDir(const char* dir) { mCrunchedOutputDir = dir; } 140282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getProguardFile() const { return mProguardFile; } 141282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setProguardFile(const char* file) { mProguardFile = file; } 142282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; } 143282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); } 144282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getAndroidManifestFile() const { return mAndroidManifestFile; } 145282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setAndroidManifestFile(const char* file) { mAndroidManifestFile = file; } 146282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getPublicOutputFile() const { return mPublicOutputFile; } 147282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setPublicOutputFile(const char* file) { mPublicOutputFile = file; } 148282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getRClassDir() const { return mRClassDir; } 149282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setRClassDir(const char* dir) { mRClassDir = dir; } 150fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::String8& getConfigurations() const { return mConfigurations; } 151282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addConfigurations(const char* val) { if (mConfigurations.size() > 0) { mConfigurations.append(","); mConfigurations.append(val); } else { mConfigurations = val; } } 152fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::String8& getPreferredDensity() const { return mPreferredDensity; } 153fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski void setPreferredDensity(const char* val) { mPreferredDensity = val; } 154fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski void addSplitConfigurations(const char* val) { mPartialConfigurations.add(android::String8(val)); } 155fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski const android::Vector<android::String8>& getSplitConfigurations() const { return mPartialConfigurations; } 156282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getResourceIntermediatesDir() const { return mResourceIntermediatesDir; } 157282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setResourceIntermediatesDir(const char* dir) { mResourceIntermediatesDir = dir; } 158833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::Vector<android::String8>& getPackageIncludes() const { return mPackageIncludes; } 159833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void addPackageInclude(const char* file) { mPackageIncludes.add(android::String8(file)); } 160282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getJarFiles() const { return mJarFiles; } 161282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addJarFile(const char* file) { mJarFiles.add(file); } 162282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const android::Vector<const char*>& getNoCompressExtensions() const { return mNoCompressExtensions; } 163282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); } 164833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void setFeatureOfPackage(const char* str) { mFeatureOfPackage = str; } 165833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::String8& getFeatureOfPackage() const { return mFeatureOfPackage; } 166833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski void setFeatureAfterPackage(const char* str) { mFeatureAfterPackage = str; } 167833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski const android::String8& getFeatureAfterPackage() const { return mFeatureAfterPackage; } 168282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 169282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getManifestMinSdkVersion() const { return mManifestMinSdkVersion; } 170282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setManifestMinSdkVersion(const char* val) { mManifestMinSdkVersion = val; } 171282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMinSdkVersion() const { return mMinSdkVersion; } 172282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMinSdkVersion(const char* val) { mMinSdkVersion = val; } 173282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getTargetSdkVersion() const { return mTargetSdkVersion; } 174282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; } 175282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMaxSdkVersion() const { return mMaxSdkVersion; } 176282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMaxSdkVersion(const char* val) { mMaxSdkVersion = val; } 177282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getVersionCode() const { return mVersionCode; } 178282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVersionCode(const char* val) { mVersionCode = val; } 179282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getVersionName() const { return mVersionName; } 180282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setVersionName(const char* val) { mVersionName = val; } 181df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson bool getReplaceVersion() { return mReplaceVersion; } 182df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson void setReplaceVersion(bool val) { mReplaceVersion = val; } 18354de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski const android::String8& getRevisionCode() { return mRevisionCode; } 18454de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski void setRevisionCode(const char* val) { mRevisionCode = android::String8(val); } 185282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getCustomPackage() const { return mCustomPackage; } 186282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setCustomPackage(const char* val) { mCustomPackage = val; } 187282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getExtraPackages() const { return mExtraPackages; } 188282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setExtraPackages(const char* val) { mExtraPackages = val; } 189282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getMaxResVersion() const { return mMaxResVersion; } 190282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setMaxResVersion(const char * val) { mMaxResVersion = val; } 191282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getDebugMode() const { return mDebugMode; } 192282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setDebugMode(bool val) { mDebugMode = val; } 193282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getNonConstantId() const { return mNonConstantId; } 194282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setNonConstantId(bool val) { mNonConstantId = val; } 1955892248580859620db90d5ef2e3c2f48531933faAdrian Roos bool getSkipSymbolsWithoutDefaultLocalization() const { return mSkipSymbolsWithoutDefaultLocalization; } 1965892248580859620db90d5ef2e3c2f48531933faAdrian Roos void setSkipSymbolsWithoutDefaultLocalization(bool val) { mSkipSymbolsWithoutDefaultLocalization = val; } 197282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getProduct() const { return mProduct; } 198282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setProduct(const char * val) { mProduct = val; } 199282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setUseCrunchCache(bool val) { mUseCrunchCache = val; } 200282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool getUseCrunchCache() const { return mUseCrunchCache; } 201282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getOutputTextSymbols() const { return mOutputTextSymbols; } 202282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setOutputTextSymbols(const char* val) { mOutputTextSymbols = val; } 203282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getSingleCrunchInputFile() const { return mSingleCrunchInputFile; } 204282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setSingleCrunchInputFile(const char* val) { mSingleCrunchInputFile = val; } 205282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getSingleCrunchOutputFile() const { return mSingleCrunchOutputFile; } 206282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setSingleCrunchOutputFile(const char* val) { mSingleCrunchOutputFile = val; } 207de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski bool getBuildSharedLibrary() const { return mBuildSharedLibrary; } 208de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski void setBuildSharedLibrary(bool val) { mBuildSharedLibrary = val; } 2096e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski void setNoVersionVectors(bool val) { mNoVersionVectors = val; } 2106e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski bool getNoVersionVectors() const { return mNoVersionVectors; } 211282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 212282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 213282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Set and get the file specification. 214282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 215282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Note this does NOT make a copy of argv. 216282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 217282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setFileSpec(char* const argv[], int argc) { 218282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc = argc; 219282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgv = argv; 220282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 221282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getFileSpecCount(void) const { return mArgc; } 222282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* getFileSpecEntry(int idx) const { return mArgv[idx]; } 223282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void eatArgs(int n) { 224282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (n > mArgc) n = mArgc; 225282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgv += n; 226282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mArgc -= n; 227282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 228282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 229282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#if 0 230282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* 231282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Package count. Nothing to do with anything else here; this is 232282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * just a convenient place to stuff it so we don't have to pass it 233282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * around everywhere. 234282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 235282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int getPackageCount(void) const { return mPackageCount; } 236282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void setPackageCount(int val) { mPackageCount = val; } 237282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif 238282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 239282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* Certain features may only be available on a specific SDK level or 240282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * above. SDK levels that have a non-numeric identifier are assumed 241282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * to be newer than any SDK level that has a number designated. 242282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 243282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool isMinSdkAtLeast(int desired) { 244282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* If the application specifies a minSdkVersion in the manifest 245282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * then use that. Otherwise, check what the user specified on 246282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the command line. If neither, it's not available since 247282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * the minimum SDK version is assumed to be 1. 248282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 249282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char *minVer; 250282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (mManifestMinSdkVersion != NULL) { 251282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski minVer = mManifestMinSdkVersion; 252282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else if (mMinSdkVersion != NULL) { 253282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski minVer = mMinSdkVersion; 254282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else { 255282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 256282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 257282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 258282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski char *end; 259282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int minSdkNum = (int)strtol(minVer, &end, 0); 260282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (*end == '\0') { 261282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (minSdkNum < desired) { 262282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 263282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 264282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 265282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return true; 266282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 267282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 268282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 269282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* commands & modifiers */ 270282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Command mCmd; 271282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mVerbose; 272282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mAndroidList; 273282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mForce; 274282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mGrayscaleTolerance; 275282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mMakePackageDirs; 276282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mUpdate; 277282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mExtending; 278282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mRequireLocalization; 279a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin short mPseudolocalize; 280282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mWantUTF16; 281282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mValues; 282282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mIncludeMetaData; 283282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mCompressionMethod; 284282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mJunkPath; 285282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mOutputAPKFile; 286282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mManifestPackageNameOverride; 287282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mInstrumentationPackageNameOverride; 288282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mAutoAddOverlay; 289282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mGenDependencies; 2906e46056abc1c2803ed7f195bab169bbb1cacec6bAdam Lesinski bool mNoVersionVectors; 291282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mCrunchedOutputDir; 292282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mProguardFile; 293282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mAndroidManifestFile; 294282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mPublicOutputFile; 295282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mRClassDir; 296282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mResourceIntermediatesDir; 297282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::String8 mConfigurations; 298fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski android::String8 mPreferredDensity; 299fab50875b98e8274ac8ee44b38ba42521bbbf1f9Adam Lesinski android::Vector<android::String8> mPartialConfigurations; 300833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::Vector<android::String8> mPackageIncludes; 301282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mJarFiles; 302282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mNoCompressExtensions; 30309384303dea4f3f01d5682918d7bab9bf83a02b1Adam Lesinski android::Vector<const char*> mAssetSourceDirs; 304282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski android::Vector<const char*> mResourceSourceDirs; 305282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 306833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::String8 mFeatureOfPackage; 307833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1Adam Lesinski android::String8 mFeatureAfterPackage; 30854de298c01ad79fe7f5850eb7aefc2542dd8d5daAdam Lesinski android::String8 mRevisionCode; 309282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mManifestMinSdkVersion; 310282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMinSdkVersion; 311282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mTargetSdkVersion; 312282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMaxSdkVersion; 313282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mVersionCode; 314282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mVersionName; 315df08d1c24dbbc242978ee33416d1e54998f88915Jeff Davidson bool mReplaceVersion; 316282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mCustomPackage; 317282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mExtraPackages; 318282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mMaxResVersion; 319282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mDebugMode; 320282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mNonConstantId; 3215892248580859620db90d5ef2e3c2f48531933faAdrian Roos bool mSkipSymbolsWithoutDefaultLocalization; 322282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mProduct; 323282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mUseCrunchCache; 324282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool mErrorOnFailedInsert; 325cd28bd37ea2d88dd72930f032ca73daaad5744b4Ying Wang bool mErrorOnMissingConfigEntry; 326282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mOutputTextSymbols; 327282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mSingleCrunchInputFile; 328282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* mSingleCrunchOutputFile; 329de898ff42912bd7ca1bfb099cd439562496765a4Adam Lesinski bool mBuildSharedLibrary; 330ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski android::String8 mPlatformVersionCode; 331ad2d07d2d98a46babb2a9472413fe9ce5080ca76Adam Lesinski android::String8 mPlatformVersionName; 332282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 333282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* file specification */ 334282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mArgc; 335282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski char* const* mArgv; 336282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 337282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#if 0 338282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* misc stuff */ 339282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int mPackageCount; 340282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif 341282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 342282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 343282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 344282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif // __BUNDLE_H 345