forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.14'
Conflicts: src/plugins/designer/cpp/formclasswizard.h src/plugins/designer/cpp/formclasswizarddialog.h Change-Id: I9f9d166e1a9249022305503f9cbe571136c2a2b1
This commit is contained in:
@@ -895,13 +895,15 @@ void AndroidBuildApkStep::setBuildTargetSdk(const QString &sdk)
|
||||
void AndroidBuildApkStep::stdError(const QString &output)
|
||||
{
|
||||
AbstractProcessStep::stdError(output);
|
||||
if (output == "\n")
|
||||
return;
|
||||
|
||||
if (output.startsWith("warning", Qt::CaseInsensitive) || output.startsWith("note", Qt::CaseInsensitive))
|
||||
TaskHub::addTask(BuildSystemTask(Task::Warning, output));
|
||||
QString newOutput = output;
|
||||
newOutput.remove(QRegularExpression("^(\\n)+"));
|
||||
|
||||
if (newOutput.startsWith("warning", Qt::CaseInsensitive)
|
||||
|| newOutput.startsWith("note", Qt::CaseInsensitive))
|
||||
TaskHub::addTask(BuildSystemTask(Task::Warning, newOutput));
|
||||
else
|
||||
TaskHub::addTask(BuildSystemTask(Task::Error, output));
|
||||
TaskHub::addTask(BuildSystemTask(Task::Error, newOutput));
|
||||
}
|
||||
|
||||
QVariant AndroidBuildApkStep::data(Utils::Id id) const
|
||||
|
||||
@@ -552,13 +552,15 @@ void AndroidDeployQtStep::processReadyReadStdError(DeployErrorCode &errorCode)
|
||||
void AndroidDeployQtStep::stdError(const QString &line)
|
||||
{
|
||||
emit addOutput(line, BuildStep::OutputFormat::Stderr, BuildStep::DontAppendNewline);
|
||||
if (line == "\n")
|
||||
return;
|
||||
|
||||
if (line.startsWith("warning", Qt::CaseInsensitive) || line.startsWith("note", Qt::CaseInsensitive))
|
||||
TaskHub::addTask(DeploymentTask(Task::Warning, line));
|
||||
QString newOutput = line;
|
||||
newOutput.remove(QRegularExpression("^(\\n)+"));
|
||||
|
||||
if (newOutput.startsWith("warning", Qt::CaseInsensitive)
|
||||
|| newOutput.startsWith("note", Qt::CaseInsensitive))
|
||||
TaskHub::addTask(DeploymentTask(Task::Warning, newOutput));
|
||||
else
|
||||
TaskHub::addTask(DeploymentTask(Task::Error, line));
|
||||
TaskHub::addTask(DeploymentTask(Task::Error, newOutput));
|
||||
}
|
||||
|
||||
AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::parseDeployErrors(QString &deployOutputLine) const
|
||||
|
||||
@@ -855,8 +855,6 @@ void AndroidManifestEditorWidget::syncToWidgets(const QDomDocument &doc)
|
||||
setApiLevel(m_androidTargetSdkVersion, usesSdkElement, QLatin1String("android:targetSdkVersion"));
|
||||
}
|
||||
|
||||
QString baseDir = m_textEditorWidget->textDocument()->filePath().toFileInfo().absolutePath();
|
||||
|
||||
QDomElement applicationElement = manifest.firstChildElement(QLatin1String("application"));
|
||||
m_appNameLineEdit->setText(applicationElement.attribute(QLatin1String("android:label")));
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <utils/temporaryfile.h>
|
||||
#include <utils/url.h>
|
||||
|
||||
#include <QDate>
|
||||
#include <QDir>
|
||||
#include <QDirIterator>
|
||||
#include <QFileInfo>
|
||||
@@ -498,22 +499,45 @@ void AndroidRunnerWorker::setAndroidDeviceInfo(const AndroidDeviceInfo &info)
|
||||
<< m_deviceSerialNumber << m_apiLevel;
|
||||
}
|
||||
|
||||
void AndroidRunnerWorker::asyncStartHelper()
|
||||
void Android::Internal::AndroidRunnerWorker::asyncStartLogcat()
|
||||
{
|
||||
forceStop();
|
||||
|
||||
// Its assumed that the device or avd returned by selector() is online.
|
||||
// Start the logcat process before app starts.
|
||||
QTC_ASSERT(!m_adbLogcatProcess, /**/);
|
||||
m_adbLogcatProcess.reset(AndroidManager::runAdbCommandDetached(selector() << "logcat"));
|
||||
if (m_adbLogcatProcess) {
|
||||
m_adbLogcatProcess->setObjectName("AdbLogcatProcess");
|
||||
connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardOutput,
|
||||
this, &AndroidRunnerWorker::logcatReadStandardOutput);
|
||||
connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardError,
|
||||
this, &AndroidRunnerWorker::logcatReadStandardError);
|
||||
|
||||
// Ideally AndroidManager::runAdbCommandDetached() should be used, but here
|
||||
// we need to connect the readyRead signals from logcat otherwise we might
|
||||
// lost some output between the process start and connecting those signals.
|
||||
m_adbLogcatProcess.reset(new QProcess());
|
||||
|
||||
connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardOutput,
|
||||
this, &AndroidRunnerWorker::logcatReadStandardOutput);
|
||||
connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardError,
|
||||
this, &AndroidRunnerWorker::logcatReadStandardError);
|
||||
|
||||
// Get target current time to fetch only recent logs
|
||||
QString dateInSeconds;
|
||||
QStringList timeArg;
|
||||
if (runAdb({"shell", "date", "+%s"}, &dateInSeconds)) {
|
||||
timeArg << "-T";
|
||||
timeArg << QDateTime::fromSecsSinceEpoch(dateInSeconds.toInt())
|
||||
.toString("MM-dd hh:mm:ss.mmm");
|
||||
}
|
||||
|
||||
const QStringList logcatArgs = selector() << "logcat" << timeArg;
|
||||
const QString adb = AndroidConfigurations::currentConfig().adbToolPath().toString();
|
||||
qCDebug(androidRunWorkerLog) << "Running logcat command (async):"
|
||||
<< CommandLine(adb, logcatArgs).toUserOutput();
|
||||
m_adbLogcatProcess->start(adb, logcatArgs);
|
||||
if (m_adbLogcatProcess->waitForStarted(500) && m_adbLogcatProcess->state() == QProcess::Running)
|
||||
m_adbLogcatProcess->setObjectName("AdbLogcatProcess");
|
||||
}
|
||||
|
||||
void AndroidRunnerWorker::asyncStartHelper()
|
||||
{
|
||||
forceStop();
|
||||
asyncStartLogcat();
|
||||
|
||||
for (const QString &entry : m_beforeStartAdbCommands)
|
||||
runAdb(entry.split(' ', Qt::SkipEmptyParts));
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ private:
|
||||
bool deviceFileExists(const QString &filePath);
|
||||
bool packageFileExists(const QString& filePath);
|
||||
bool uploadDebugServer(const QString &debugServerFileName);
|
||||
void asyncStartLogcat();
|
||||
|
||||
enum class JDBState {
|
||||
Idle,
|
||||
|
||||
@@ -146,7 +146,6 @@ void AvdDialog::parseDeviceDefinitionsList()
|
||||
if (line.startsWith("---------") || line.isEmpty()) {
|
||||
DeviceDefinitionStruct deviceDefinition;
|
||||
for (const QString &line : avdDeviceInfo) {
|
||||
QString value;
|
||||
if (line.contains("id:")) {
|
||||
deviceDefinition.name_id = line.split("or").at(1);
|
||||
deviceDefinition.name_id = deviceDefinition.name_id.remove(0, 1).remove('"');
|
||||
|
||||
@@ -182,8 +182,8 @@ ChooseDirectoryPage::ChooseDirectoryPage(CreateAndroidManifestWizard *wizard)
|
||||
|
||||
if (wizard->copyGradle()) {
|
||||
auto checkBox = new QCheckBox(this);
|
||||
checkBox->setChecked(false);
|
||||
connect(checkBox, &QCheckBox::toggled, wizard, &CreateAndroidManifestWizard::setCopyGradle);
|
||||
checkBox->setChecked(false);
|
||||
checkBox->setText(tr("Copy the Gradle files to Android directory"));
|
||||
checkBox->setToolTip(tr("It is highly recommended if you are planning to extend the Java part of your Qt application."));
|
||||
m_layout->addRow(checkBox);
|
||||
|
||||
Reference in New Issue
Block a user