forked from qt-creator/qt-creator
Android: Set correct ANDROID_NDK_PLATFORM
Introduce the class AndroidQmakeBuildConfiguration whose purpose is to set the environment variable. Modify the Factory to create buildconfigurations of that type and fix restore/clone to also take the factories' priorities into account. Change-Id: Icb377fa9211cd3564c36b60cf7c5f7dd84fcab50 Reviewed-by: BogDan Vatra <bogdan@kde.org>
This commit is contained in:
@@ -149,7 +149,7 @@ QString AndroidManager::activityName(ProjectExplorer::Target *target)
|
||||
int AndroidManager::minimumSDK(ProjectExplorer::Target *target)
|
||||
{
|
||||
QDomDocument doc;
|
||||
if (!openManifest(target, doc))
|
||||
if (!openXmlFile(doc, AndroidManager::manifestSourcePath(target)))
|
||||
return 0;
|
||||
QDomElement manifestElem = doc.documentElement();
|
||||
QDomElement usesSdk = manifestElem.firstChildElement(QLatin1String("uses-sdk"));
|
||||
@@ -192,7 +192,18 @@ QString AndroidManager::targetArch(ProjectExplorer::Target *target)
|
||||
|
||||
Utils::FileName AndroidManager::dirPath(ProjectExplorer::Target *target)
|
||||
{
|
||||
return target->activeBuildConfiguration()->buildDirectory().appendPath(QLatin1String(Constants::ANDROID_BUILDDIRECTORY));
|
||||
if (target->activeBuildConfiguration())
|
||||
return target->activeBuildConfiguration()->buildDirectory().appendPath(QLatin1String(Constants::ANDROID_BUILDDIRECTORY));
|
||||
return Utils::FileName();
|
||||
}
|
||||
|
||||
Utils::FileName AndroidManager::manifestSourcePath(ProjectExplorer::Target *target)
|
||||
{
|
||||
AndroidQtSupport *androidQtSupport = AndroidManager::androidQtSupport(target);
|
||||
Utils::FileName source = androidQtSupport->manifestSourcePath(target);
|
||||
if (!source.isEmpty())
|
||||
return source;
|
||||
return manifestPath(target);
|
||||
}
|
||||
|
||||
Utils::FileName AndroidManager::manifestPath(ProjectExplorer::Target *target)
|
||||
|
||||
@@ -77,6 +77,7 @@ public:
|
||||
|
||||
static Utils::FileName dirPath(ProjectExplorer::Target *target);
|
||||
static Utils::FileName manifestPath(ProjectExplorer::Target *target);
|
||||
static Utils::FileName manifestSourcePath(ProjectExplorer::Target *target);
|
||||
static Utils::FileName libsPath(ProjectExplorer::Target *target);
|
||||
static Utils::FileName defaultPropertiesPath(ProjectExplorer::Target *target);
|
||||
|
||||
|
||||
@@ -51,7 +51,9 @@ AndroidManifestDocument::AndroidManifestDocument(AndroidManifestEditorWidget *ed
|
||||
bool AndroidManifestDocument::save(QString *errorString, const QString &fileName, bool autoSave)
|
||||
{
|
||||
m_editorWidget->preSave();
|
||||
return TextDocument::save(errorString, fileName, autoSave);
|
||||
bool result = TextDocument::save(errorString, fileName, autoSave);
|
||||
m_editorWidget->postSave();
|
||||
return result;
|
||||
}
|
||||
|
||||
QString AndroidManifestDocument::defaultPath() const
|
||||
|
||||
@@ -617,6 +617,16 @@ void AndroidManifestEditorWidget::preSave()
|
||||
updateInfoBar();
|
||||
}
|
||||
|
||||
void AndroidManifestEditorWidget::postSave()
|
||||
{
|
||||
const QString docPath(m_textEditorWidget->textDocument()->filePath().toString());
|
||||
ProjectExplorer::Project *project = androidProject(docPath);
|
||||
if (Target *target = project->activeTarget()) {
|
||||
AndroidQtSupport *androidQtSupport = AndroidManager::androidQtSupport(target);
|
||||
androidQtSupport->manifestSaved(target);
|
||||
}
|
||||
}
|
||||
|
||||
Core::IEditor *AndroidManifestEditorWidget::editor() const
|
||||
{
|
||||
return m_editor;
|
||||
|
||||
@@ -105,6 +105,7 @@ public:
|
||||
bool setActivePage(EditorPage page);
|
||||
|
||||
void preSave();
|
||||
void postSave();
|
||||
|
||||
Core::IEditor *editor() const;
|
||||
TextEditor::TextEditorWidget *textEditorWidget() const;
|
||||
|
||||
@@ -66,7 +66,8 @@ public:
|
||||
virtual Utils::FileName apkPath(ProjectExplorer::Target *target) const;
|
||||
virtual Utils::FileName androiddeployqtPath(ProjectExplorer::Target *target) const = 0;
|
||||
virtual Utils::FileName androiddeployJsonPath(ProjectExplorer::Target *target) const = 0;
|
||||
virtual void resetBuild(const ProjectExplorer::Target *target) = 0;
|
||||
virtual void manifestSaved(const ProjectExplorer::Target *target) = 0;
|
||||
virtual Utils::FileName manifestSourcePath(const ProjectExplorer::Target *target) = 0;
|
||||
};
|
||||
|
||||
} // namespace Android
|
||||
|
||||
@@ -103,24 +103,10 @@ QList<Abi> AndroidQtVersion::detectQtAbis() const
|
||||
|
||||
void AndroidQtVersion::addToEnvironment(const Kit *k, Utils::Environment &env) const
|
||||
{
|
||||
Q_UNUSED(k);
|
||||
// this env vars are used by qmake mkspecs to generate makefiles (check QTDIR/mkspecs/android-g++/qmake.conf for more info)
|
||||
env.set(QLatin1String("ANDROID_NDK_HOST"), AndroidConfigurations::currentConfig().toolchainHost());
|
||||
env.set(QLatin1String("ANDROID_NDK_ROOT"), AndroidConfigurations::currentConfig().ndkLocation().toUserOutput());
|
||||
|
||||
Project *project = ProjectTree::currentProject();
|
||||
if (!project || !project->activeTarget()
|
||||
|| QtSupport::QtKitInformation::qtVersion(k)->type() != QLatin1String(Constants::ANDROIDQT))
|
||||
return;
|
||||
|
||||
Target *target = project->activeTarget();
|
||||
if (DeviceTypeKitInformation::deviceTypeId(target->kit()) != Constants::ANDROID_DEVICE_TYPE)
|
||||
return;
|
||||
if (AndroidConfigurations::currentConfig().ndkLocation().isEmpty()
|
||||
|| AndroidConfigurations::currentConfig().sdkLocation().isEmpty())
|
||||
return;
|
||||
|
||||
env.set(QLatin1String("ANDROID_NDK_PLATFORM"),
|
||||
AndroidConfigurations::currentConfig().bestNdkPlatformMatch(AndroidManager::minimumSDK(target)));
|
||||
}
|
||||
|
||||
Utils::Environment AndroidQtVersion::qmakeRunEnvironment() const
|
||||
|
||||
Reference in New Issue
Block a user