Android: Fix opening of package location after build

Fixes and consolidates into one common function the package path
retrieval for the eight combinations of:

(apk|aab)(debug|release)(signed|unsigned)

Fixes: QTCREATORBUG-28791
Change-Id: I6e8c54f555b95aca448032783938f9f7f89bc653
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
Alessandro Portale
2023-02-21 18:13:02 +01:00
parent 5c4cf2d018
commit b9a24753a0
4 changed files with 31 additions and 18 deletions

View File

@@ -533,15 +533,7 @@ bool AndroidBuildApkStep::init()
m_openPackageLocationForRun = m_openPackageLocation; m_openPackageLocationForRun = m_openPackageLocation;
const FilePath outputDir = AndroidManager::androidBuildDirectory(target()); const FilePath outputDir = AndroidManager::androidBuildDirectory(target());
m_packagePath = AndroidManager::packagePath(target());
if (m_buildAAB) {
const QString bt = buildType() == BuildConfiguration::Release ? QLatin1String("release")
: QLatin1String("debug");
m_packagePath = outputDir.pathAppended(
QString("build/outputs/bundle/%1/android-build-%1.aab").arg(bt));
} else {
m_packagePath = AndroidManager::apkPath(target());
}
qCDebug(buildapkstepLog).noquote() << "APK or AAB path:" << m_packagePath.toUserOutput(); qCDebug(buildapkstepLog).noquote() << "APK or AAB path:" << m_packagePath.toUserOutput();

View File

@@ -251,7 +251,7 @@ bool AndroidDeployQtStep::init()
} else { } else {
m_uninstallPreviousPackageRun = true; m_uninstallPreviousPackageRun = true;
m_command = AndroidConfigurations::currentConfig().adbToolPath(); m_command = AndroidConfigurations::currentConfig().adbToolPath();
m_apkPath = AndroidManager::apkPath(target()); m_apkPath = AndroidManager::packagePath(target());
m_workingDirectory = bc ? AndroidManager::buildDirectory(target()): FilePath(); m_workingDirectory = bc ? AndroidManager::buildDirectory(target()): FilePath();
} }
m_environment = bc ? bc->environment() : Utils::Environment(); m_environment = bc ? bc->environment() : Utils::Environment();

View File

@@ -268,7 +268,31 @@ FilePath AndroidManager::buildDirectory(const Target *target)
return {}; return {};
} }
FilePath AndroidManager::apkPath(const Target *target) enum PackageFormat {
Apk,
Aab
};
QString packageSubPath(PackageFormat format, BuildConfiguration::BuildType buildType, bool sig)
{
const bool deb = (buildType == BuildConfiguration::Debug);
if (format == Apk) {
if (deb)
return sig ? packageSubPath(Apk, BuildConfiguration::Release, true) // Intentional
: QLatin1String("apk/debug/android-build-debug.apk");
else
return QLatin1String(sig ? "apk/release/android-build-release-signed.apk"
: "apk/release/android-build-release-unsigned.apk");
} else {
return QLatin1String(deb ? "bundle/debug/android-build-debug.aab"
: "bundle/release/android-build-release.aab");
}
return {};
}
FilePath AndroidManager::packagePath(const Target *target)
{ {
QTC_ASSERT(target, return {}); QTC_ASSERT(target, return {});
@@ -279,13 +303,10 @@ FilePath AndroidManager::apkPath(const Target *target)
if (!buildApkStep) if (!buildApkStep)
return {}; return {};
QString apkPath("build/outputs/apk/android-build-"); const QString subPath = packageSubPath(buildApkStep->buildAAB() ? Aab : Apk,
if (buildApkStep->signPackage()) bc->buildType(), buildApkStep->signPackage());
apkPath += QLatin1String("release.apk");
else
apkPath += QLatin1String("debug.apk");
return androidBuildDirectory(target) / apkPath; return androidBuildDirectory(target) / "build/outputs" / subPath;
} }
bool AndroidManager::matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis) bool AndroidManager::matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis)

View File

@@ -78,7 +78,7 @@ public:
static Utils::FilePath manifestPath(const ProjectExplorer::Target *target); static Utils::FilePath manifestPath(const ProjectExplorer::Target *target);
static void setManifestPath(ProjectExplorer::Target *target, const Utils::FilePath &path); static void setManifestPath(ProjectExplorer::Target *target, const Utils::FilePath &path);
static Utils::FilePath manifestSourcePath(const ProjectExplorer::Target *target); static Utils::FilePath manifestSourcePath(const ProjectExplorer::Target *target);
static Utils::FilePath apkPath(const ProjectExplorer::Target *target); static Utils::FilePath packagePath(const ProjectExplorer::Target *target);
static bool matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis); static bool matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis);
static QString devicePreferredAbi(const QStringList &deviceAbis, const QStringList &appAbis); static QString devicePreferredAbi(const QStringList &deviceAbis, const QStringList &appAbis);
static ProjectExplorer::Abi androidAbi2Abi(const QString &androidAbi); static ProjectExplorer::Abi androidAbi2Abi(const QString &androidAbi);