寫在正文之前:

幾個月沒有更新博客,感覺有點生疏了,所以說不能斷,一斷人就懶。

其實這幾個月也并不是什么事也沒有做,俺可是時刻想著今年的任務(wù)呢,10本書,30篇博文...,這幾個月間斷性的也是在學(xué)習(xí)中,學(xué)H5,學(xué)設(shè)計模式,以及NDK JNI開發(fā)等等。

學(xué)習(xí)JNI主要是因為公司有一些COCOS游戲需要添加計費點,而又沒有真正的游戲開發(fā)人員,這個重任就落到我身上了,然后就是各種虐,一虐到底,苦不堪言,這種虐并不是學(xué)習(xí)技術(shù)的虐,而是一款游戲用于N種計費點,不停的改改改,那個需求這個需要的,然后你就等著被玩吧。

正文

OK,言歸正傳,說到NDK,相信大家都不陌生,它是Google為便于Android開發(fā)提供的一種原生開發(fā)集:Native Development Kit,而且也是一個包含API、構(gòu)建工具、交叉編譯、調(diào)試器、文檔示例等一系列的工具集,可以幫助開發(fā)者快速開發(fā)C(或C++)的動態(tài)庫,并能自動將so和java應(yīng)用一起打包成APK。

與NDK密切相關(guān)的另一個詞匯則是JNI,它是NDK開發(fā)中的樞紐,Java與底層交互絕大多數(shù)都是通過它來完成的,那么接下來看看什么是JNI?

JNI:Java Native Interface 也就是java本地接口,它是一個協(xié)議,這個協(xié)議用來溝通java代碼和本地代碼(c/c++)。通過這個協(xié)議,Java類的某些方法可以使用原生實現(xiàn),同時讓它們可以像普通的Java方法一樣被調(diào)用和使用,而原生方法也可以使用Java對象,調(diào)用和使用Java方法。也就是說,使用JNI這種協(xié)議可以實現(xiàn):java代碼調(diào)用c/c