РЕДАКТИРОВАТЬ: у меня есть значительный объем статистики для пользовательских устройств Android. Отчет предоставляет текущую архитектуру ЦП из библиотеки JNI в той же логике, что и ниже. Статистика также имеет содержание Build.MODEL
- около 2000 различных строк для ARM64. Список слишком велик для SO-ответа, поэтому я опубликовал его в другом месте. Наслаждайтесь.
Хотя нет гарантии. Существует вероятность того, что один оператор мобильной связи поставит модель с 32-разрядной ОС, а другой продаст ее с 64-разрядной.
Некоторые строки заняли бы немного Google. То, как поставщики устройств распространяют свою подпись по полям Build
, совсем не одинаково.
Если у вас есть компонент JNI, и вы создаете его для всех архитектур, введите условие, основанное на текущей цели компиляции, и запросите его со стороны Java.
extern "C" jboolean JNIEXPORT Java_com_acme_MyClass_Is64(JNIEnv *jni, jobject cl)
{
#if defined(__aarch64__) || defined(__amd64__)
return JNI_TRUE;
#else
return JNI_FALSE;
#endif
}
Игнорирование MIPS64, которое даже не поддерживается в современных версиях NDK. На стороне Java это будет доступно как:
package com.acme;
class MyClass
{
public static native boolean Is64();
}