OSDN Git Service

Force recompilation after library changes and fix some clean-up/refresh issue in...
authorXavier Ducrohet <xav@android.com>
Wed, 14 Jul 2010 01:40:29 +0000 (18:40 -0700)
committerXavier Ducrohet <xav@android.com>
Wed, 14 Jul 2010 01:47:34 +0000 (18:47 -0700)
One of the fix is that the gen folder is no longer deleted on clean (or full build)
which should reduce errors where eclipse complain the gen folder is missing
even though it's present.

Also move ProjectState into SDK as it's really only managed
by the SDK and it allows us to move its constructor to package private.

Change-Id: I321ac23f756652e7082297d2ef560a654e97cf67

18 files changed:
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/actions/MultiApkExportAction.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/BaseBuilder.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/PostCompilerBuilder.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/PreCompilerBuilder.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/ResourceManagerBuilder.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/LayoutReloadMonitor.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/manifest/pages/OverviewExportPart.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/LaunchShortcut.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectChooserHelper.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/properties/AndroidPropertyPage.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/properties/LibraryProperties.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/ProjectResources.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/ProjectState.java [moved from eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectState.java with 99% similarity]
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/actions/ExportAction.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/actions/ExportWizardAction.java
eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/export/KeyCheckPage.java

index f5876e9..6ff6d0b 100644 (file)
@@ -19,7 +19,7 @@ package com.android.ide.eclipse.adt.internal.actions;
 import com.android.ide.eclipse.adt.AdtPlugin;
 import com.android.ide.eclipse.adt.internal.build.PostCompilerHelper;
 import com.android.ide.eclipse.adt.internal.project.ProjectHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.ide.eclipse.adt.io.IFolderWrapper;
 import com.android.sdklib.SdkConstants;
index 32092f8..72e09c1 100644 (file)
@@ -39,7 +39,6 @@ import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.jdt.core.IJavaProject;
 import org.xml.sax.SAXException;
 
@@ -423,19 +422,34 @@ abstract class BaseBuilder extends IncrementalProjectBuilder {
     }
 
     /**
-     * Recursively delete all the derived resources.
+     * Recursively delete all the derived resources from a root resource. The root resource is not
+     * deleted.
+     * @param rootResource the root resource
+     * @param monitor a progress monitor.
+     * @throws CoreException
+     *
      */
-    protected void removeDerivedResources(IResource resource, IProgressMonitor monitor)
+    protected void removeDerivedResources(IResource rootResource, IProgressMonitor monitor)
             throws CoreException {
-        if (resource.exists()) {
-            if (resource.isDerived()) {
-                resource.delete(true, new SubProgressMonitor(monitor, 10));
-            } else if (resource.getType() == IResource.FOLDER) {
-                IFolder folder = (IFolder)resource;
+        removeDerivedResources(rootResource, false, monitor);
+    }
+
+    private void removeDerivedResources(IResource rootResource, boolean deleteRoot,
+            IProgressMonitor monitor)
+            throws CoreException {
+        if (rootResource.exists()) {
+            if (rootResource.getType() == IResource.FOLDER) {
+                IFolder folder = (IFolder)rootResource;
                 IResource[] members = folder.members();
                 for (IResource member : members) {
-                    removeDerivedResources(member, monitor);
+                    removeDerivedResources(member, true /*deleteRoot*/, monitor);
                 }
+            } else if (rootResource.isDerived()) {
+                rootResource.getLocation().toFile().delete();
+            }
+
+            if (deleteRoot) {
+                rootResource.getLocation().toFile().delete();
             }
         }
     }
index 539c8e3..8c8a15d 100644 (file)
@@ -22,7 +22,7 @@ import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs.BuildVerbosity;
 import com.android.ide.eclipse.adt.internal.project.ApkInstallManager;
 import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper;
 import com.android.ide.eclipse.adt.internal.project.ProjectHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.sdklib.SdkConstants;
 import com.android.sdklib.xml.AndroidManifest;
index e3a6715..0bd1789 100644 (file)
@@ -24,8 +24,8 @@ import com.android.ide.eclipse.adt.internal.project.AndroidManifestHelper;
 import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper;
 import com.android.ide.eclipse.adt.internal.project.FixLaunchConfig;
 import com.android.ide.eclipse.adt.internal.project.ProjectHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
 import com.android.ide.eclipse.adt.internal.project.XmlErrorHandler.BasicXmlErrorListener;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.ide.eclipse.adt.io.IFileWrapper;
 import com.android.ide.eclipse.adt.io.IFolderWrapper;
@@ -47,7 +47,6 @@ import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.jdt.core.IJavaProject;
@@ -252,6 +251,10 @@ public class PreCompilerBuilder extends BaseBuilder {
             if (kind == FULL_BUILD) {
                 AdtPlugin.printBuildToConsole(BuildVerbosity.VERBOSE, project,
                         Messages.Start_Full_Pre_Compiler);
+
+                // do some clean up.
+                doClean(project, monitor);
+
                 mMustCompileResources = true;
                 buildAidlCompilationList(project, sourceFolderPathList);
             } else {
@@ -478,15 +481,16 @@ public class PreCompilerBuilder extends BaseBuilder {
                     flc.start();
                 }
 
-                // now we delete the generated classes from their previous location
-                deleteObsoleteGeneratedClass(AndroidConstants.FN_RESOURCE_CLASS,
-                        mManifestPackage);
-                deleteObsoleteGeneratedClass(AndroidConstants.FN_MANIFEST_CLASS,
-                        mManifestPackage);
-
                 // record the new manifest package, and save it.
                 mManifestPackage = javaPackage;
                 saveProjectStringProperty(PROPERTY_PACKAGE, mManifestPackage);
+
+                // force a clean
+                doClean(project, monitor);
+                mMustCompileResources = true;
+                buildAidlCompilationList(project, sourceFolderPathList);
+
+                saveProjectBooleanProperty(PROPERTY_COMPILE_RESOURCES , mMustCompileResources);
             }
 
             if (mMustCompileResources) {
@@ -513,19 +517,26 @@ public class PreCompilerBuilder extends BaseBuilder {
     protected void clean(IProgressMonitor monitor) throws CoreException {
         super.clean(monitor);
 
-        // Get the project.
-        IProject project = getProject();
+        doClean(getProject(), monitor);
+        if (mGenFolder != null) {
+            mGenFolder.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+        }
+    }
 
+    private void doClean(IProject project, IProgressMonitor monitor) throws CoreException {
         AdtPlugin.printBuildToConsole(BuildVerbosity.VERBOSE, project,
                 Messages.Removing_Generated_Classes);
 
         // remove all the derived resources from the 'gen' source folder.
-        removeDerivedResources(mGenFolder, monitor);
+        if (mGenFolder != null) {
+            removeDerivedResources(mGenFolder, monitor);
+        }
 
         // Clear the project of the generic markers
         removeMarkersFromProject(project, AndroidConstants.MARKER_AAPT_COMPILE);
         removeMarkersFromProject(project, AndroidConstants.MARKER_XML);
         removeMarkersFromProject(project, AndroidConstants.MARKER_AIDL);
+
     }
 
     @Override
@@ -662,7 +673,7 @@ public class PreCompilerBuilder extends BaseBuilder {
         // we actually need to delete the manifest.java as it may become empty and
         // in this case aapt doesn't generate an empty one, but instead doesn't
         // touch it.
-        manifestJavaFile.delete(true, null);
+        manifestJavaFile.getLocation().toFile().delete();
 
         // launch aapt: create the command line
         ArrayList<String> array = new ArrayList<String>();
@@ -784,40 +795,6 @@ public class PreCompilerBuilder extends BaseBuilder {
     }
 
     /**
-     * Delete the a generated java class associated with the specified java package.
-     * @param filename Name of the generated file to remove.
-     * @param javaPackage the old java package
-     */
-    private void deleteObsoleteGeneratedClass(String filename, String javaPackage) {
-        if (javaPackage == null) {
-            return;
-        }
-
-        IPath packagePath = getJavaPackagePath(javaPackage);
-        IPath iPath = packagePath.append(filename);
-
-        // Find a matching resource object.
-        IResource javaFile = mGenFolder.findMember(iPath);
-        if (javaFile != null && javaFile.exists() && javaFile.getType() == IResource.FILE) {
-            try {
-                // delete
-                javaFile.delete(true, null);
-
-                // refresh parent
-                javaFile.getParent().refreshLocal(IResource.DEPTH_ONE, new NullProgressMonitor());
-
-            } catch (CoreException e) {
-                // failed to delete it, the user will have to delete it manually.
-                String message = String.format(Messages.Delete_Obsolete_Error,
-                        javaFile.getFullPath());
-                IProject project = getProject();
-                AdtPlugin.printErrorToConsole(project, message);
-                AdtPlugin.printErrorToConsole(project, e.getMessage());
-            }
-        }
-    }
-
-    /**
      * Creates a relative {@link IPath} from a java package.
      * @param javaPackageName the java package.
      */
@@ -951,10 +928,7 @@ public class PreCompilerBuilder extends BaseBuilder {
             if (javaFile.exists()) {
                 // This confirms the java file was generated by the builder,
                 // we can delete the aidlFile.
-                javaFile.delete(true, null);
-
-                // Refresh parent.
-                javaFile.getParent().refreshLocal(IResource.DEPTH_ONE, monitor);
+                javaFile.getLocation().toFile().delete();
             }
         }
 
index fe6ac8a..871b4b8 100644 (file)
@@ -198,7 +198,7 @@ public class ResourceManagerBuilder extends BaseBuilder {
                 javaProject.setRawClasspath(entries, new SubProgressMonitor(monitor, 10));
             }
 
-            // refresh sepcifcally the gen folder first, as it may break the build
+            // refresh specifically the gen folder first, as it may break the build
             // if it doesn't arrive in time then refresh the whole project as usual.
             genFolder.refreshLocal(IResource.DEPTH_ZERO, new SubProgressMonitor(monitor, 10));
             project.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 10));
index f36d001..ca58dce 100644 (file)
@@ -18,7 +18,6 @@ package com.android.ide.eclipse.adt.internal.editors.layout;
 
 import com.android.ide.eclipse.adt.AdtPlugin;
 import com.android.ide.eclipse.adt.AndroidConstants;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
 import com.android.ide.eclipse.adt.internal.resources.ResourceType;
 import com.android.ide.eclipse.adt.internal.resources.manager.GlobalProjectMonitor;
 import com.android.ide.eclipse.adt.internal.resources.manager.ResourceFile;
@@ -27,6 +26,7 @@ import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager;
 import com.android.ide.eclipse.adt.internal.resources.manager.GlobalProjectMonitor.IFileListener;
 import com.android.ide.eclipse.adt.internal.resources.manager.GlobalProjectMonitor.IResourceEventListener;
 import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager.IResourceListener;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 
 import org.eclipse.core.resources.IFile;
index 4c75a86..138f0b1 100644 (file)
@@ -19,7 +19,7 @@ package com.android.ide.eclipse.adt.internal.editors.manifest.pages;
 import com.android.ide.eclipse.adt.internal.editors.manifest.ManifestEditor;
 import com.android.ide.eclipse.adt.internal.editors.ui.SectionHelper.ManifestSectionPart;
 import com.android.ide.eclipse.adt.internal.project.ExportHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 
 import org.eclipse.core.resources.IFile;
index 432827e..3c72d01 100644 (file)
@@ -16,7 +16,7 @@
 
 package com.android.ide.eclipse.adt.internal.launch;
 
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 
 import org.eclipse.core.resources.IProject;
index b665a53..9c5fd1e 100644 (file)
@@ -19,6 +19,7 @@ package com.android.ide.eclipse.adt.internal.project;
 import com.android.ide.eclipse.adt.AdtPlugin;
 import com.android.ide.eclipse.adt.AndroidConstants;
 import com.android.ide.eclipse.adt.internal.sdk.LoadStatus;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.sdklib.IAndroidTarget;
 import com.android.sdklib.SdkConstants;
index aa5813a..2b80d31 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.ide.eclipse.adt.internal.project;
 
 import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper.IProjectFilter;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 
 import org.eclipse.core.resources.IProject;
index ba69977..554d64d 100644 (file)
@@ -17,7 +17,7 @@
 package com.android.ide.eclipse.adt.internal.properties;
 
 import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.sdklib.IAndroidTarget;
 import com.android.sdklib.SdkConstants;
index 1f5f2c6..666127e 100644 (file)
@@ -18,10 +18,10 @@ package com.android.ide.eclipse.adt.internal.properties;
 
 import com.android.ide.eclipse.adt.AdtPlugin;
 import com.android.ide.eclipse.adt.internal.project.ProjectChooserHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
 import com.android.ide.eclipse.adt.internal.project.ProjectChooserHelper.IProjectChooserFilter;
-import com.android.ide.eclipse.adt.internal.project.ProjectState.LibraryState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState.LibraryState;
 import com.android.sdklib.internal.project.ProjectProperties;
 import com.android.sdklib.internal.project.ProjectPropertiesWorkingCopy;
 
index fb00824..d3f1190 100644 (file)
@@ -16,7 +16,6 @@
 
 package com.android.ide.eclipse.adt.internal.resources.manager;
 
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
 import com.android.ide.eclipse.adt.internal.resources.IResourceRepository;
 import com.android.ide.eclipse.adt.internal.resources.ResourceItem;
 import com.android.ide.eclipse.adt.internal.resources.ResourceType;
@@ -24,6 +23,7 @@ import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfi
 import com.android.ide.eclipse.adt.internal.resources.configurations.LanguageQualifier;
 import com.android.ide.eclipse.adt.internal.resources.configurations.RegionQualifier;
 import com.android.ide.eclipse.adt.internal.resources.configurations.ResourceQualifier;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.ide.eclipse.adt.io.IFolderWrapper;
 import com.android.layoutlib.api.IResourceValue;
  * limitations under the License.
  */
 
-package com.android.ide.eclipse.adt.internal.project;
+package com.android.ide.eclipse.adt.internal.sdk;
 
 import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.sdklib.IAndroidTarget;
 import com.android.sdklib.internal.project.ApkSettings;
 import com.android.sdklib.internal.project.ProjectProperties;
@@ -173,7 +172,7 @@ public final class ProjectState {
      */
     private final ArrayList<ProjectState> mParentProjects = new ArrayList<ProjectState>();
 
-    public ProjectState(IProject project, ProjectProperties properties) {
+    ProjectState(IProject project, ProjectProperties properties) {
         if (project == null || properties == null) {
             throw new NullPointerException();
         }
index 9db385a..02b538e 100644 (file)
@@ -21,14 +21,13 @@ import com.android.ide.eclipse.adt.AdtPlugin;
 import com.android.ide.eclipse.adt.internal.project.AndroidClasspathContainerInitializer;
 import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper;
 import com.android.ide.eclipse.adt.internal.project.ProjectHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
-import com.android.ide.eclipse.adt.internal.project.ProjectState.LibraryDifference;
-import com.android.ide.eclipse.adt.internal.project.ProjectState.LibraryState;
 import com.android.ide.eclipse.adt.internal.resources.manager.GlobalProjectMonitor;
 import com.android.ide.eclipse.adt.internal.resources.manager.GlobalProjectMonitor.IFileListener;
 import com.android.ide.eclipse.adt.internal.resources.manager.GlobalProjectMonitor.IProjectListener;
 import com.android.ide.eclipse.adt.internal.resources.manager.GlobalProjectMonitor.IResourceEventListener;
 import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData.LayoutBridge;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState.LibraryDifference;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState.LibraryState;
 import com.android.prefs.AndroidLocation.AndroidLocationException;
 import com.android.sdklib.AndroidVersion;
 import com.android.sdklib.IAndroidTarget;
@@ -50,6 +49,7 @@ import org.eclipse.core.resources.IProjectDescription;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceDelta;
 import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
@@ -1004,6 +1004,7 @@ public final class Sdk  {
     private interface ActionBundle {
         enum BundleType { LINK_LIBRARY, UNLINK_LIBRARY };
         BundleType getType();
+        IProject getProject();
     };
 
     /**
@@ -1028,6 +1029,10 @@ public final class Sdk  {
             return BundleType.LINK_LIBRARY;
         }
 
+        public IProject getProject() {
+            return mProject;
+        }
+
         @Override
         public String toString() {
             return String.format("LinkLibraryBundle: %1$s (%2$s) > %3$s", //$NON-NLS-1$
@@ -1056,6 +1061,10 @@ public final class Sdk  {
         public BundleType getType() {
             return BundleType.UNLINK_LIBRARY;
         }
+
+        public IProject getProject() {
+            return mProject.getProject();
+        }
     }
 
     private final ArrayList<ActionBundle> mActionBundleQueue = new ArrayList<ActionBundle>();
@@ -1107,6 +1116,11 @@ public final class Sdk  {
                                     unlinkLibrary((UnlinkLibraryBundle) bundle, monitor);
                                     break;
                             }
+
+                            // force a recompile
+                            bundle.getProject().build(
+                                    IncrementalProjectBuilder.FULL_BUILD, monitor);
+
                         } catch (Exception e) {
                             AdtPlugin.log(e, "Failed to process bundle: %1$s", //$NON-NLS-1$
                                     bundle.toString());
index c331680..40edc5e 100644 (file)
@@ -17,7 +17,7 @@
 package com.android.ide.eclipse.adt.internal.wizards.actions;
 
 import com.android.ide.eclipse.adt.internal.project.ExportHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 
 import org.eclipse.core.resources.IProject;
index cfdab0f..dc5dbeb 100644 (file)
@@ -16,7 +16,7 @@
 
 package com.android.ide.eclipse.adt.internal.wizards.actions;
 
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard;
 
index d9e0205..d247b78 100644 (file)
@@ -17,7 +17,7 @@
 package com.android.ide.eclipse.adt.internal.wizards.export;
 
 import com.android.ide.eclipse.adt.internal.project.ProjectHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectState;
+import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
 import com.android.ide.eclipse.adt.internal.sdk.Sdk;
 import com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.ExportWizardPage;
 import com.android.sdklib.internal.project.ApkSettings;