小编给大家分享一下JNI开发示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
案例1:本地项目
如果开发者们只是想做简单的本地开发,并非为第三方提供库,这就非常简单了,详细如下:
1,创建本机c++工程
目前,通过DevEco-Studio创建创建本机c++模板类型的工程时,只有汽车支持这种模板(电话默认不包含本机c++模板)。
不必担心,我们就先创建汽车类型的工程,然后选择本机c++模板,如下图:
然后,输入工程名称等信息,如下图:
接下来,选择c++标准库,默认就可以了,如下图:
点击【完成】,工程就创建好了。
2,修改DeviceType配置
当前工程默认是汽车类型的,想要支持手机,我们只需要修改DeviceType即可。
首先,找到配置。json文件,如下图:
将改“车”为“手机”,即可支持运行在手机设置上了(是不是超级简单呢),如下图:
3,测试
我这边使用的是鸿蒙手机进行测试的(鸿蒙手机是:由安卓P40升级的和谐OS)。
另外,在真机上调试,运行工程,需要申请证书(我这边已申请,没有的同学,可以去华为官网申请)。
测试前,我们先看下默认的模板工程结构:
整体的调用流程也很简单:
开发者运行工程——比;建立工程——比;执行构建。gradle
引用>
——比;执行里面的externalNativeBuild——比;生成所以库文件——比;应用程序启动
——比;页面加载——比;调用MainAbilitySlice类——比;查找并加载所以库
——比;在onStart生命周期方法中调用本机方法——比;执行所以中的本地实现方法
——比;返回结果——比;绑定给文本控件(最终将结果显示在页面上)手机上的运行结果(直接横屏显示……这是因为我们的工程本身是汽车类型的模板工程,UI样式默认设置的是横屏的。如果不喜欢,开发者们也可以自行修改UI样式):
所以库创建的默认位置:
案例2:本地项目
如果开发者们不仅要做本地开发,还希望将因此文件提供给第三方使用,这样我们就需要以模块的形式来开发了,同样也不怎么复杂。
1,问题分析
现在有一个问题:创建模块时,连本机c++模板都没有了,如下图:
这不是要让广大开发者们生的气,抓狂,准备画圈圈了么。
解决方案:
其实,我们还有其他的方式(原因:JNI开发也就涉及到本机方法定义,本地源码,Cmake配置文件,Gradle配置等内容):我们可以新建一个汽车类型的本机c++工程和一个和谐os库模块,然后将模板工程条目中的JNI代码迁移到和谐图书馆系统模块中。
2,创建汽车类型的本机c++模板工程
比较简单,大家可以参考案例1的工程创建流程(此处就不再重复截图了)
3,创建和谐os库模块
大家直接下一步就好(此处就不再截图了)。
4,修改条目deviceType类型(改成电话)
5,拷贝文件
将条目下的。cxx目录和cpp目录拖拽到libnative模块中的相同位置:
JNI开发示例