【发布时间】:2016-09-01 14:40:38
【问题描述】:
先决条件:我使用的是 Android Studio 2.1.2
我已经从以下链接下载了 jsoncpp 的源代码
https://github.com/open-source-parsers/jsoncpp
我已经检查了以下 SO 线程,没有得到正确的解决方案:
Using JsonCpp on X-Cross platform library
我常用的Android.mk如下:
LOCAL_PATH := $(call my-dir)
#JsonCpp lib
include $(CLEAR_VARS)
LOCAL_MODULE := jsoncpplib
include $(LOCAL_PATH)/jsnlib/Android.mk
LOCAL_STATIC_LIBRARIES := jsnlib
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
还有用于构建其他一些库的代码,运行良好。
我的jsoncpp的Android.mk如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/jsnlib/include/json/*.h
FILE_LIST += $(wildcard $(LOCAL_PATH)/jsnlib/src/lib_json/*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_MODULE := jsnlib
LOCAL_MODULE_FILENAME:= libjsnlib
include $(BUILD_STATIC_LIBRARY)
当我执行 ndk-build 时总是出现以下错误
Android NDK: jni/jsnlib/Android.mk:jsnlib: LOCAL_MODULE_FILENAME should not include file extensions
Android NDK: jni/jsnlib/Android.mk:jsnlib: LOCAL_MODULE_FILENAME must not contain a file extension
【问题讨论】:
-
在这种情况下你为什么需要
LOCAL_MODULE_FILENAME?好像你可以直接删除它。 -
@Michael 也尝试删除它,没有变化,得到同样的错误。还尝试了 LOCAL_C_INCLUDES := $(LOCAL_PATH)/jsnlib/include/json 的另一件事,但没有成功。
-
好吧,您应该将
include $(LOCAL_PATH)/jsnlib/Android.mk移动到您的主Android.mk 中,使其位于include $(CLEAR_VARS)上方。 -
非常感谢您的意见。现在我可以为 jsoncpp 构建 .so。唯一的问题是,当我在构建时将包含的 make 文件转移到其给出的问题之上时,我在它上面包含的 cpp 文件也是如此。这是另一个问题,我可能需要为本地路径声明单独的 var,然后它将得到修复。这就是我的想法。你能把你的意见放在答案中吗?以便我接受你的回答。
标签: android-studio android-ndk jsoncpp