diff options
Diffstat (limited to 'src/plugins/android/androidconfigurations.cpp')
-rw-r--r-- | src/plugins/android/androidconfigurations.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index bc0a939e39..609e5e13e0 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -574,7 +574,9 @@ QVector<AndroidDeviceInfo> AndroidConfig::androidVirtualDevices() const break; if (line.contains(QLatin1String("Target:"))) dev.sdk = line.mid(line.lastIndexOf(QLatin1Char(' '))).remove(QLatin1Char(')')).toInt(); - if (line.contains(QLatin1String("ABI:"))) + if (line.contains(QLatin1String("Tag/ABI:"))) + dev.cpuAbi = QStringList() << line.mid(line.lastIndexOf(QLatin1Char('/')) +1); + else if (line.contains(QLatin1String("ABI:"))) dev.cpuAbi = QStringList() << line.mid(line.lastIndexOf(QLatin1Char(' '))).trimmed(); } // armeabi-v7a devices can also run armeabi code @@ -884,8 +886,9 @@ void AndroidConfigurations::setConfig(const AndroidConfig &devConfigs) m_instance->m_config = devConfigs; m_instance->save(); - m_instance->updateAutomaticKitList(); m_instance->updateAndroidDevice(); + m_instance->updateToolChainList(); + m_instance->updateAutomaticKitList(); emit m_instance->updated(); } @@ -944,6 +947,32 @@ static bool equalKits(Kit *a, Kit *b) && QtSupport::QtKitInformation::qtVersion(a) == QtSupport::QtKitInformation::qtVersion(b); } +void AndroidConfigurations::updateToolChainList() +{ + QList<ToolChain *> existingToolChains = ToolChainManager::toolChains(); + QList<ToolChain *> toolchains = AndroidToolChainFactory::createToolChainsForNdk(AndroidConfigurations::currentConfig().ndkLocation()); + foreach (ToolChain *tc, toolchains) { + bool found = false; + for (int i = 0; i < existingToolChains.count(); ++i) { + if (*(existingToolChains.at(i)) == *tc) { + found = true; + break; + } + } + if (found) + delete tc; + else + ToolChainManager::registerToolChain(tc); + } + + foreach (ToolChain *tc, existingToolChains) { + if (tc->type() == QLatin1String(Constants::ANDROID_TOOLCHAIN_TYPE)) { + if (!tc->isValid()) + ToolChainManager::deregisterToolChain(tc); + } + } +} + void AndroidConfigurations::updateAutomaticKitList() { QList<AndroidToolChain *> toolchains; |