關(guān)于鴻蒙系統(tǒng)使用C++進(jìn)行編寫(JNI學(xué)習(xí)筆記)
????????把華為的API文檔翻了一遍又一遍。雖然說是可以用C++進(jìn)行編譯,但基本都是很底層的東西了。相比較JAVA的API整整好幾頁,并且都是直接調(diào)用就出效果的,著實(shí)羨慕。一開始我想要不自己加點(diǎn)文件頭(OPENGL),實(shí)現(xiàn)一些不可告人的秘密。然后翻了許多資料,安裝環(huán)境資料就很少,因?yàn)閷τ贑++來說大部分是安裝給WIN和VS的。假設(shè)開發(fā)環(huán)境能調(diào)用,在實(shí)體機(jī)上也不清楚能不能用?
????????然后特地查看了下ANDROID,直接用JAVA調(diào)用(可惡啊,這么方便的嗎)。無意間發(fā)現(xiàn)了JNI,想了想鴻蒙編譯器給的例子也提到了JNI。于是就對JNI查找了許多資料,總結(jié)了一下自己想的原理。
下圖是華為給的編譯器自帶的C++例子。在這之前需要加載庫,截圖沒截到但注釋有的。(英文寫的)
// Load the 'native-lib' library on application startup.

可以看到紅框里的函數(shù),就是下面CPP所實(shí)現(xiàn)的函數(shù)。

這里函數(shù)名字很長,但仔細(xì)看最后面,就和JAVA里申明的一模一樣了。
????????C++雖然是可以用來編寫,不過需要反復(fù)的和JAVA去交互??偟膩碚f比去學(xué)一個語言要方便吧,據(jù)說這樣來回切換運(yùn)行效率會比其他2種編寫方法快(并未測試過)。下面是我找到的一篇不錯的文章,作為C++程序一定都能看懂。
JNI 常見用法:https://www.jianshu.com/p/6cbdda111570
我想使用這種方法應(yīng)該會比自己去安裝第三方庫來的可靠一些吧。
總結(jié):在JAVA里申明函數(shù),在CPP文件里實(shí)現(xiàn)(CPP里調(diào)用上層JAVA的API,比如圖形繪制等)。另外這方法在ANDROID也是有的,所以以后遇到什么問題搜不到,就知道搜ANDROID的吧,十有八九就能搜到了。