Android: Get the preferred Abi from apk & device

Change-Id: I47325aaec0575dde0e9c9669e61248dac753c670
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
BogDan Vatra
2019-11-21 11:03:03 +02:00
committed by BogDan Vatra
parent efa857e693
commit e21fe24c40
3 changed files with 20 additions and 3 deletions

View File

@@ -423,9 +423,8 @@ void AndroidManager::setDeviceSerialNumber(ProjectExplorer::Target *target, cons
target->setNamedSettings(AndroidDeviceSn, deviceSerialNumber);
}
QString AndroidManager::devicePreferredAbi(Target *target)
static QString preferredAbi(const QStringList &appAbis, Target *target)
{
auto appAbis = applicationAbis(target);
const auto deviceAbis = target->namedSettings(AndroidDeviceAbis).toStringList();
for (const auto &abi : deviceAbis) {
if (appAbis.contains(abi))
@@ -434,6 +433,21 @@ QString AndroidManager::devicePreferredAbi(Target *target)
return {};
}
QString AndroidManager::devicePreferredAbi(Target *target)
{
return preferredAbi(applicationAbis(target), target);
}
QString AndroidManager::apkDevicePreferredAbi(Target *target)
{
auto libsPath = dirPath(target).pathAppended("libs");
QStringList apkAbis;
for (const auto &abi : QDir{libsPath.toString()}.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
if (QDir{libsPath.pathAppended(abi).toString()}.entryList(QStringList("*.so"), QDir::Files | QDir::NoDotAndDotDot).length())
apkAbis << abi;
return preferredAbi(apkAbis, target);
}
void AndroidManager::setDeviceAbis(ProjectExplorer::Target *target, const QStringList &deviceAbis)
{
target->setNamedSettings(AndroidDeviceAbis, deviceAbis);