Merge remote-tracking branch 'origin/4.8'

Conflicts:
	src/plugins/android/androidrunnerworker.cpp

Change-Id: Ibd8b99435365fb7e7d488313fd1d2b3a75adad1b
This commit is contained in:
Eike Ziller
2018-11-29 12:59:51 +01:00
63 changed files with 638 additions and 287 deletions

View File

@@ -364,7 +364,7 @@ void AndroidManager::setDeviceApiLevel(ProjectExplorer::Target *target, int leve
QPair<int, int> AndroidManager::apiLevelRange()
{
return qMakePair(16, 27);
return qMakePair(16, 28);
}
QString AndroidManager::androidNameForApiLevel(int x)
@@ -418,6 +418,8 @@ QString AndroidManager::androidNameForApiLevel(int x)
return QLatin1String("Android 8.0");
case 27:
return QLatin1String("Android 8.1");
case 28:
return QLatin1String("Android 9");
default:
return tr("Unknown Android version. API Level: %1").arg(QString::number(x));
}

View File

@@ -252,8 +252,9 @@ bool AndroidRunnerWorker::uploadFile(const QString &from, const QString &to, con
if (!f.open(QIODevice::ReadOnly))
return false;
runAdb({"shell", "run-as", m_packageName, "rm", to});
auto res = runAdb({"shell", "run-as", m_packageName, "sh", "-c", QString("'cat > %1'").arg(to)},
nullptr, f.readAll());
const QByteArray data = f.readAll();
const bool res = runAdb({"shell", "run-as", m_packageName, QString("sh -c 'base64 -d > %1'").arg(to)},
nullptr, data.toBase64());
if (!res)
return false;
return runAdb({"shell", "run-as", m_packageName, "chmod", flags, to});

View File

@@ -261,6 +261,7 @@ public:
SdkToolsMarker = 0x100,
PlatformToolsMarker = 0x200,
EmulatorToolsMarker = 0x400,
ExtrasMarker = 0x800,
SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker
};
@@ -280,6 +281,7 @@ private:
SdkTools *parseSdkToolsPackage(const QStringList &data) const;
PlatformTools *parsePlatformToolsPackage(const QStringList &data) const;
EmulatorTools *parseEmulatorToolsPackage(const QStringList &data) const;
ExtraTools *parseExtraToolsPackage(const QStringList &data) const;
MarkerTag parseMarkers(const QString &line);
MarkerTag m_currentSection = MarkerTag::None;
@@ -295,7 +297,8 @@ const std::map<SdkManagerOutputParser::MarkerTag, const char *> markerTags {
{SdkManagerOutputParser::MarkerTag::BuildToolsMarker, "build-tools"},
{SdkManagerOutputParser::MarkerTag::SdkToolsMarker, "tools"},
{SdkManagerOutputParser::MarkerTag::PlatformToolsMarker, "platform-tools"},
{SdkManagerOutputParser::MarkerTag::EmulatorToolsMarker, "emulator"}
{SdkManagerOutputParser::MarkerTag::EmulatorToolsMarker, "emulator"},
{SdkManagerOutputParser::MarkerTag::ExtrasMarker, "extras"}
};
AndroidSdkManager::AndroidSdkManager(const AndroidConfig &config, QObject *parent):
@@ -562,6 +565,10 @@ void SdkManagerOutputParser::parsePackageData(MarkerTag packageMarker, const QSt
}
break;
case MarkerTag::ExtrasMarker:
createPackage(&SdkManagerOutputParser::parseExtraToolsPackage);
break;
default:
qCDebug(sdkManagerLog) << "Unhandled package: " << markerTags.at(packageMarker);
break;
@@ -726,6 +733,22 @@ EmulatorTools *SdkManagerOutputParser::parseEmulatorToolsPackage(const QStringLi
return emulatorTools;
}
ExtraTools *SdkManagerOutputParser::parseExtraToolsPackage(const QStringList &data) const
{
ExtraTools *extraTools = nullptr;
GenericPackageData packageData;
if (parseAbstractData(packageData, data, 1, "Extras")) {
extraTools = new ExtraTools(packageData.revision, data.at(0));
extraTools->setDescriptionText(packageData.description);
extraTools->setDisplayText(packageData.description);
extraTools->setInstalledLocation(packageData.installedLocation);
} else {
qCDebug(sdkManagerLog) << "Extra-tools: Parsing failed. Minimum required data "
"unavailable:" << data;
}
return extraTools;
}
SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line)
{
if (line.isEmpty())

View File

@@ -269,4 +269,19 @@ AndroidSdkPackage::PackageType EmulatorTools::type() const
return AndroidSdkPackage::EmulatorToolsPackage;
}
ExtraTools::ExtraTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent) :
AndroidSdkPackage(revision, sdkStylePathStr, parent)
{
}
bool ExtraTools::isValid() const
{
return installedLocation().exists();
}
AndroidSdkPackage::PackageType ExtraTools::type() const
{
return AndroidSdkPackage::ExtraToolsPackage;
}
} // namespace Android

View File

@@ -53,8 +53,9 @@ public:
SdkPlatformPackage = 1 << 4,
SystemImagePackage = 1 << 5,
EmulatorToolsPackage = 1 << 6,
ExtraToolsPackage = 1 << 7,
AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage |
SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage
SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage | ExtraToolsPackage
};
enum PackageState {
@@ -191,6 +192,16 @@ public:
bool isValid() const override;
PackageType type() const override;
};
class ExtraTools : public AndroidSdkPackage
{
public:
ExtraTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr);
// AndroidSdkPackage Overrides
bool isValid() const override;
PackageType type() const override;
};
} // namespace Android