16

Android デバイスのプラットフォームを識別するには、Java システム プロパティ「os.arch」で十分なようです。

Log.i("mytag", "os.arch: " + System.getProperty("os.arch"));

ほとんどの ARM デバイスは次のように応答します。os.arch: armv7l

x86 エミュレーターは次のように応答します。os.arch: i686

実際のIntel および MIPS デバイスの出力は何ですか?

x86 Android デバイス: ??????

mips Android デバイス: ??????

他のプラットフォームとバリアントはありますか?

Google TV の編集:

Google TV はビルド コードに「none」を使用しているようです。

Vizio 共演者: os.arch: armv7l 、Build.CPU_ABI/Build.CPU_ABI2: なし/不明

Logitech Revue: os.arch: i686 、Build.CPU_ABI/Build.CPU_ABI2: なし/不明

意図を明確にするための編集:

ここでの目標は、実際のデバイスのリストとその出力をクラウドソーシングして編集することです。AOSP コードから期待される出力は興味深いものですが、上記の古い Google TV ユニットのようなデバイス メーカーは、AOSP コードから期待される出力を提供することから逸脱する可能性があります。

4

3 に答える 3

12

Androidソースツリーで見つけたものによると、プロパティ( Buildクラスを介してro.product.cpu.abiアクセスできます)には、次のアーキテクチャから値へのマッピングが必要です。CPU_ABI

32 ビット ABI:

ARM : "armeabi-v7a" (または、本当に古い/ローエンドのデバイスの場合は "armeabi")

x86 : "x86"

MIPS : "ミップス"


64 ビット ABI:

アーム : " arm64 -v8a"

x86 : "x86_64"

MIPS : "mips64"

于 2013-03-22T15:11:11.977 に答える
3

これらの値は、Linux 構造から取得されます。によってシェルから表示できますcat /proc/cpuinfo。ARM はそれらをarch/arm/mmディレクトリで定義します。このディレクトリから、

grep cpu_arch_name * | grep string | cut -d \, -f2 | sort | uniq
  • armv4
  • armv4t
  • armv5t
  • armv5te
  • armv5tej
  • armv6
  • armv7

arm7lは「リトルエンディアン」モード示しますが、これは選択可能であり、カーネルに依存します。ネットワーク中心の製品 (Android ルーターなど) でない限り、ほとんどの ARM カーネルは「リトル エンディアン」になると思います。これは と同じuname -mです。x86 では、PowerPC では "i686" を返し、"ppc" を返します。私は MIPS システムを持っていませんが、私の推測では "mips" ですが、cpu-probe.cにある品揃えである可能性があります。

Linux には 20 以上のアーキテクチャがあり、すべて CPU バージョンが異なります。答えは、現在の Android ポートでははるかに少ないです。ただし、将来的にはそれらのいずれかを使用できる可能性があります。サブアーキテクチャを送信しているのは ARM だけだと思います。

関連項目: uname()man pageWikipedia のUnameServer faults の uname machinesOpenJdk メーリング リスト

于 2013-03-09T22:11:47.453 に答える
0

これは助けになるかもしれません

  1. Build.CPU_ABI ネイティブ コードの命令セットの名前 (CPU タイプ + ABI 規則)。
  2. Build.CPU_ABI2 ネイティブ コードの 2 番目の命令セット (CPU タイプ + ABI 規則) の名前。

詳細情報 Android ビルド クラス

于 2014-07-10T03:59:26.533 に答える