关于鸿蒙系统使用C++进行编写(JNI学习笔记)
把华为的API文档翻了一遍又一遍。虽然说是可以用C++进行编译,但基本都是很底层的东西了。相比较JAVA的API整整好几页,并且都是直接调用就出效果的,着实羡慕。一开始我想要不自己加点文件头(OPENGL),实现一些不可告人的秘密。然后翻了许多资料,安装环境资料就很少,因为对于C++来说大部分是安装给WIN和VS的。假设开发环境能调用,在实体机上也不清楚能不能用?
然后特地查看了下ANDROID,直接用JAVA调用(可恶啊,这么方便的吗)。无意间发现了JNI,想了想鸿蒙编译器给的例子也提到了JNI。于是就对JNI查找了许多资料,总结了一下自己想的原理。
下图是华为给的编译器自带的C++例子。在这之前需要加载库,截图没截到但注释有的。(英文写的)
// Load the 'native-lib' library on application startup.

可以看到红框里的函数,就是下面CPP所实现的函数。

这里函数名字很长,但仔细看最后面,就和JAVA里申明的一模一样了。
C++虽然是可以用来编写,不过需要反复的和JAVA去交互。总的来说比去学一个语言要方便吧,据说这样来回切换运行效率会比其他2种编写方法快(并未测试过)。下面是我找到的一篇不错的文章,作为C++程序一定都能看懂。
JNI 常见用法:https://www.jianshu.com/p/6cbdda111570
我想使用这种方法应该会比自己去安装第三方库来的可靠一些吧。
总结:在JAVA里申明函数,在CPP文件里实现(CPP里调用上层JAVA的API,比如图形绘制等)。另外这方法在ANDROID也是有的,所以以后遇到什么问题搜不到,就知道搜ANDROID的吧,十有八九就能搜到了。