From d5988982b515811ffe2883fa43ad941f339ac49e Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 4 May 2009 15:37:40 -0700 Subject: [PATCH] ADT #1825491: Provide default choices for We currently hardcode a list in the PlatformTarget and propagate it to the UI via the AndroidTargetParser. This way we can later decide to actually get the info from some kind of manifest. --- .../ide/eclipse/adt/sdk/AndroidTargetData.java | 42 +++++++++++++--------- .../ide/eclipse/adt/sdk/AndroidTargetParser.java | 1 + .../sdklib/src/com/android/sdklib/AddOnTarget.java | 9 +++++ .../src/com/android/sdklib/IAndroidTarget.java | 9 ++++- .../src/com/android/sdklib/PlatformTarget.java | 16 +++++++-- .../src/com/android/sdklib/SdkConstants.java | 3 ++ 6 files changed, 59 insertions(+), 21 deletions(-) diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetData.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetData.java index 34391c236..406aa6e1a 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetData.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetData.java @@ -29,6 +29,7 @@ import com.android.layoutlib.api.ILayoutBridge; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.IAndroidTarget.IOptionalLibrary; +import java.util.ArrayList; import java.util.Hashtable; import java.util.Map; @@ -97,6 +98,7 @@ public class AndroidTargetData { /** * Creates an AndroidTargetData object. + * @param platformLibraries * @param optionalLibraries */ void setExtraData(IResourceRepository systemResourceRepository, @@ -110,6 +112,7 @@ public class AndroidTargetData { String[] broadcastIntentActionValues, String[] serviceIntentActionValues, String[] intentCategoryValues, + String[] platformLibraries, IOptionalLibrary[] optionalLibraries, ProjectResources resources, LayoutBridge layoutBridge) { @@ -126,7 +129,7 @@ public class AndroidTargetData { setPermissions(permissionValues); setIntentFilterActionsAndCategories(activityIntentActionValues, broadcastIntentActionValues, serviceIntentActionValues, intentCategoryValues); - setOptionalLibraries(optionalLibraries); + setOptionalLibraries(platformLibraries, optionalLibraries); } public DexWrapper getDexWrapper() { @@ -276,35 +279,40 @@ public class AndroidTargetData { * @param permissionValues the list of permissions */ private void setPermissions(String[] permissionValues) { - setValues("(uses-permission,android:name)", permissionValues); //$NON-NLS-1$ + setValues("(uses-permission,android:name)", permissionValues); //$NON-NLS-1$ setValues("(application,android:permission)", permissionValues); //$NON-NLS-1$ - setValues("(activity,android:permission)", permissionValues); //$NON-NLS-1$ - setValues("(receiver,android:permission)", permissionValues); //$NON-NLS-1$ - setValues("(service,android:permission)", permissionValues); //$NON-NLS-1$ - setValues("(provider,android:permission)", permissionValues); //$NON-NLS-1$ + setValues("(activity,android:permission)", permissionValues); //$NON-NLS-1$ + setValues("(receiver,android:permission)", permissionValues); //$NON-NLS-1$ + setValues("(service,android:permission)", permissionValues); //$NON-NLS-1$ + setValues("(provider,android:permission)", permissionValues); //$NON-NLS-1$ } private void setIntentFilterActionsAndCategories(String[] activityIntentActions, String[] broadcastIntentActions, String[] serviceIntentActions, String[] intentCategoryValues) { - setValues("(activity,action,android:name)", activityIntentActions); //$NON-NLS-1$ + setValues("(activity,action,android:name)", activityIntentActions); //$NON-NLS-1$ setValues("(receiver,action,android:name)", broadcastIntentActions); //$NON-NLS-1$ - setValues("(service,action,android:name)", serviceIntentActions); //$NON-NLS-1$ - setValues("(category,android:name)", intentCategoryValues); //$NON-NLS-1$ + setValues("(service,action,android:name)", serviceIntentActions); //$NON-NLS-1$ + setValues("(category,android:name)", intentCategoryValues); //$NON-NLS-1$ } - private void setOptionalLibraries(IOptionalLibrary[] optionalLibraries) { - String[] values; + private void setOptionalLibraries(String[] platformLibraries, + IOptionalLibrary[] optionalLibraries) { - if (optionalLibraries == null) { - values = new String[0]; - } else { - values = new String[optionalLibraries.length]; + ArrayList libs = new ArrayList(); + + if (platformLibraries != null) { + for (String name : platformLibraries) { + libs.add(name); + } + } + + if (optionalLibraries != null) { for (int i = 0; i < optionalLibraries.length; i++) { - values[i] = optionalLibraries[i].getName(); + libs.add(optionalLibraries[i].getName()); } } - setValues("(uses-library,android:name)", values); + setValues("(uses-library,android:name)", libs.toArray(new String[libs.size()])); } /** diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetParser.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetParser.java index 67eec78b9..588a96b22 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetParser.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/sdk/AndroidTargetParser.java @@ -267,6 +267,7 @@ public final class AndroidTargetParser { broadcast_actions.toArray(new String[broadcast_actions.size()]), service_actions.toArray(new String[service_actions.size()]), categories.toArray(new String[categories.size()]), + mAndroidTarget.getPlatformLibraries(), mAndroidTarget.getOptionalLibraries(), resources, layoutBridge); diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java index 2336f471e..b9da9619a 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java @@ -192,6 +192,15 @@ final class AddOnTarget implements IAndroidTarget { return mLibraries; } + /** + * Returns the list of libraries of the underlying platform. + * + * {@inheritDoc} + */ + public String[] getPlatformLibraries() { + return mBasePlatform.getPlatformLibraries(); + } + public boolean isCompatibleBaseFor(IAndroidTarget target) { // basic test if (target == this) { diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java index 896a83cd8..304295075 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java @@ -149,7 +149,14 @@ public interface IAndroidTarget extends Comparable { * @return an array of optional libraries or null if there is none. */ IOptionalLibrary[] getOptionalLibraries(); - + + /** + * Returns the list of libraries available for a given platform. + * + * @return an array of libraries provided by the platform or null if there is none. + */ + String[] getPlatformLibraries(); + /** * Returns whether the given target is compatible with the receiver. *

A target is considered compatible if applications developed for the receiver can run on diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java index d4e40b182..326d72235 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java @@ -149,15 +149,25 @@ final class PlatformTarget implements IAndroidTarget { return "HVGA"; } - /* - * Always returns null, as a standard platforms have no optional libraries. + /** + * Always returns null, as a standard platform ha no optional libraries. * - * (non-Javadoc) + * {@inheritDoc} * @see com.android.sdklib.IAndroidTarget#getOptionalLibraries() */ public IOptionalLibrary[] getOptionalLibraries() { return null; } + + /** + * Currently always return a fixed list with "android.test.runner" in it. + *

+ * TODO change the fixed library list to be build-dependent later. + * {@inheritDoc} + */ + public String[] getPlatformLibraries() { + return new String[] { SdkConstants.ANDROID_TEST_RUNNER_LIB }; + } public boolean isCompatibleBaseFor(IAndroidTarget target) { // basic test diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java index 9eb6ade6b..b53bd5eec 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java @@ -167,6 +167,9 @@ public final class SdkConstants { /** Namespace for the resource XML, i.e. "http://schemas.android.com/apk/res/android" */ public final static String NS_RESOURCES = "http://schemas.android.com/apk/res/android"; + /** The name of the uses-library that provides "android.test.runner" */ + public final static String ANDROID_TEST_RUNNER_LIB = "android.test.runner"; + /* Folder path relative to the SDK root */ /** Path of the documentation directory relative to the sdk folder. * This is an OS path, ending with a separator. */ -- 2.11.0