안드로이드 장치에서 SailfishOS+Alien Dalvik을 자동으로 구별하는 명령

안드로이드 장치에서 SailfishOS+Alien Dalvik을 자동으로 구별하는 명령

EDIT0: 스마트폰이 3개 있습니다.

SailfishOS v3 + Alien Dalvik이 탑재된 Jolla1 스마트폰 1대와 안드로이드 스마트폰 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

두 번째 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)

지금:SailfishOSLinux 커널을 기반으로 한 진정한 Linux입니다.Mer 프로젝트 소프트웨어 배포(마지막은 단종된 제품에서 포크되었습니다.미고리눅스 배포판)

답변1

세 가지 별개의 응답을 다시 받고 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)

여기에 이미지 설명을 입력하세요

관련 정보