mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-79960 Set minSdkVersion attribute automatically when creating Android project
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user