aboutsummaryrefslogtreecommitdiffstats
path: root/anttasks/src/com/android/ant/ManifestMergerTask.java
diff options
context:
space:
mode:
authorRaphael Moll <ralf@android.com>2012-09-14 13:53:51 -0700
committerRaphael Moll <ralf@android.com>2012-09-14 22:33:47 -0700
commit0386f5dcf9d0f472f243506be3c40f5cf46287a2 (patch)
treea42010d151dca8adcd712e79d4a0cf40316901d0 /anttasks/src/com/android/ant/ManifestMergerTask.java
parenta35f8af9eca38249b5c37391d7a7ae56c53251ad (diff)
downloadsdk-0386f5dcf9d0f472f243506be3c40f5cf46287a2.zip
sdk-0386f5dcf9d0f472f243506be3c40f5cf46287a2.tar.gz
sdk-0386f5dcf9d0f472f243506be3c40f5cf46287a2.tar.bz2
ManifestMerger: fix handling of codenames in min/targetSdkVersion.
The change is that the manifest merger will only accept a codename if it's invoked in a context that can resolve that codename to an API level. This allows to produce an error on bogus codenames and to properly check that the API levels match appropriately. Change-Id: Ic70c0c3690b13d94dba81bb78cc09386016b2ef1
Diffstat (limited to 'anttasks/src/com/android/ant/ManifestMergerTask.java')
-rw-r--r--anttasks/src/com/android/ant/ManifestMergerTask.java26
1 files changed, 24 insertions, 2 deletions
diff --git a/anttasks/src/com/android/ant/ManifestMergerTask.java b/anttasks/src/com/android/ant/ManifestMergerTask.java
index 597e1e9..00939dc 100644
--- a/anttasks/src/com/android/ant/ManifestMergerTask.java
+++ b/anttasks/src/com/android/ant/ManifestMergerTask.java
@@ -16,8 +16,11 @@
package com.android.ant;
+import com.android.manifmerger.ICallback;
import com.android.manifmerger.ManifestMerger;
import com.android.manifmerger.MergerLog;
+import com.android.sdklib.IAndroidTarget;
+import com.android.sdklib.SdkManager;
import com.android.sdklib.io.FileOp;
import com.android.utils.StdLogger;
@@ -124,8 +127,27 @@ public class ManifestMergerTask extends SingleDependencyTask {
} else {
System.out.println(String.format("Merging manifests from project and %d libraries.",
libraries.size()));
- ManifestMerger merger = new ManifestMerger(MergerLog.wrapSdkLog(
- new StdLogger(StdLogger.Level.VERBOSE)));
+ ManifestMerger merger = new ManifestMerger(
+ MergerLog.wrapSdkLog(new StdLogger(StdLogger.Level.VERBOSE)),
+ new ICallback() {
+ SdkManager mManager;
+ @Override
+ public int queryCodenameApiLevel(String codename) {
+ if (mManager == null) {
+ File sdkDir = TaskHelper.getSdkLocation(getProject());
+ mManager = SdkManager.createManager(sdkDir.getPath(),
+ new StdLogger(StdLogger.Level.VERBOSE));
+ }
+ if (mManager != null) {
+ IAndroidTarget t = mManager.getTargetFromHashString(
+ IAndroidTarget.PLATFORM_HASH_PREFIX + codename);
+ if (t != null) {
+ return t.getVersion().getApiLevel();
+ }
+ }
+ return ICallback.UNKNOWN_CODENAME;
+ }
+ });
if (merger.process(
new File(mOutManifest),
appManifestFile,