Home | History | Annotate | Download | only in adt
      1 /*
      2  * Copyright (C) 2007 The Android Open Source Project
      3  *
      4  * Licensed under the Eclipse Public License, Version 1.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.eclipse.org/org/documents/epl-v10.php
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.ide.eclipse.adt;
     18 
     19 import static com.android.SdkConstants.DOT_AIDL;
     20 import static com.android.SdkConstants.DOT_DEP;
     21 import static com.android.SdkConstants.DOT_FS;
     22 import static com.android.SdkConstants.DOT_JAVA;
     23 import static com.android.SdkConstants.DOT_RS;
     24 
     25 import com.android.SdkConstants;
     26 import com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder;
     27 import com.android.ide.eclipse.adt.internal.build.builders.PreCompilerBuilder;
     28 import com.android.ide.eclipse.adt.internal.build.builders.ResourceManagerBuilder;
     29 
     30 import org.eclipse.jdt.core.JavaCore;
     31 
     32 import java.io.File;
     33 
     34 /**
     35  * Constant definition class.<br>
     36  * <br>
     37  * Most constants have a prefix defining the content.
     38  * <ul>
     39  * <li><code>WS_</code> Workspace path constant. Those are absolute paths,
     40  * from the project root.</li>
     41  * <li><code>OS_</code> OS path constant. These paths are different depending on the platform.</li>
     42  * <li><code>FN_</code> File name constant.</li>
     43  * <li><code>FD_</code> Folder name constant.</li>
     44  * <li><code>MARKER_</code> Resource Marker Ids constant.</li>
     45  * <li><code>EXT_</code> File extension constant. This does NOT include a dot.</li>
     46  * <li><code>DOT_</code> File extension constant. This start with a dot.</li>
     47  * <li><code>RE_</code> Regexp constant.</li>
     48  * <li><code>NS_</code> Namespace constant.</li>
     49  * <li><code>CLASS_</code> Fully qualified class name.</li>
     50  * </ul>
     51  *
     52  */
     53 public class AdtConstants {
     54     /**
     55      * The old Editors Plugin ID. It is still used in some places for compatibility.
     56      * Please do not use for new features.
     57      */
     58     public static final String EDITORS_NAMESPACE = "com.android.ide.eclipse.editors"; //$NON-NLS-1$
     59 
     60     /** Nature of default Android projects */
     61     public final static String NATURE_DEFAULT = "com.android.ide.eclipse.adt.AndroidNature"; //$NON-NLS-1$
     62 
     63     /** The container id for the android framework jar file */
     64     public final static String CONTAINER_FRAMEWORK =
     65         "com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"; //$NON-NLS-1$
     66 
     67     /** The container id for the libraries */
     68     public final static String CONTAINER_PRIVATE_LIBRARIES = "com.android.ide.eclipse.adt.LIBRARIES"; //$NON-NLS-1$
     69     public final static String CONTAINER_DEPENDENCIES = "com.android.ide.eclipse.adt.DEPENDENCIES";
     70 
     71 
     72     /** Separator for workspace path, i.e. "/". */
     73     public final static String WS_SEP = "/"; //$NON-NLS-1$
     74     /** Separator character for workspace path, i.e. '/'. */
     75     public final static char WS_SEP_CHAR = '/';
     76 
     77     /** aapt's proguard output */
     78     public final static String FN_AAPT_PROGUARD = "proguard.txt"; //$NON-NLS-1$
     79 
     80     /** Temporary packaged resources file name, i.e. "resources.ap_" */
     81     public final static String FN_RESOURCES_AP_ = "resources.ap_"; //$NON-NLS-1$
     82 
     83     public final static String FN_TRACEVIEW =
     84         (SdkConstants.CURRENT_PLATFORM == SdkConstants.PLATFORM_WINDOWS) ?
     85             "traceview.bat" : "traceview"; //$NON-NLS-1$ //$NON-NLS-2$
     86 
     87     public final static String FN_HPROF_CONV =
     88         (SdkConstants.CURRENT_PLATFORM == SdkConstants.PLATFORM_WINDOWS) ?
     89             "hprof-conv.exe" : "hprof-conv"; //$NON-NLS-1$ //$NON-NLS-2$
     90 
     91     /** Absolute path of the workspace root, i.e. "/" */
     92     public final static String WS_ROOT = WS_SEP;
     93 
     94     /** Absolute path of the resource folder, e.g. "/res".<br> This is a workspace path. */
     95     public final static String WS_RESOURCES = WS_SEP + SdkConstants.FD_RESOURCES;
     96 
     97     /** Absolute path of the crunch cache folder, e.g. "/bin/res".<br> This is a workspace path. */
     98     public final static String WS_CRUNCHCACHE = WS_SEP + SdkConstants.FD_OUTPUT
     99                                                        + WS_SEP + SdkConstants.FD_RESOURCES;
    100 
    101     /** Absolute path of the resource folder, e.g. "/assets".<br> This is a workspace path. */
    102     public final static String WS_ASSETS = WS_SEP + SdkConstants.FD_ASSETS;
    103 
    104     /** Absolute path of the layout folder, e.g. "/res/layout".<br> This is a workspace path. */
    105     public final static String WS_LAYOUTS = WS_RESOURCES + WS_SEP + SdkConstants.FD_RES_LAYOUT;
    106 
    107     /** Leaf of the javaDoc folder. Does not start with a separator. */
    108     public final static String WS_JAVADOC_FOLDER_LEAF = SdkConstants.FD_DOCS + "/" + //$NON-NLS-1$
    109             SdkConstants.FD_DOCS_REFERENCE;
    110 
    111     /** Path of the samples directory relative to the sdk folder.
    112      *  This is an OS path, ending with a separator.
    113      *  FIXME: remove once the NPW is fixed. */
    114     public final static String OS_SDK_SAMPLES_FOLDER = SdkConstants.FD_SAMPLES + File.separator;
    115 
    116     public final static String RE_DOT = "\\."; //$NON-NLS-1$
    117     /** Regexp for java extension, i.e. "\.java$" */
    118     public final static String RE_JAVA_EXT = "\\" + DOT_JAVA + "$"; //$NON-NLS-1$ //$NON-NLS-2$
    119     /** Regexp for aidl extension, i.e. "\.aidl$" */
    120     public final static String RE_AIDL_EXT = "\\" + DOT_AIDL + "$"; //$NON-NLS-1$ //$NON-NLS-2$
    121     /** Regexp for rs extension, i.e. "\.rs$" */
    122     public final static String RE_RS_EXT = "\\" + DOT_RS + "$"; //$NON-NLS-1$ //$NON-NLS-2$
    123     /** Regexp for rs extension, i.e. "\.fs$" */
    124     public final static String RE_FS_EXT = "\\" + DOT_FS + "$"; //$NON-NLS-1$ //$NON-NLS-2$
    125     /** Regexp for .d extension, i.e. "\.d$" */
    126     public final static String RE_DEP_EXT = "\\" + DOT_DEP + "$"; //$NON-NLS-1$ //$NON-NLS-2$
    127 
    128     /**
    129      * Namespace pattern for the custom resource XML, i.e. "http://schemas.android.com/apk/res/%s"
    130      * <p/>
    131      * This string contains a %s. It must be combined with the desired Java package, e.g.:
    132      * <pre>
    133      *    String.format(SdkConstants.NS_CUSTOM_RESOURCES, "android");
    134      *    String.format(SdkConstants.NS_CUSTOM_RESOURCES, "com.test.mycustomapp");
    135      * </pre>
    136      *
    137      * Note: if you need an URI specifically for the "android" namespace, consider using
    138      * {@link SdkConstants#NS_RESOURCES} instead.
    139      */
    140     // TODO rename NS_CUSTOM_RESOURCES to NS_CUSTOM_RESOURCES_S (denoting it takes a %s) in
    141     // another CL.
    142     public final static String NS_CUSTOM_RESOURCES = "http://schemas.android.com/apk/res/%1$s"; //$NON-NLS-1$
    143 
    144     /** The old common plug-in ID. Please do not use for new features. */
    145     private static final String LEGACY_PLUGIN_ID = "com.android.ide.eclipse.common"; //$NON-NLS-1$
    146 
    147     /** Generic marker for ADT errors, only to be used in the {@link ResourceManagerBuilder} */
    148     public final static String MARKER_ADT = AdtPlugin.PLUGIN_ID + ".adtProblem"; //$NON-NLS-1$
    149 
    150     /** Marker for Android Target errors.
    151      * This is not cleared on each build like other markers. Instead, it's cleared
    152      * when an AndroidClasspathContainerInitializer has succeeded in creating an
    153      * AndroidClasspathContainer */
    154     public final static String MARKER_TARGET = AdtPlugin.PLUGIN_ID + ".targetProblem"; //$NON-NLS-1$
    155     /** Marker for Android Build Tools errors.
    156      * This is not cleared on each build like other markers. Instead, it's cleared
    157      * when the build tools are setup in the projectState. */
    158     public final static String MARKER_BUILD_TOOLS = AdtPlugin.PLUGIN_ID + ".buildToolsProblem"; //$NON-NLS-1$
    159     /** Marker for Android Dependency errors.
    160      * This is not cleared on each build like other markers. Instead, it's cleared
    161      * when a LibraryClasspathContainerInitializer has succeeded in creating a
    162      * LibraryClasspathContainer */
    163     public final static String MARKER_DEPENDENCY = AdtPlugin.PLUGIN_ID + ".dependencyProblem"; //$NON-NLS-1$
    164 
    165 
    166     /** aapt marker error when running the compile command, only to be used
    167      * in {@link PreCompilerBuilder} */
    168     public final static String MARKER_AAPT_COMPILE = LEGACY_PLUGIN_ID + ".aaptProblem"; //$NON-NLS-1$
    169 
    170     /** XML marker error, only to be used in {@link PreCompilerBuilder} */
    171     public final static String MARKER_XML = LEGACY_PLUGIN_ID + ".xmlProblem"; //$NON-NLS-1$
    172 
    173     /** aidl marker error, only to be used in {@link PreCompilerBuilder} */
    174     public final static String MARKER_AIDL = LEGACY_PLUGIN_ID + ".aidlProblem"; //$NON-NLS-1$
    175 
    176     /** renderscript marker error, only to be used in {@link PreCompilerBuilder} */
    177     public final static String MARKER_RENDERSCRIPT = LEGACY_PLUGIN_ID + ".rsProblem"; //$NON-NLS-1$
    178 
    179     /** android marker error, only to be used in the Manifest parsing
    180      * from the {@link PreCompilerBuilder} */
    181     public final static String MARKER_ANDROID = LEGACY_PLUGIN_ID + ".androidProblem"; //$NON-NLS-1$
    182 
    183 
    184     /** aapt marker error when running the package command, only to be used in
    185      * {@link PostCompilerBuilder} */
    186     public final static String MARKER_AAPT_PACKAGE = LEGACY_PLUGIN_ID + ".aapt2Problem"; //$NON-NLS-1$
    187 
    188     /** final packaging error marker, only to be used in {@link PostCompilerBuilder} */
    189     public final static String MARKER_PACKAGING = AdtPlugin.PLUGIN_ID + ".packagingProblem"; //$NON-NLS-1$
    190 
    191     /** manifest merger error, only to be used in {@link PreCompilerBuilder} */
    192     public final static String MARKER_MANIFMERGER = AdtPlugin.PLUGIN_ID + ".manifMergerProblem"; //$NON-NLS-1$
    193 
    194     /** Marker for lint errors */
    195     public final static String MARKER_LINT = AdtPlugin.PLUGIN_ID + ".lintProblem"; //$NON-NLS-1$
    196 
    197     /** Name for the "type" marker attribute */
    198     public final static String MARKER_ATTR_TYPE = "android.type"; //$NON-NLS-1$
    199     /** Name for the "class" marker attribute */
    200     public final static String MARKER_ATTR_CLASS = "android.class"; //$NON-NLS-1$
    201     /** activity value for marker attribute "type" */
    202     public final static String MARKER_ATTR_TYPE_ACTIVITY = "activity"; //$NON-NLS-1$
    203     /** service value for marker attribute "type" */
    204     public final static String MARKER_ATTR_TYPE_SERVICE = "service"; //$NON-NLS-1$
    205     /** receiver value for marker attribute "type" */
    206     public final static String MARKER_ATTR_TYPE_RECEIVER = "receiver"; //$NON-NLS-1$
    207     /** provider value for marker attribute "type" */
    208     public final static String MARKER_ATTR_TYPE_PROVIDER = "provider"; //$NON-NLS-1$
    209 
    210     /**
    211      * Preferred compiler level, i.e. "1.6".
    212      */
    213     public final static String COMPILER_COMPLIANCE_PREFERRED = JavaCore.VERSION_1_6;
    214     /**
    215      * List of valid compiler level, i.e. "1.5" and "1.6"
    216      */
    217     public final static String[] COMPILER_COMPLIANCE = {
    218         JavaCore.VERSION_1_5,
    219         JavaCore.VERSION_1_6,
    220     };
    221 
    222     /** The base URL where to find the Android class & manifest documentation */
    223     public static final String CODESITE_BASE_URL = "http://code.google.com/android";  //$NON-NLS-1$
    224 
    225     public static final String LIBRARY_TEST_RUNNER = "android.test.runner"; //$NON-NLS-1$
    226 
    227     /** Documentation marker for elements, attributes etc that should be hidden */
    228     public static final String DOC_HIDE = "@hide"; //$NON-NLS-1$
    229 
    230     public static final String DEX_OPTIONS_FORCEJUMBO = "dex.force.jumbo"; //$NON-NLS-1$
    231     public static final String DEX_OPTIONS_DISABLE_MERGER = "dex.disable.merger"; //$NON-NLS-1$
    232 }
    233