是否有复制文件的宏或命令?我想将第三方库(libThirdParty.so)复制到输出目录(lib)。这是我的Android.mk文件的内容
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndkFoo
LOCAL_SRC_FILES := ndkFoo.c
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
答案 0 :(得分:2)
我为我生成的一个.cpp文件添加了一个构建步骤;你可以做类似的事情。
请注意,有人告诉我,Google正在做的事情并不支持,因此请自行承担风险。不过,我一直在使用类似下面代码的东西超过一年。以下是对它的外观的粗略概念:
LOCAL_PATH:= $(call my-dir)
# this was important for some cases; can't remember if it's important here, but I don't want to steer you wrong if it isn't
REAL_LOCAL_PATH:=$(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := ndkFoo
# again, I'm being paranoid here
REAL_LOCAL_MODULE := $(LOCAL_MODULE)
LOCAL_SRC_FILES := ndkFoo.c
$(REAL_LOCAL_PATH)/obj/local/armeabi/$(REAL_LOCAL_MODULE).so : $(REAL_LOCAL_PATH)/libs/armeabi/libThirdParty.so
$(REAL_LOCAL_PATH)/libs/armeabi/libThirdParty.so : $(PATH_TO_LIB_THIRD_PARTY)/libThirdParty.so
cp $(PATH_TO_LIB_THIRD_PARTY)/libThirdParty.so $(REAL_LOCAL_PATH)/libs/armeabi/libThirdParty.so
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
请注意,您需要定义PATH_TO_LIB_THIRD_PARTY。
另请注意,复制粘贴可能有效,也可能无效。众所周知,Makefiles对缩进很挑剔。我确保“cp”行有一个真正的制表符缩进,并且没有其他内容缩进。如果“cp”不起作用,则make可能会委托给CMD,您可以尝试“复制”。
祝你好运。答案 1 :(得分:0)
我知道这个帖子已经老了,但是在我自己搜索的时候找到了它。
来自PowerVR SDK,Android.mk文件。
您可以创建文件夹和复制文件。
PVRSDKDIR := $(LOCAL_PATH)
ASSETDIR := $(PVRSDKDIR)/TrainingCourse/IntroducingPOD/OGLES2/Build/Android/assets
$(ASSETDIR):
-mkdir $(ASSETDIR)
$(ASSETDIR)/tex_base.pvr: $(ASSETDIR) $(PVRSDKDIR)/TrainingCourse/IntroducingPOD/OGLES2/tex_base.pvr
cp "$(PVRSDKDIR)/TrainingCourse/IntroducingPOD/OGLES2/tex_base.pvr" "$(ASSETDIR)/"
答案 2 :(得分:0)
Google的功能完全适用于您的用例:PREBUILT_SHARED_LIBRARY
如果您查看NDK中包含的docs
目录中的文档,您会发现ANDROID-MK.html
会简要提及此功能,PREBUILTS.html
会完整记录该功能。您可以指定源目录和目标目录,并且可以在复制文件时为该文件指定新名称。
还有PREBUILD_STATIC_LIBRARY
对静态库做同样的事情。
有可能欺骗它复制任意文件......上述功能分别由prebuilt-shared-library.mk
和prebuilt-static-library.mk
调用的文件实现。在里面,他们定义了一个必须在文件上的扩展名(分别为.so
和.a
)。您可以创建另一个.mk文件,定义其他扩展名以启用复制其他类型的文件。但是我们只需要复制库,而我们还没有尝试过欺骗构建系统。
P.S。这篇博文很有意思。它指的是BUILD_PREBUILT
,它在我的NDK副本中不存在。我想知道这篇博文是否引用了早期版本的NDK,它有BUILD_PREBUILT
来复制任何类型的文件(没有检查所需的扩展名)。
http://karthiksden.blogspot.com/2011/03/copying-data-files-using-androidmk.html