diff options
author | Raphael Moll <ralf@android.com> | 2012-09-14 13:53:51 -0700 |
---|---|---|
committer | Raphael Moll <ralf@android.com> | 2012-09-14 22:33:47 -0700 |
commit | 0386f5dcf9d0f472f243506be3c40f5cf46287a2 (patch) | |
tree | a42010d151dca8adcd712e79d4a0cf40316901d0 /anttasks/src/com/android/ant/ManifestMergerTask.java | |
parent | a35f8af9eca38249b5c37391d7a7ae56c53251ad (diff) | |
download | sdk-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.java | 26 |
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, |