Команда для автоматизации дифференциации SailfishOS+Alien Dalvik с устройства Android

Команда для автоматизации дифференциации SailfishOS+Alien Dalvik с устройства Android

EDIT0: У меня 3 смартфона:

Один смартфон Jolla1 с SailfishOS v3 + Alien Dalvik и 2 смартфона на базе Android.

Я хочу иметь возможность различать их на языке оболочки:

На моем Jolla1 Linux:

$ uname -s
Linux
$ getprop ro.build.version.release
4.1.2
$ uname -a 
Linux myJolla1 3.4.108.20190506.1 #1 SMP PREEMPT Wed Oct 9 18:24:45 UTC 2019 armv7l armv7l armv7l GNU/Linux

На моем первом смартфоне Android через adb shell:

shell@hlteatt:/ $ getprop ro.build.version.release
5.0
shell@hlteatt:/ $ uname -s
/system/bin/sh: uname: not found
127|shell@hlteatt:/ $ uname -a
/system/bin/sh: uname: not found

На моем втором смартфоне Android через adb shell:

BV9500Pro:/ $ uname -s
Linux
BV9500Pro:/ $ getprop ro.build.version.release
8.1.0
BV9500Pro:/ $ uname -a                                                                                                                             
Linux localhost 4.4.95 #9 SMP PREEMPT Wed Mar 20 18:03:34 CST 2019 aarch64

Я попробовал это, но на обоих устройствах есть этот getpropинструмент, поэтому это не работает:

getprop 2>/dev/null | grep -q ro.build.version.release && export osFamily=Android || export osFamily=$(uname -s)

КСТАТИ :SailfishOSэто настоящий Linux, основанный на ядре Linux +Распространение программного обеспечения проекта Mer(последний был ответвлением от прекращенногоMeeGo(Дистрибутив Linux)

решение1

Вы можете получить три различных ответа uname -mи использовать это.

Мы ожидаем ответа об ошибке от устройства без uname, но мы подавляем ошибку и принимаем пустой ответ в качестве индикатора.

case "$(uname -m 2>/dev/null)" in
  (armv7l)  DEVICE=Jolla ;;
  (aarch64) DEVICE=Android1 ;;
  ("")      DEVICE=Android2 ;;
  (*)       DEVICE=UNKNOWN ;;
esac

Хотя мы могли бы ссылаться на номера версий программного обеспечения, они могут измениться при обновлении ОС. Использование информации об оборудовании более надежно в ваших текущих обстоятельствах, но приведет к ложным срабатываниям, если вы получите дополнительные устройства с той же аппаратной архитектурой.

решение2

Другой способ — установить bash (например, приложение Termux) на все устройства Android и заставить скрипт проверить OSTYPEпеременную bash:

На устройстве Android 8.1 OSTYPEпеременная bash равна linux-android(см. скриншот ниже)

Поэтому команда для дифференциации будет следующей:

echo $OSTYPE | grep -q android && export osFamily=Android || export osFamily=$(uname -s)

введите описание изображения здесь

Связанный контент