Intereting Posts
Как изменить изображения на imageView через некоторый интервал Проверьте равные и не равные условия для двойных значений Тайм-аут соединения сокета Опубликовать данные объекта Json, чтобы получить ответ массива Json с помощью volley in android Почему мой ProgressDialog прослушивает ЛЮБОЙ КЛЮЧ (прикосновение) вместо откидывания, чтобы отклонить его? Использование ресурса эспрессо на холостом ходу с несколькими действиями Есть ли клиент электронной почты с открытым исходным кодом для Android? Изменить цвет текста простого списка ViewView Множественный выбор Android Обратное геокодирование – Сервис недоступен – Перезапустить устройство, не решающее окончательно – критиковать мое ручное обратное геокодирование Как установить конфигурацию USB по умолчанию для Android M на MTP, а не на «только зарядку»? Как распространять файлы apk для моих друзей? Как установить исходный код ImageViews на Android? Как использовать держатель вида, если пользовательский список содержимого списка является динамическим? Android SDK: как настроить яркость экрана Исключение Android Spinner при нажатии BadTokenException

Как включить ARM NEON с помощью Gradle?

Поскольку Gradle кажется новой жаркой, которую толкнул Google через Android.mk, как включить NEON для сборки ARM? Я явно не заинтересован в решениях, которые вызывают устаревший файл Android.mk, поскольку я хочу, чтобы ARM NEON-сборки работали, используя только новую систему Gradle, а не гибридный подход.

Вот взломанный тест build.gradle из проекта hello-jni в NDK:

apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.2" defaultConfig.with { applicationId = "com.example.hellojni" minSdkVersion.apiLevel = 4 targetSdkVersion.apiLevel = 23 } } compileOptions.with { sourceCompatibility=JavaVersion.VERSION_1_7 targetCompatibility=JavaVersion.VERSION_1_7 } /* * native build settings */ android.ndk { moduleName = "hello-jni" /* * Other ndk flags configurable here are * cppFlags.add("-fno-rtti") * cppFlags.add("-fno-exceptions") * ldLibs.addAll(["android", "log"]) * stl = "system" */ cppFlags.add("-std=c++11") cppFlags.add("-fexceptions") cppFlags.add("-DNOPENCL") stl = "c++_static" } android.buildTypes { release { minifyEnabled = false proguardFiles.add(file('proguard-rules.txt')) } } android.productFlavors { // for detailed abiFilter descriptions, refer to "Supported ABIs" @ // https://developer.android.com/ndk/guides/abis.html#sa create("arm7") { ndk.abiFilters.add("armeabi-v7a") } create("x86") { ndk.abiFilters.add("x86") } create("x86-64") { ndk.abiFilters.add("x86_64") } } } 

Однако __ARM_NEON__ не определяется в соответствии со следующим кодом:

 #if defined(__arm__) #if defined(__ARM_ARCH_7A__) #if defined(__ARM_NEON__) #if defined(__ARM_PCS_VFP) #define ABI "armeabi-v7a/NEON (hard-float)" #else #define ABI "armeabi-v7a/NEON" #endif #else #if defined(__ARM_PCS_VFP) #define ABI "armeabi-v7a (hard-float)" #else #define ABI "armeabi-v7a" #endif #endif #else #define ABI "armeabi" #endif #elif defined(__i386__) #define ABI "x86" #elif defined(__x86_64__) #define ABI "x86_64" #elif defined(__mips64) /* mips64el-* toolchain defines __mips__ too */ #define ABI "mips64" #elif defined(__mips__) #define ABI "mips" #elif defined(__aarch64__) #define ABI "arm64-v8a" #else #define ABI "unknown" #endif 

Есть предположения? Я также попытался настроить abiFilters на armeabi-v7a-hard без везения, а также явно передать -mfloat-abi=hard и -mfpu-neon как cppFlags (но это, очевидно, нарушает сборку для других платформ).