アプリの一部として NDK を使用していますが、x86 と mips バイナリを標準の ARM バイナリと一緒にバンドルする価値があるかどうか疑問に思っていました。
ユーザーが実際に持っているものを追跡するのが最善の方法であると考えました。これを Google アナリティクス インスタンスに戻すことができるように、プロセッサ アーキテクチャを取得するための API 呼び出しはありますか?
ありがとう
アプリの一部として NDK を使用していますが、x86 と mips バイナリを標準の ARM バイナリと一緒にバンドルする価値があるかどうか疑問に思っていました。
ユーザーが実際に持っているものを追跡するのが最善の方法であると考えました。これを Google アナリティクス インスタンスに戻すことができるように、プロセッサ アーキテクチャを取得するための API 呼び出しはありますか?
ありがとう
実際、リフレクションをまったく必要とせずにアーキテクチャを取得できます。
String arch = System.getProperty("os.arch");
私のテストから、それは返さarmv71
れi686
ました.
編集:
MIPS アーキテクチャでは、「mips」または「mips64」を返します。
64 ビット ARM/Intel では、それぞれ「aarch64」または「x86_64」を返します。
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");
あなたが探している値は
ro.product.cpu.abi
と
ro.product.cpu.abi2
これらは、内部 API SystemProperties.get を使用して取得できます。そのため、SystemProperties で Reflection を使用する必要があります。
リフレクションにあまり熱心でない場合は、関数 getSystemProperty を使用できます。ここで確認してください
私のコードは次のようになります
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;
}