相信Android開發(fā)者都喜歡用C++編寫一些高效的應(yīng)用,有關(guān)Android NDK的C++開發(fā)相關(guān)知識總結(jié)如下:
從Android NDK r5開始支持了STL Port,在這個版本開始就可以使用部分STL庫的功能了,比如說vector、string擺脫c下面容易出現(xiàn)的數(shù)組未初始化、越界,增強應(yīng)用的健壯性。
很多網(wǎng)友包含了include <vector>
這樣頭,但仍然無法編譯,這里你首先要檢查當前文件是否為.cpp后綴,同時為了使用標準庫必須加入 APP_STL :=
stlport_static 在Application.mk文件中。相關(guān)對應(yīng)還有
system - 使用默認最小的C++運行庫,這樣生成的應(yīng)用體積小,內(nèi)存占用小,但部分功能將無法支持
stlport_static - 使用STLport作為靜態(tài)庫,這項是Android開發(fā)網(wǎng)極力推薦的
stlport_shared - STLport 作為動態(tài)庫,這個可能產(chǎn)生兼容性和部分低版本的Android固件,目前不推薦使用。
gnustl_static - 使用 GNU libstdc++ 作為靜態(tài)庫
默認情況下STLPORT是不支持C++異常處理和RTTI,所以不要出現(xiàn) -fexceptions 或 -frtti ,如果真的需要可以使用gnustl_static來支持標準C++的特性,但生成的文件體積會偏大,運行效率會低一些。
支持C++異常處理,在Application.mk中加入 LOCAL_CPPFLAGS +=
-fexceptions這句,同理支持RTTI,則加入LOCAL_CPPFLAGS +=
-frtti,這里Android123再次提醒大家,第二條說的使用gnustl靜態(tài)庫,而不是stlport。
強制重新編譯 STLPort ,在Application.mk中加入 STLPORT_FORCE_REBUILD := true 可以強制重新編譯STLPort源碼,由于一些原因可能自己需要修改下STLPort庫,一般普通的開發(fā)者無需使用此項。
Android目前最新的NDK版本為r6,相關(guān)的學(xué)習(xí)可以查看NDK中的Samples整體和在PC上開發(fā)沒有太大的不同。
|
|