1

LOCAL_ARM_NEON := trueネオンの指示がなくても、android.mkを追加するとアプリケーションが中止されます。「-mfpu=neon」などのいくつかの単語も中断を引き起こします。

私の電話は motorola android2.2
です Android NDK の設定が正しくありませんか? または私の携帯電話の腕はネオン命令をサポートできませんか? 携帯電話でネオン命令を実行する必要があります。

助けて!!!ありがとう!!!

ps: アプリケーション.mk:

APP_STL := gnustl_static
APP_ABI := armeabi-v7a
APP_CPPFLAGS += -fexceptions
APP_MODULES := AudioEngine

android.mk:

CC = $(BASE_PATH)/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc 
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_ARM_NEON := true
LOCAL_MODULE    := AudioEngine
LOCAL_SRC_FILES := AudioEngine.cpp Effecter.cpp SoundTouch.cpp TDStretch.cpp RateTransposer.cpp AAFilter.cpp BPMDetect.cpp \
FIFOSampleBuffer.cpp FIRFilter.cpp mmx_optimized.cpp PeakFinder.cpp sse_optimized.cpp cpu_detect_x86.cpp fft.s\
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)
4

2 に答える 2

1

CPU が NEON をサポートしているかどうかを確認するために作成した 2 つ目の小さな .so ライブラリを使用します。確認後、ロードする必要があるライブラリのバージョンを Java で決定します。1 つは完全な NEON サポートでビルドされ、もう 1 つは NEON サポートがまったくサポートされていません。これは、NDK ドキュメントから取得したコードです。

JNIEXPORT JNICALL int Java_xypackagename_base_detectCPU_isNeon( JNIEnv* _env, jobject thiz )
{
    uint64_t features;

    if (android_getCpuFamily() != ANDROID_CPU_FAMILY_ARM)
    {
        __android_log_write( ANDROID_LOG_INFO, "detectCPU", "Processor is NOT an ARM processor" );
        return 0;
    }

    __android_log_write( ANDROID_LOG_INFO, "detectCPU", "Processor is an ARM processor" );

    features = android_getCpuFeatures();

    __android_log_print( ANDROID_LOG_INFO, "detectCPU", "Processor features: %u", (unsigned int)features );

    if ((features & ANDROID_CPU_ARM_FEATURE_ARMv7) == 0)
    {
        __android_log_write( ANDROID_LOG_INFO, "detectCPU", "Processor is NOT an ARM v7" );
        return 0;
    }

    __android_log_write( ANDROID_LOG_INFO, "detectCPU", "Processor is an ARM v7" );

    if ((features & ANDROID_CPU_ARM_FEATURE_NEON) == 0)
    {
        __android_log_write( ANDROID_LOG_INFO, "detectCPU", "Processor has NO NEON support" );
        return 0;
    }

    __android_log_write( ANDROID_LOG_INFO, "detectCPU", "Processor has NEON support" );

    return 1;
}
于 2013-01-29T15:22:41.687 に答える