AndroidデバイスからSailfishOS+Alien Dalvikの差別化を自動化するコマンド

AndroidデバイスからSailfishOS+Alien Dalvikの差別化を自動化するコマンド

編集0: 私はスマートフォンを3台持っています:

SailfishOS v3 + Alien Dalvik を搭載した Jolla1 スマートフォン 1 台と Android スマートフォン 2 台。

シェル言語でそれらを区別できるようにしたい:

私の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

2台目の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)

ところで:セイルフィッシュOSLinuxカーネルをベースにした真のLinuxであり、Merプロジェクトソフトウェア配布(最後のものは廃止されたミーゴーLinuxディストリビューション

答え1

3 つの異なる応答が返されuname -m、それを活用できます。

なしでデバイスから失敗応答が返されることを予想しますunameが、エラーを抑制し、空の応答をインジケーターとして使用します。

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

ソフトウェアのバージョン番号を参照することもできますが、OS が更新されると、バージョン番号も変更される可能性があります。現在の状況ではハードウェア情報を使用する方が信頼性は高くなりますが、同じハードウェア アーキテクチャを共有するデバイスをさらに入手した場合は、誤検知が発生する可能性があります。

答え2

別の方法としては、すべての Android デバイスに bash (たとえば、Termux アプリ) をインストールし、スクリプトでOSTYPEbash 変数をテストする方法があります。

Android 8.1デバイスでは、OSTYPEbash変数は次のようになりますlinux-android(下のスクリーンショットを参照)。

したがって、微分するコマンドは次のようになります。

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

ここに画像の説明を入力してください

関連情報