经过一下午的研究,终于让catcake的samples完全跑起来了,但是离真正的开发,还有一段距离。
catcake的code地址为http://code.google.com/p/catcake/
我们可以看到这样的文件结构。
-
如上图所示,有个hello_catcake例子,我们将include和lib整个文件都拷贝进来,在Android.mk中我们做如下修改:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello_catcake
LOCAL_SRC_FILES := main.cpp hello_catcake.cpp
LOCAL_C_INCLUDES := include
LOCAL_CXXFLAGS := -DNDEBUG -DCK_ANDROID
LOCAL_LDLIBS := -Llib -lcatcake -lfreetype -lpng -lz -lGLESv1_CM -lgcc
include $(BUILD_SHARED_LIBRARY)
就是重新指向include,lib的路径。
原项目lib中应该没有编译文件,http://download.youkuaiyun.com/detail/kurloo/4423275,我将此hello_catcake的例子已上传,可以下载了,使用其中的lib文件夹中的文件完全可以。
此lib文件夹对于所有的应用都有用,所以还是最好下载下。
然后我们用cygwin进行重新编译,对于没有用过ndk的朋友,可以到网络上搜索下,一搜一大堆。
跑出来的效果就不展示了。
大家可以看下,这个文件夹下,有12个demo,都是cpp的文件,那么我们如何在android机器上跑起来呢?其实仿造那个hello_catcake例子,就可以
很好的调试出来。我们以sample11_model为例:
第一步:我们可以将那个hello_catcake的例子导入中项目中,里面我写了个App类,可以自动导入资源,资源全部放到asset中,不需要再adb push什么的。
第二步:将libs,obj文件夹全部删除掉,将hello_catcake中jni文件夹下面的.cpp .h文件都删除掉,然后将sample11_model中的文件拷贝进来,另外catcake_logo.cpp在sample01中,不然编译通不过。
第三步:修改Android.mk为
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := collision
LOCAL_SRC_FILES := catcake_logo.cpp golem.cpp jeep.cpp main.cpp
LOCAL_C_INCLUDES := include
LOCAL_CXXFLAGS := -DNDEBUG -DCK_ANDROID
LOCAL_LDLIBS := -Llib -lcatcake -lfreetype -lpng -lz -lGLESv1_CM -lgcc
include $(BUILD_SHARED_LIBRARY)
其实,就是修改LOCAL_SRC_FILES 中的需要编译的cpp,如果LOCAL_MODULE 也修改了的话,那么记得在HelloCatcakeActivity.java中也修改下private Catcake m_catcake = new Catcake("collision");
第四步:
修改下main.cpp, 注释掉下面一句代码,不然程序一跑,就退出了。
// ckDestroyCatcake();
另外资源加载那儿注意下,将所有的../data修改下,如下修改:
/data/data/catcake_application.hello_catcake/data/catcake_logo_71x14.png
第五步:NDK编译吧,直接上图,关于那个rm -r NUL,是因为编译的时候,在window下删除不掉这个文件,我就直接在cygwin下干掉它了。
第六步: 刷下项目,然后跑吧,发下淫荡的效果图,我是用的1024*768的山寨pad跑的,完全无压力啊。
对于其中12个sample中别的例子,用相同的方法,也可以跑起来,我测试了几个都没有问题。
另外,转载请标明出处:http://write.blog.youkuaiyun.com/postedit/7737511