好吧,我在 stackoverflow 中看到了 4 个类似的问题(this、this、this和this)。我尝试了那里给出的答案。我必须说一个答案对我有用,但文档明确说不要使用这种方法。所以我在这里问..
我的项目设置
- 在 Mac OS X Mountain Lion 10.8.2、Eclipse Juno、gcc 4.2.1、GNU Make 3.8.1 上运行。
- 我的项目是一个学习NDK的测试项目,目标API 16,打算支持API 8及以上。
- 我的项目在 path
~/Desktop/PROJECT/ANDROID/WORKSPACE/NDKResearch
。 - 我的 NDK 路径是
~/Documents/ANDROID/android_ndk_r8a
我不知道路径信息有什么帮助。但是我总是在 bash 中给出正确的路径时遇到问题。所以只是在这里发布。
我做了什么?
在我的 NDKResearch 项目中,我添加了一个Android.mk
文件(路径 $MY_PROJECT_PATH/jni/Android.mk
:)
include $(CLEAR_VARS)
LOCAL_PATH:= $(call my-dir)
LOCAL_CPP_FEATURES += -fno-exceptions
LOCAL_SRC_FILES := \
Log.c \
Calculate.c
LOCAL_MODULE := libSoundTouch
include $(BUILD_SHARED_LIBRARY)
在. Application.mk
_$MY_PROJECT_PATH/jni/Application.mk
APP_PLATFORM := android-16
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_PROJECT_PATH := /Users/myusername/Desktop/PROJECTS/ANDROID/WORKSPACE/NDKResearch
然后我ndk-build
在 bash shell 中执行
## cd ~/Desktop/PROJECT/ANDROID/WORKSPACE/NDKResearch
## ~/Documents/ANDROID/android_ndk_r8a/ndk-build
只是为了得到标题中提到的错误。
我的问题是什么?
从上面链接的线程中,用户 sege 的回答确实对我有用。其他人都没有。但是 ndk 的文档明确声明不要使用这种方法。来自 ndk 附带的 Overview.html 文件(找不到在线版本)。
有两种使用 Application.mk 的方法:
将它放在 $PROJECT/jni/Application.mk 下,它会被“ndk-build”脚本自动拾取(稍后会详细介绍)
将它放在 $NDK/apps//Application.mk 下,其中 $NDK 指向您的 NDK 安装路径。之后,从 NDK 目录启动“make APP=”。
这是在 Android NDK r4 之前使用此文件的方式。出于兼容性原因,它仍然受支持,但我们强烈建议您改用第一种方法,因为它更简单,并且不需要修改/更改 NDK 安装树的目录。
所以我的问题是,有人用第一种方法成功了吗?它不工作的任何原因?