經過一下午的研究,終於讓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.csdn.net/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.csdn.net/postedit/7737511