AndEngine示例构建NDK时出错

4

我正在尝试在我的 MacOS Android Studio 2.3.2 上构建 AndEngine 示例。 但是出现了这个错误。无法确定问题所在。奇怪的是,同样的项目可以在 Windows 上正常构建,Android Studio 版本也相同。

> FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':andEngine:externalNativeBuildRelease'.
> Build command failed.
  Error while executing process /Users/apple/Library/Android/sdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/apple/Documents/workspace/AndroidStudio/AndEngineExamples-GLES2/andEngine/src/main/jni/Android.mk     

  NDK_APPLICATION_MK=/Users/apple/Documents/workspace/AndroidStudio/AndEngineExamples-GLES2/andEngine/src/main/jni/Application.mk APP_ABI=mips NDK_ALL_ABIS=mips NDK_DEBUG=0 APP_PLATFORM=android-9 NDK_OUT=/Users/apple/Documents/workspace/AndroidStudio/AndEngineExamples-GLES2/andEngine/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT=/Users/apple/Documents/workspace/AndroidStudio/AndEngineExamples-GLES2/andEngine/build/intermediates/ndkBuild/release/lib /Users/apple/Documents/workspace/AndroidStudio/AndEngineExamples-GLES2/andEngine/build/intermediates/ndkBuild/release/obj/local/mips/libandengine.so}
  Android NDK: android-9 is unsupported. Using minimum supported version android-14.    
  [mips] Compile++      : andengine_shared <= BufferUtils.cpp
  /Users/apple/Documents/workspace/AndroidStudio/AndEngineExamples-GLES2/andEngine/src/main/jni/src/BufferUtils.cpp:13:2: error: use of undeclared identifier 'memcpy'
          memcpy(bufferAddress, dataAddress + pOffset, pLength << 2);
          ^

我的Application.mk文件:

# Build both ARMv5TE and ARMv7-A and x86 machine code.
APP_ABI := armeabi armeabi-v7a x86
APP_STL := gnustl_shared

And Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE             := andengine_shared
LOCAL_MODULE_FILENAME    := libandengine
LOCAL_CFLAGS             := -Werror
LOCAL_SRC_FILES          := src/GLES20Fix.c \
                             src/BufferUtils.cpp
LOCAL_LDLIBS             := -lGLESv2
LOCAL_EXPORT_C_INCLUDES  := $(LOCAL_PATH)/src

include $(BUILD_SHARED_LIBRARY)

你可能已经意识到了,它找不到“memcpy”的定义。你使用的NDK版本是什么?鉴于你的Application.mk文件,你的目标设备是什么? - yakobom
2个回答

3
Android NDK: android-9不受支持。使用最小支持版本android-14。
在Application.mk文件中添加APP_PLATFORM := android-14
如果没有这一行,则从project.properties文件中获取SDK版本。

1
Android Studio会覆盖Application.mk文件中的一些设置。例如,它会覆盖APP_ABI。您应该添加。
defaultConfig {
    ...
    externalNativeBuild {
        ndkBuild {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }
}

添加到您的 app/build.gradle 文件中。您不用担心警告说最低支持版本是 android-14,但请注意,目前仍处于beta版的NDK r15。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接