41

アプリの一部として NDK を使用していますが、x86 と mips バイナリを標準の ARM バイナリと一緒にバンドルする価値があるかどうか疑問に思っていました。

ユーザーが実際に持っているものを追跡するのが最善の方法であると考えました。これを Google アナリティクス インスタンスに戻すことができるように、プロセッサ アーキテクチャを取得するための API 呼び出しはありますか?

ありがとう

4

8 に答える 8

77

実際、リフレクションをまったく必要とせずにアーキテクチャを取得できます。

String arch = System.getProperty("os.arch");

私のテストから、それは返さarmv71i686ました.

編集:

MIPS アーキテクチャでは、「mips」または「mips64」を返します。

64 ビット ARM/Intel では、それぞれ「aarch64」または「x86_64」を返します。

于 2012-08-22T12:26:34.703 に答える
17

Android SDK を使用することもできます。Buildクラスを見てください。

    /** The name of the instruction set (CPU type + ABI convention) of native code. */
    public static final String CPU_ABI = getString("ro.product.cpu.abi");

    /** The name of the second instruction set (CPU type + ABI convention) of native code. */
    public static final String CPU_ABI2 = getString("ro.product.cpu.abi2");
于 2013-06-16T14:35:35.437 に答える
14

Buildクラスを使用できます。

import android.os.Build;

そして読んでください:

Build.CPU_ABI

于 2014-12-26T02:36:29.377 に答える
6

あなたが探している値は

ro.product.cpu.abi

ro.product.cpu.abi2

これらは、内部 API SystemProperties.get を使用して取得できます。そのため、SystemProperties で Reflection を使用する必要があります。

リフレクションにあまり熱心でない場合は、関数 getSystemProperty を使用できます。ここで確認してください

于 2012-08-16T14:54:33.883 に答える
2

私のコードは次のようになります

private String cpuinfo()
{
String arch = System.getProperty("os.arch");    
String arc = arch.substring(0, 3).toUpperCase();
String rarc="";
if (arc.equals("ARM")) {
    rarc= "This is ARM";
    }else if (arc.equals("MIP")){
        rarc= "This is MIPS";
    }else if (arc.equals("X86")){
        rarc= "This is X86";
    }
    return rarc;
}
于 2013-08-20T20:25:01.853 に答える