diff options
-rw-r--r-- | src/plugins/android/androidbuildapkwidget.cpp | 1 | ||||
-rw-r--r-- | src/plugins/android/androidconfigurations.cpp | 26 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.cpp | 2 |
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) |