summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/android/androidbuildapkwidget.cpp1
-rw-r--r--src/plugins/android/androidconfigurations.cpp26
-rw-r--r--src/plugins/android/androidmanager.cpp2
3 files changed, 23 insertions, 6 deletions
diff --git a/src/plugins/android/androidbuildapkwidget.cpp b/src/plugins/android/androidbuildapkwidget.cpp
index 34974cddfa..476da0c957 100644
--- a/src/plugins/android/androidbuildapkwidget.cpp
+++ b/src/plugins/android/androidbuildapkwidget.cpp
@@ -61,6 +61,7 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step)
// Target sdk combobox
int minApiLevel = 9;
QStringList targets = AndroidConfig::apiLevelNamesFor(AndroidConfigurations::currentConfig().sdkTargets(minApiLevel));
+ targets.removeDuplicates();
m_ui->targetSDKComboBox->addItems(targets);
m_ui->targetSDKComboBox->setCurrentIndex(targets.indexOf(AndroidManager::buildTargetSDK(step->target())));
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index 764a658657..eb9f0609e2 100644
--- a/src/plugins/android/androidconfigurations.cpp
+++ b/src/plugins/android/androidconfigurations.cpp
@@ -176,6 +176,24 @@ namespace {
return false;
}
+ // Some preview sdks use a non integer version
+ int apiLevelFromAndroidList(const QString &string)
+ {
+ bool ok;
+ int result = string.toInt(&ok);
+ if (ok)
+ return result;
+ Utils::FileName sdkLocation = AndroidConfigurations::currentConfig().sdkLocation();
+ sdkLocation.appendPath(QLatin1String("/platforms/android-") + string + QLatin1String("/source.properties"));
+ result = QSettings(sdkLocation.toString(), QSettings::IniFormat).value(QLatin1String("AndroidVersion.ApiLevel")).toInt(&ok);
+ if (ok)
+ return result;
+ if (string == QLatin1String("L"))
+ return 21;
+ if (string == QLatin1String("MNC"))
+ return 22;
+ return 23; // At least
+ }
}
//////////////////////////////////
@@ -397,7 +415,8 @@ void AndroidConfig::updateAvailableSdkPlatforms() const
if (index == -1)
continue;
QString androidTarget = line.mid(index + 1, line.length() - index - 2);
- platform.apiLevel = androidTarget.mid(androidTarget.lastIndexOf(QLatin1Char('-')) + 1).toInt();
+ const QString tmp = androidTarget.mid(androidTarget.lastIndexOf(QLatin1Char('-')) + 1);
+ platform.apiLevel = apiLevelFromAndroidList(tmp);
} else if (line.startsWith(QLatin1String("Name:"))) {
platform.name = line.mid(6);
} else if (line.startsWith(QLatin1String("Tag/ABIs :"))) {
@@ -724,10 +743,7 @@ QVector<AndroidDeviceInfo> AndroidConfig::androidVirtualDevices(const QString &a
if (lastIndex == -1) // skip line
break;
QString tmp = line.mid(lastIndex).remove(QLatin1Char(')')).trimmed();
- if (tmp == QLatin1String("L")) // HACK for android-L preview
- dev.sdk = 20;
- else
- dev.sdk = tmp.toInt();
+ dev.sdk = apiLevelFromAndroidList(tmp);
}
if (line.contains(QLatin1String("Tag/ABI:"))) {
int lastIndex = line.lastIndexOf(QLatin1Char('/')) + 1;
diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp
index f4f59667bb..3c09a10dd9 100644
--- a/src/plugins/android/androidmanager.cpp
+++ b/src/plugins/android/androidmanager.cpp
@@ -281,7 +281,7 @@ QString AndroidManager::loadLocalJarsInitClasses(ProjectExplorer::Target *target
QPair<int, int> AndroidManager::apiLevelRange()
{
- return qMakePair(9, 21);
+ return qMakePair(9, 22);
}
QString AndroidManager::androidNameForApiLevel(int x)