Skip to content

Commit

Permalink
Android: enable androiddeployqt to get the host's rcc binary path
Browse files Browse the repository at this point in the history
Since Qt 6 CMake installs the host and target into separate directories,
androiddeployqt fails to get the correct path to rcc. This change
includes the host's rcc binary path in deployment-settings.json.

Task-number: QTBUG-85399
Change-Id: I610bb6fea1180a119e4c0ceb75bf78c175ae430e
Reviewed-by: Joerg Bornemann <[email protected]>
  • Loading branch information
Issam-b committed Aug 28, 2020
1 parent 70def43 commit 09ac1bd
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
13 changes: 11 additions & 2 deletions src/corelib/Qt6AndroidMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -157,14 +157,23 @@ endif()
" \"application-binary\": \"${target_output_name}\",\n")

# Override qmlimportscanner binary path
set(qml_importscanner_binary_path "${QT_HOST_PATH}/bin/qmlimportscanner")
set(qml_importscanner_binary_path "${QT_HOST_PATH}/${QT6_HOST_INFO_BINDIR}/qmlimportscanner")
if (WIN32)
string(APPEND qml_importscanner_binary_path ".exe")
endif()
file(TO_NATIVE_PATH "${qml_importscanner_binary_path}" qml_importscanner_binary_path_native)
string(APPEND file_contents
" \"qml-importscanner-binary\" : \"${qml_importscanner_binary_path_native}\",\n")

# Override rcc binary path
set(rcc_binary_path "${QT_HOST_PATH}/${QT6_HOST_INFO_BINDIR}/rcc")
if (WIN32)
string(APPEND rcc_binary_path ".exe")
endif()
file(TO_NATIVE_PATH "${rcc_binary_path}" rcc_binary_path_native)
string(APPEND file_contents
" \"rcc-binary\" : \"${rcc_binary_path_native}\",\n")

# Last item in json file

# base location of stdlibc++, will be suffixed by androiddeploy qt
Expand Down Expand Up @@ -226,7 +235,7 @@ function(qt6_android_add_apk_target target)
set(should_add_to_global_apk TRUE)
endif()

set(deployment_tool "${QT_HOST_PATH}/bin/androiddeployqt")
set(deployment_tool "${QT_HOST_PATH}/${QT6_HOST_INFO_BINDIR}/androiddeployqt")
set(apk_dir "$<TARGET_PROPERTY:${target},BINARY_DIR>/android-build")
add_custom_target(${target}_prepare_apk_dir
DEPENDS ${target}
Expand Down
16 changes: 15 additions & 1 deletion src/tools/androiddeployqt/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ struct Options
QString applicationBinary;
QString applicationArguments;
QString rootPath;
QString rccBinaryPath;
QStringList qmlImportPaths;
QStringList qrcFiles;

Expand Down Expand Up @@ -1004,6 +1005,12 @@ bool readInputFile(Options *options)
options->qmlImportScannerBinaryPath = qmlImportScannerBinaryPath.toString();
}

{
const QJsonValue rccBinaryPath = jsonObject.value(QLatin1String("rcc-binary"));
if (!rccBinaryPath.isUndefined())
options->rccBinaryPath = rccBinaryPath.toString();
}

{
const QJsonValue applicationBinary = jsonObject.value(QLatin1String("application-binary"));
if (applicationBinary.isUndefined()) {
Expand Down Expand Up @@ -1963,7 +1970,14 @@ bool createRcc(const Options &options)
if (options.verbose)
fprintf(stdout, "Create rcc bundle.\n");

QString rcc = options.qtInstallDirectory + QLatin1String("/bin/rcc");

QString rcc;
if (!options.rccBinaryPath.isEmpty()) {
rcc = options.rccBinaryPath;
} else {
rcc = options.qtInstallDirectory + QLatin1String("/bin/rcc");
}

#if defined(Q_OS_WIN32)
rcc += QLatin1String(".exe");
#endif
Expand Down

0 comments on commit 09ac1bd

Please sign in to comment.