diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp index 8a8e591..71d693e 100644 --- a/src/androiddeployqt/main.cpp +++ b/src/androiddeployqt/main.cpp @@ -1122,7 +1122,7 @@ bool updateLibsXml(const Options &options) QString libsPath = QLatin1String("libs/") + options.architecture + QLatin1Char('/'); - QString qtLibs = QLatin1String("gnustl_shared\n"); + QString qtLibs = QLatin1String("c++_shared\n"); QString bundledInLibs; QString bundledInAssets; foreach (Options::BundledFile bundledFile, options.bundledFiles) { @@ -2519,6 +2519,39 @@ bool installApk(const Options &options) return true; } +bool copyStl(Options *options) +{ + if (options->deploymentMechanism == Options::Debug && !options->installApk) + return true; + + if (options->verbose) + fprintf(stdout, "Copying LIBC++ STL library\n"); + + QString filePath = options->ndkPath + + QLatin1String("/sources/cxx-stl/llvm-libc++") + + QLatin1String("/libs/") + + options->architecture + + QLatin1String("/libc++_shared.so"); + if (!QFile::exists(filePath)) { + fprintf(stderr, "LIBC STL library does not exist at %s\n", qPrintable(filePath)); + return false; + } + + QString destinationDirectory = + options->deploymentMechanism == Options::Debug + ? options->temporaryDirectoryName + QLatin1String("/lib") + : options->outputDirectory + QLatin1String("/libs/") + options->architecture; + + if (!copyFileIfNewer(filePath, destinationDirectory + + QLatin1String("/libc++_shared.so"), options->verbose)) { + return false; + } + + if (options->deploymentMechanism == Options::Debug && !deployToLocalTmp(options, QLatin1String("/lib/libc++_shared.so"))) + return false; + + return true; +} bool copyGnuStl(Options *options) { if (options->deploymentMechanism == Options::Debug && !options->installApk) @@ -2870,7 +2903,7 @@ int main(int argc, char *argv[]) if (Q_UNLIKELY(options.timing)) fprintf(stdout, "[TIMING] %d ms: Read dependencies\n", options.timer.elapsed()); - if (options.deploymentMechanism != Options::Ministro && !copyGnuStl(&options)) + if (options.deploymentMechanism != Options::Ministro && !copyStl(&options)) return CannotCopyGnuStl; if (Q_UNLIKELY(options.timing))