经过查找资料,发现..\proj.android\jni下的Android.mk文件,可以看到LOCAL_WHOLE_STATIC_LIBRARIES和import-module这个两个关键字样和图6。
图:
根据《Android build system & Android.mk 规范》上的解析LOCAL_WHOLE_STATIC_LIBRARIES--一个用于表示相应的库模块被用作为“整个档案”到链接程序的变量。当几个静态库之间有循环依赖关系的时候,通常是很有益的。注意,当用来编译一个动态库的时候,这将迫使你将所有的静态库中的对象文件添加到最终的二进制文件中。但生成可执行程序时,这是不确定的。 所以我们要把cocos_extension_static库模块添加到LOCAL_WHOLE_STATIC_
LIBRARIES。
其实这还是不够的,我们还要通过import-module导入该模块的的Android.mk的。 根据《Android build system & Android.mk 规范》上的解析import-module--一个允许你通过名字找到并包含另一个模块的的Android.mk的功能,例如$(call import-module,<name>)这将会找到通过NDK_MODULE_PAT环境变量引用的模块<name>的目录列表,并且将其自动包含到Android.mk中。
也就是说LOCAL_WHOLE_STATIC_LIBRARIES作用是包含模块,import-module导入该模块的Android.mk,并且通过NDK_MODULE_PAT环境变量引用的模块<name>的目录列表,让程序搜索到extension目录。
由于..\proj.android\jni下的Android.mk已经把我们写好了,如图6中所示,但是它们之前有个#号,这是注释的作用。所以,我们把相应的#去掉就可以包含相对应的模块了,如图7。
图:
最后,再重新进行编译,然后就发现大功告成了:
在没有编译通过之前,我把proj.android导入Eclipse工程的时候,出现这个错误:
经过上面的修改,编译通过后再导入Eclipse就行了。
原文参考了:http://blog.csdn.net/cbbbc/article/details/39228155
参考网址: