IDEA-79960 Set minSdkVersion attribute automatically when creating Android project

This commit is contained in:
Eugene Kudelevsky
2012-03-21 16:14:38 +04:00
parent fa2eafbbed
commit a466a7f200
@@ -48,7 +48,10 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.ExternalChangeAction;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.xml.XmlTag;
import org.jetbrains.android.AndroidFileTemplateProvider;
import org.jetbrains.android.dom.manifest.Manifest;
import org.jetbrains.android.dom.resources.ResourceElement;
@@ -216,7 +219,7 @@ public class AndroidModuleBuilder extends JavaModuleBuilder {
return true;
}
IAndroidTarget target = platform.getTarget();
final IAndroidTarget target = platform.getTarget();
final String androidToolPath =
platform.getSdkData().getLocation() + File.separator + AndroidCommonUtils.toolPath(SdkConstants.androidCmdName());
@@ -328,6 +331,7 @@ public class AndroidModuleBuilder extends JavaModuleBuilder {
}
if (myProjectType == ProjectType.APPLICATION) {
assignApplicationName(facet);
configureManifest(facet, target);
createChildDirectoryIfNotExist(project, contentRoot, SdkConstants.FD_ASSETS);
createChildDirectoryIfNotExist(project, contentRoot, SdkConstants.FD_NATIVE_LIBS);
}
@@ -376,6 +380,29 @@ public class AndroidModuleBuilder extends JavaModuleBuilder {
return true;
}
private static void configureManifest(@NotNull AndroidFacet facet, @NotNull IAndroidTarget target) {
final Manifest manifest = facet.getManifest();
if (manifest == null) {
return;
}
final XmlTag manifestTag = manifest.getXmlTag();
if (manifestTag == null) {
return;
}
XmlTag usesSdkTag = manifestTag.createChildTag("uses-sdk", "", null, false);
if (usesSdkTag != null) {
usesSdkTag = manifestTag.addSubTag(usesSdkTag, true);
usesSdkTag.setAttribute("minSdkVersion", SdkConstants.NS_RESOURCES, target.getVersion().getApiString());
}
final PsiFile manifestFile = manifestTag.getContainingFile();
if (manifestFile != null) {
CodeStyleManager.getInstance(manifestFile.getProject()).reformat(manifestFile);
}
}
private void assignApplicationName(AndroidFacet facet) {
if (myApplicationName == null || myApplicationName.length() == 0) {
return;
@@ -402,8 +429,8 @@ public class AndroidModuleBuilder extends JavaModuleBuilder {
if (manifest != null) {
manifest.getApplication().getLabel().setValue(ResourceValue.referenceTo('@', null, "string", appNameResource));
}
}
}
private void createManifestFileAndAntFiles(Project project, VirtualFile contentRoot) {
VirtualFile existingManifestFile = contentRoot.findChild(FN_ANDROID_MANIFEST_XML);
@@ -515,6 +542,11 @@ public class AndroidModuleBuilder extends JavaModuleBuilder {
});
assignApplicationName(facet);
final AndroidPlatform platform = AndroidPlatform.parse(mySdk);
if (platform != null) {
configureManifest(facet, platform.getTarget());
}
}
}
};