From 2d4afd04947f9b0700d9df9610d64f8e707c98ee Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 8 Aug 2013 17:19:39 +0200 Subject: [PATCH] Android: Clean up before packaging, be a little bit more careful. The android/libs folder contains both the library from the project and libraries from qt. This adds a small check before removing libQt5*.so, that checks if that file is in qt's lib folder. That fixes the bug below, but e.g. naming your project Qt5Test won't work. Long term we'll need to overhaul the packaging and make that more robust. Task-number: QTCREATORBUG-9895 Change-Id: I48f735114ee95668a862549cfe1537aeab968dfb Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/android/androidpackagecreationstep.cpp | 10 ++++++++-- src/plugins/android/androidpackagecreationstep.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/androidpackagecreationstep.cpp b/src/plugins/android/androidpackagecreationstep.cpp index 1a2484f79b1..dc7965a7cfa 100644 --- a/src/plugins/android/androidpackagecreationstep.cpp +++ b/src/plugins/android/androidpackagecreationstep.cpp @@ -557,7 +557,7 @@ void AndroidPackageCreationStep::collectFiles(QList *deployList, } } -void AndroidPackageCreationStep::removeManagedFilesFromPackage() +void AndroidPackageCreationStep::removeManagedFilesFromPackage(const Utils::FileName &qtLibraryDir) { // Clean up all files managed by Qt Creator { @@ -571,6 +571,12 @@ void AndroidPackageCreationStep::removeManagedFilesFromPackage() && dirIt.fileName().startsWith(QLatin1String("libQt5")) && dirIt.fileName().endsWith(QLatin1String(".so")); + if (isQtLibrary) { + Utils::FileName qtLibraryFile = qtLibraryDir; + qtLibraryFile.appendPath(dirIt.fileName()); + isQtLibrary = qtLibraryFile.toFileInfo().exists(); + } + if (dirIt.filePath().contains(AndroidManager::libraryPrefix()) || isQtLibrary) QFile::remove(dirIt.filePath()); } @@ -656,7 +662,7 @@ bool AndroidPackageCreationStep::createPackage() collectFiles(&deployFiles, &importsAndPlugins); // Remove files from package if they are not needed - removeManagedFilesFromPackage(); + removeManagedFilesFromPackage(version->libraryPath()); // Deploy files to package if (bundleQt) { diff --git a/src/plugins/android/androidpackagecreationstep.h b/src/plugins/android/androidpackagecreationstep.h index bc7336cd2ad..595c47a3cb3 100644 --- a/src/plugins/android/androidpackagecreationstep.h +++ b/src/plugins/android/androidpackagecreationstep.h @@ -107,7 +107,7 @@ private: QStringList collectRelativeFilePaths(const QString &parentPath); void collectFiles(QList *deployList, QList *pluginsAndImports); - void removeManagedFilesFromPackage(); + void removeManagedFilesFromPackage(const Utils::FileName &qtLibraryDir); void copyFilesIntoPackage(const QList &deployList); void stripFiles(const QList &deployList);