19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Copyright 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// State bundle. Used to pass around stuff like command-line args. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef __BUNDLE_H 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define __BUNDLE_H 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdlib.h> 103b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Log.h> 113b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/threads.h> 123b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/List.h> 133b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Errors.h> 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/String8.h> 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/Vector.h> 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Things we can do. 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttypedef enum Command { 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandUnknown = 0, 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandVersion, 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandList, 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandDump, 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandAdd, 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandRemove, 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project kCommandPackage, 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} Command; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle of goodies, including everything specified on the command line. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Bundle { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle(void) 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : mCmd(kCommandUnknown), mVerbose(false), mAndroidList(false), 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mForce(false), mGrayscaleTolerance(0), mMakePackageDirs(false), 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mUpdate(false), mExtending(false), 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequireLocalization(false), mPseudolocalize(false), 40e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn mValues(false), 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCompressionMethod(0), mOutputAPKFile(NULL), 421553c82e084ac5763fb393857224145506771b99Joe Onorato mAssetSourceDir(NULL), mProguardFile(NULL), 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAndroidManifestFile(NULL), mPublicOutputFile(NULL), 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRClassDir(NULL), mResourceIntermediatesDir(NULL), 45fa6baa259d8b1af768e5c1d7ceb27184391f8fb1Dianne Hackborn mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL), 4663459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgc(0), mArgv(NULL) 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {} 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ~Bundle(void) {} 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the command value. Returns "false" if it was previously set. 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Command getCommand(void) const { return mCmd; } 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setCommand(Command cmd) { mCmd = cmd; } 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Command modifiers. Not all modifiers are appropriate for all 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * commands. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getVerbose(void) const { return mVerbose; } 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setVerbose(bool val) { mVerbose = val; } 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getAndroidList(void) const { return mAndroidList; } 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setAndroidList(bool val) { mAndroidList = val; } 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getForce(void) const { return mForce; } 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setForce(bool val) { mForce = val; } 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setGrayscaleTolerance(int val) { mGrayscaleTolerance = val; } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getGrayscaleTolerance() { return mGrayscaleTolerance; } 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getMakePackageDirs(void) const { return mMakePackageDirs; } 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setMakePackageDirs(bool val) { mMakePackageDirs = val; } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getUpdate(void) const { return mUpdate; } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setUpdate(bool val) { mUpdate = val; } 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getExtending(void) const { return mExtending; } 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setExtending(bool val) { mExtending = val; } 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getRequireLocalization(void) const { return mRequireLocalization; } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setRequireLocalization(bool val) { mRequireLocalization = val; } 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getPseudolocalize(void) const { return mPseudolocalize; } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPseudolocalize(bool val) { mPseudolocalize = val; } 79e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn bool getValues(void) const { return mValues; } 80e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn void setValues(bool val) { mValues = val; } 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getCompressionMethod(void) const { return mCompressionMethod; } 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setCompressionMethod(int val) { mCompressionMethod = val; } 8337c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker bool getJunkPath(void) const { return mJunkPath; } 8437c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker void setJunkPath(bool val) { mJunkPath = val; } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getOutputAPKFile() const { return mOutputAPKFile; } 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setOutputAPKFile(const char* val) { mOutputAPKFile = val; } 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8837c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker /* 8937c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker * Input options. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getAssetSourceDir() const { return mAssetSourceDir; } 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setAssetSourceDir(const char* dir) { mAssetSourceDir = dir; } 931553c82e084ac5763fb393857224145506771b99Joe Onorato const char* getProguardFile() const { return mProguardFile; } 941553c82e084ac5763fb393857224145506771b99Joe Onorato void setProguardFile(const char* file) { mProguardFile = file; } 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; } 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); } 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getAndroidManifestFile() const { return mAndroidManifestFile; } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setAndroidManifestFile(const char* file) { mAndroidManifestFile = file; } 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getPublicOutputFile() const { return mPublicOutputFile; } 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPublicOutputFile(const char* file) { mPublicOutputFile = file; } 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getRClassDir() const { return mRClassDir; } 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setRClassDir(const char* dir) { mRClassDir = dir; } 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getConfigurations() const { return mConfigurations.size() > 0 ? mConfigurations.string() : NULL; } 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addConfigurations(const char* val) { if (mConfigurations.size() > 0) { mConfigurations.append(","); mConfigurations.append(val); } else { mConfigurations = val; } } 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getResourceIntermediatesDir() const { return mResourceIntermediatesDir; } 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setResourceIntermediatesDir(const char* dir) { mResourceIntermediatesDir = dir; } 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getPackageIncludes() const { return mPackageIncludes; } 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addPackageInclude(const char* file) { mPackageIncludes.add(file); } 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getJarFiles() const { return mJarFiles; } 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addJarFile(const char* file) { mJarFiles.add(file); } 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const android::Vector<const char*>& getNoCompressExtensions() const { return mNoCompressExtensions; } 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); } 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 114a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getMinSdkVersion() const { return mMinSdkVersion; } 115a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setMinSdkVersion(const char* val) { mMinSdkVersion = val; } 116a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getTargetSdkVersion() const { return mTargetSdkVersion; } 117a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setTargetSdkVersion(const char* val) { mTargetSdkVersion = val; } 118a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getMaxSdkVersion() const { return mMaxSdkVersion; } 119a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setMaxSdkVersion(const char* val) { mMaxSdkVersion = val; } 120a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getVersionCode() const { return mVersionCode; } 121a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setVersionCode(const char* val) { mVersionCode = val; } 122a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* getVersionName() const { return mVersionName; } 123a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn void setVersionName(const char* val) { mVersionName = val; } 12463459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet const char* getCustomPackage() const { return mCustomPackage; } 12563459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet void setCustomPackage(const char* val) { mCustomPackage = val; } 12637c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set and get the file specification. 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Note this does NOT make a copy of argv. 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setFileSpec(char* const argv[], int argc) { 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgc = argc; 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgv = argv; 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getFileSpecCount(void) const { return mArgc; } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* getFileSpecEntry(int idx) const { return mArgv[idx]; } 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void eatArgs(int n) { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (n > mArgc) n = mArgc; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgv += n; 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mArgc -= n; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Package count. Nothing to do with anything else here; this is 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * just a convenient place to stuff it so we don't have to pass it 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * around everywhere. 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getPackageCount(void) const { return mPackageCount; } 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPackageCount(int val) { mPackageCount = val; } 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* commands & modifiers */ 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Command mCmd; 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mVerbose; 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mAndroidList; 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mForce; 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mGrayscaleTolerance; 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mMakePackageDirs; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mUpdate; 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mExtending; 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mRequireLocalization; 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mPseudolocalize; 166e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn bool mValues; 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mCompressionMethod; 16837c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker bool mJunkPath; 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mOutputAPKFile; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mAssetSourceDir; 1711553c82e084ac5763fb393857224145506771b99Joe Onorato const char* mProguardFile; 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mAndroidManifestFile; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mPublicOutputFile; 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mRClassDir; 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char* mResourceIntermediatesDir; 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::String8 mConfigurations; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mPackageIncludes; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mJarFiles; 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mNoCompressExtensions; 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project android::Vector<const char*> mResourceSourceDirs; 18137c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker 182a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mMinSdkVersion; 183a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mTargetSdkVersion; 184a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mMaxSdkVersion; 185a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mVersionCode; 186a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn const char* mVersionName; 18763459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet const char* mCustomPackage; 18837c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* file specification */ 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mArgc; 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char* const* mArgv; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* misc stuff */ 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mPackageCount; 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // __BUNDLE_H 200