00:00
我们就要这是复习我们的一些情况,那么接下来我们就要复习一下第一个案例就是。在我们这地方里面的话嘞,啊,就是我们就复习一个什么呢,就复一个一个什么的案例的意思,整个流程这个是一个第一次一个一个小案例嘛,我们就是呃复习一个C调加法啊,C调加va,我就复习过后,那就相当于两个案例复习了,C调用来加个单好。那么我们呢,最好呢去写啊,写一遍,增加大家一个印象啊,我希望大家仔细听这个,如果昨天你发现一些流程比较麻烦复杂,其实你只要掌握的是什么呢?大家可以看一下,它是有一定规律可循的。C。
01:02
明白吧,例子好,那么顺便补充一下,同学们,在昨天我在这个地方里面呢。数组中给每一个元素加上,实在有些模拟器不行,导致问题的原因是我们的模拟器的问题,就是以后你们工作了也会遇到这样问题,比如说在华为手机上。正常,那小米手上不行了,比如说有缘网。这么一个软件有上2亿用户的么一个软件,那么在小米手机上,它本来是要开启一个服务,知道吧,他这个服务呢,它是怎么开的,就是这个服务死了,开启一个服务,那个服务死了,把这个服务开起来,相互交换,即便在小米,在其他手机上都没问题,在小米手机上肯定有问题。那就是手就有差异知道吧,他底层做了某些修改啊,做这样的一些一些事情啊,所以以后大家工作是什么呢?做适配你要研究诶在小米手机可能我这个这种方法要要重新实现了。
02:02
知道吧。为什么呢?其实有一部程序员叫开发这个安卓整个系统里面有一部程序叫开发workwork,就是比如说我们调一个activity,这个activity是由我们用的。他在那里面做手脚了。知道吧。当然因为他小米手机是整个从底层到所有东西都是他做的,他肯定在底层有可能改知道吧,他就不一样,所以的话做做安卓,它最最郁闷一点就是你在可能在其他手机这个问题都没有,突然这个手机有了就碎片化比较严重,不像苹果就几款是吧,大瓶小瓶中瓶。苹果基本上的话呢,你就先使的一个屏幕就可以了,而且他也告诉你这个版本有什么变化,是不是真的安卓就不一样,每个手机都在下面改了很多东西。对吧?啊,那么也就是说为什么在有些模拟器能加时,有些模型不加十的原因啊。
03:01
好,那么接下来呢,我们去讲一个C调Java啊,C调Java这么一个小案例,好,我们去创建一个新的。啊,这个这个工程都不用了啊好,那我们去把它给创建出导进来,好,然后是往下走好,就是我们的C与后加吧,对吧,好,我们就叫二啊第二个,然后我们往下走好,往下走好,这个地方里面走一走好,那么这个时候有了过后呢,同学们在我们这个地方里面。好把这个呢取消掉对吧,好,这地方里面就有了,好我们就先选一个类对吧,好那么这个地方里面我们就叫j ni对吧,减二,好这里面的话呢,注意了,我们这个写一个类体方法。
04:00
一刻啊,那然后没有没有返回值,然后他要扣back回到谁嘞,回调我们的一个方法,扣back我们的一个c hello,好,那在这个地方里面的话,好当我们一点击的时候,这个方法它就触发发我们的C代码浪旗旗。那七我看一下啊,其调用我们的什么呢?C hello,诶hello方法好,要说这样的一个事情啊say hello方法好,那么有了过后我们这个是hello方法的话呢,在这里我们就就选在这帕立刻然后啊然后呢去调我们这个方法好,那如果被调用了过后,我们就去把它给什么打字打出来,这个好,然后呢,等于一好这个地方的接接ni对吧,然后点点在他们的什么内容,然后这个地方里面呢,就是什么呢。
05:24
我看一下。然后这个地方里面我们就去去打印对吧,把这个面呢打印出来对吧,好看出来好,那么接下来有了过后,我们的地方里面,我们就要以运行起来去调这个方法。好,我们先就是说我们在地方里面呢,去写我们的这个历史代码,好这是第一步,我们把这个笔记记录下来,第一写我们的写N对吧?啊第二步啊,第二步,然后这个生成,生成什么呢?生成我们,嗯,这个对应的什么。
06:10
生成我们对应的C代码对吧,然后这个时候用到一个命令叫什么阿H吧,对边杠一个全类名类名对吧?好,这个是小写吧啊好,那么生成对应C代码的的头文件,好那我们接下来再去把这个呢生成一下,好在生成之前注意了,在我们这个方里面要build一下对不对。好比对象。啊。对对下,然后来到这个地方里面,我们就注意有一个快捷键,大家看好啊,我们摁CTRL摁大家看好,是直接可以创建的。看到没有这个创建的。
07:01
好,但是创建注意啊,它创建到其他类了,所以这它是一个bug,没关系,然后把那个什么剪切过来,我们自己创建一个什么。自己创建一个J目录,J目录啊,J目录在地方里面,我们去创建一个原文件啊说了啊。目录j ni好,然后在这个地方里面呢,写我们的一个啊,写我们的一个文件,我们就叫啊叫什么呢?叫T好测试好那么。对,忘记写后缀了啊,我们再把它重构一下。点C好,我们去把它点一下。看一下好可以了,可以过后呢,然后我们地方里面要把包倒一下好S啊DD。
08:08
啊好,这个接下最主要的是一个什么J好,然后再导一下好力D可保好,然后有了过后在地方里面把它给打过拷贝拷贝过来,像这些呢,可以保留,也可以取消掉,好那这个地地方里面一调是不是可以掉它了,好那同学们在我们这个地方里面,这个方法它是一个CC代码对吧?那么在这方里面它的作用就是。调用我们Java代码中的这样。调用我们Java代码中的这个ji类里面的谁。
09:01
这个方法对调这个方法啊,要去调查。把它给辅助过来。好,那么接下来有了过后呢,在我们这个地方里面,接下来我们去调好是不是要是有几步啊,怎么做啊,第一得到什么,到字节么?第二步得到方法吧,这步得到对应的方法,第三有什么实例化,实例化我们的ji每第四步是调用了,调用我们的方法是不是好,那同学们得到这些码怎么做呢?好,它这里面有个方法信号一倍注意这个还记得吗?同学们。
10:03
它是我们G内体,我应该face的这个结构体的二级指针。但是这个地方里面,你看它是它这个哥们的别名,本身它对应的一指针,你再加个心是不是二级指针啊。要明白啊,要明白。好,那在我们地方里面的话呢。我们就要去写了,注意箭头好,它就可以find直接码。就可以用这个方法好,然后这个方法的话呢,我们要把它给复制过来给大家去。看看这个参数该怎么写好,那同学们在我们这个地方里面注意了,其实我们可以两个心,然后这里面把它变成是一个什么点,它也是一样的,同学们啊。好了,看一下同学们在我们这个地方里面,第一个参数是什么?Env对吧?V第一个参数是什是谁呀,我要实力化谁呀,得到谁的直接买呀。
11:08
是方法,想方法是先把这个类给实力化,同样我们去调JI这个类里面的这个方法,我们需要做的事情就是得到它的什么实力吧,要想得到实力是先得到这些码呀,好,所以的话呢,我们要去把这个们全利名啊拷贝过来。对不对,好,但是要把这个点改什么。不是下是斜杠对吧,不是下划线,下划线是这样才叫下划线对不对?好这是什么斜杠,好它返回一个接class,那假如我就用它去表示正好吗。一般呢,不这样去表示接啊对不对,这样子做好,那同学们这一步咱们搞定,这没问题了吧,好注意以前我们在加往中去反射的时候是也,那么是也要得到它的方法呀,好,那么这时候呢,也要用它去得到,好,那这个时候得到它的这个方法get来好但是注意昨天我们是讲了一个叫静态方法,那么静态方法用的是谁?Static对不对,Static好像我是记得是是这个方法呀。
12:42
但是我们是进的方法吗?不是对吧,Get nice,好就用它就可好,你看同学们,你看通过昨天的学习,你再你再来听今天课,真的很简单,但是如果昨天你都不听。那我跟你说,你今天就是新课对不对,所以的话呢,无论如何要坚持,老师会一定会照顾你们的感受的,你们但是我发现有人有一部分人听不懂了,那我肯定想办法。
13:08
整你们让你们明白啊,整你们的意思就是让你们什么明白起来对不对,但是如果说你们这个有些同学他听不懂了,他自暴自弃了啊,我就听不懂,这是然后这个他不信了,然后不学了,对不对,不好嘛,对吧,好了同学们的话呢,大家仔细听是吧,一个没,然后接卡,然后接下来注意了,这个是掉的是谁呀,是hello吧,好啊,这个地方里面好签名是一个难,是一个难点,好那么方法签名对吧,是什么,怎么做呢?对吧?好,那这个地方里面写个笔记了。在这个地方对应的C代码里面,好,这个时候呢啊,第一个知识点,其中包含一个知识点,第三个知识点就是方法签名,方法签名不知道大家有印象没有,是我们在这个地方里面,要对这个地方,我调着这个方法进行签名呢,啊右键它,然后来到哪个目录啊。
14:15
那build目录下对吧,然后这地方里面有一个啊,有一个叫class deb目录下吧,在这里好我们打开打开修一下对不对?好,那这地方里面我们进去好右键打开好在这个目录对不对?好然后的话呢,Java。Java。Java我看一下Java这个我长一点这个感觉。好,我自己点加啊,然后P-S,然后把它取的名粘贴一下,好来看一下,我就得到这个名的一个签名了,对不对,好要来到哪个目录嘞,好标记一下,来到了工程的第八个目录下。
15:08
好。来到我们的正录下,来到我们的这个目录底下,对吧,好,要注意的是先要什么边。如果不编译书,他没有生成这文件呢?对对,读一下,然后仙庙编译。好,先要编译,注意写在前面吧,编辑过后来到这个地方,咱们录下,然后执行下面的命令,好就是什么呢,加网。P-S好,粘贴一下好,就是这个门。咖啡。转过来。是这样子啊同学们对不对?好,那接下来我们这个方法名词有了,哇塞,太爽了哦,诶还不能复制对吧?L记好,然后呢,把它给拿过来。
16:13
在这里三天下注意是空格不能有对不对,好那就这样呢,他就得到一个对应的方法了,它叫什么方法ID对吧?好注意它返回值是什么呢?这个好我们解写它为了区分加S不加也行,或者说你这样ID是吧,就跟这个不一样了吧。好,那接下来有了过后我们调用方法啊,那实例化间的类的话呢,就很简单,就是也可以用它。好,它这方里面第一个方法,你调个A出来就是它,然后我们看一下它里面分别从什么参数。好,最好呢,把这个方法拷贝过来,同学们对吧?好,然后我们的地方里面的话呢,这个地方里面就是好V好J对不对,它返回的是什么?是J对吧,JOBJOK,好,那么这个有了过后,同学们在我们这个地方,我们去调用方法了吧,好,我们去把它给复制一下,调用一下这个方法好就是怎么说呢,就点。
17:21
后好,大家看一下这个方法,我们调的它有返回值吗?有参数吗?都没有啊,特别是没没有返回值,如果是有参数在方法里面做对吧?但是如果没有返回值就比较简单了,就是扣一个word就没有返回值,如果有返回应的用这个如返回不管是用这个啊。BY就用这个,但是我们用的什么没有返回字,因为这个地方没有返回字对不对,好那么接下来嘞,我们就要去选了,但是里面参数写哪些呢?我不知道,那怎么办呢?看一下文档呗,对不对,把它拿过来,这个就是一个什么NV,这个什么JBG对吧?好这个的话呢,就是我们的就是我们的方法,好那同学们这个地方已经是没有返回值啊,就这样,就这样成功功调用了,我们加吧中j ni里面是谁。
18:29
就是我们的这个方法。对吧,是不是这个方法这问题吧,好调这个方法,那调这个方法过后,同学们在我们地方里面,我们就要去调用了,好那么接下来呢,这个是我们的C代码的一个实现,对吧?好把它拷贝过来。好对应的这地方里面,好把这个代码来写一下。
19:01
好。这样子好,那么这个是有了过后在我们地方里面,你看我们上面做了几步了,对吧?啊C调Java好,但是我们现在。先行了,是现在我们要要把它编译,然后把那个固加进来啊好第四步这这方里面要去加载动态链接库和配置生成库的名称,对吧?好那么怎么配置呢?配置生成库的名称,这库的名称,那么就是在这个方里面要是去在在哪里去配葬。在这里面去配置吧,好,那具体的配置的话呢,我们把这个这部分拿过来就是它。对不对,好,那过来考虑到我们的这第二个弹幕这里。
20:00
在这里好,注意要在这里面好,那么我的名字呢,注意这个地方可以任意改。啊一改,那么呢,在这个方里面,我们就好叫这个C加VA2对吧,可以取个名称的,好那么接下来注意这个叫什么名称过后它会生成的,前面自动帮我加上一个列表。然后so也正往加上知道吧,好,那这个时候我们要做的事情就是要什么。啊,这个地方就写什么,这样加载什么库是系统一个类对吧,库这个是写一个名字吧,注意这个名字就是model的名字啊,啊就是这个model的名字,OK。好,那么有了过后同学们在我们这个地方里面呢,就写好了,然后的话,在我们这个地方里面呢,C呢也写好了,好,那我们把这个刚才这个配置啊考虑过来。
21:02
写个笔记。对吧,好叫这个名字对不对的名字,然后呢,第五步加载动态链接库,那加载动天地库的话,在我们这一行里面的话好。这就是我们家中间衣裤吧?是不是啊,那假如同学们我不在你加,其实我在用之前也可以加,好假如说我在这里面,我只要用它我的什么,只要你实力化这个类,我先帮你去这里加,然后我再去第一个尖,嗯,哎,对,其实这种也是可以的啊,就是说你在用之前能提前把这个裤加就可以。好,然后我们把它给读出来,那就在过后我们GI就是我们就调这个方法,所以调这个C方法,这个方法一调的时候它掉C,掉C过后它就会什么打出来,好我们看拭目以待,我们把这个日志呢放长一点,好运起来,给在各位同学来看看我们的劳动成果啊。
22:11
啊。好,那么呢,我们来看看同学们啊,哎,这么快呀。呃,这个口。上一个的对吧,好,我们看看再运行一下。感觉这个。好,再看一下C哈,就搞定了,好,那同学们每一个案例啊,它不管是Java加CC加Java,它都有共同的相同性,相同性在唯一就是我们的这个要需要配置对不对,这个要配置啊,但你不配的话呢,就相当于当前工程的名称。对吧,然后这个库它编译好多都放在哪里啊。啊NDK这目录下看到没有这个库对吧?可以放在这里,可以放在这里,好,那同学们,那么在我们这个地方里面呢,就相当于在这里,那其实啊,大家把这库编译好过后,你是可以把它拷贝过来。
23:14
可以拷贝过来,好,我拷贝过来呢,放到哪里啊,放在里面创建一个G目录,好大家好,我再给大家讲一个新的知识点了,我把这个们呢。备份一下。粘贴到桌面上。啊,然后。然后的话呢,把这个哥们导进去,导进去的目的是改个名字。好,然后导进去。导进去,这个时候我们叫三。那三过后呢,大家看一下我们把刚才我们编译好的。我看这里面有没有啊,比你好的这个。我这我在三里面改啊,我在三里面改,我要把这个编译好的这个里面,NDK里面,它不是有几个库吗?好,我把这个库复制过来,复过来,复制过后呢,在我们这个地方里面注意了,复制这个地方里面,把这里面。
24:15
放注意把这个是编译好的对吧,然后放到我们的当前的。工程下我创建一个。一个ti力J小写j ni力四好把它给粘贴过来,粘贴过后再注意啊,粘裂过后这个时候呢,我就要把其他的都干掉,把这个build的其实我们也不需要了。当然B的是自动生成,你算它又又会有,然后注意把B删出过后,我们的基因这个C代码,我让它彻底的消失,C代码没有了,然后这个地方里面内容。NDK也不要了。
25:00
好就这样,然后呢,在我们这个地方里面。在地方里面,好这个地方我还可以改个名字,比如说之前加个一一证明我们是真正的能打印出来被毁掉了,对吧?好我们看一看,你们觉得这样可以吗。啊。好,给大家看一下。一起来。好,大家可以看一下,一起来。我们正在飞行。这是编辑啊,大家看一下。嗯,好,给你起来。大家看一下,涛声依旧。为什么呢?因为我们这个地方里面,我们的C编译的产品是什么。我们。所以这个时候我们去名字的话,就把力给去掉,把这个去掉,那么这个地方呢,就直接把给加载过来,还没有,但是注意啊,我们在这个地方里面,我们是改的是Java代码对不对,但是如果改C以后重新编译才起作用,知道吧。
26:14
好,那同学们再给他这是一个扩展的赠送的这上班对不对,就是你要明白这个一个情况啊,就是第第这个案例就是其实啊,就是我们直接使用so.so文件对吧,然后其实就是第一步拷贝。我们的这个啊,这个点so文件到我们当前工程的这个妹下下的一个叫J目录下对吧,好考虑一下过后呢,好电不需要配置。
27:11
不需要配置谁啊。是就是我们在爱这个地方里面是不需要配置这个这个东西了,不需要配置它。然后不需要配置它,诶第第三的话呢,其他不变。就是,而且CC代码什么也不需要什么想对不对,知道不想。做这样的一个事情,对不对,这件事情。好,但是大家以后去工作了。工作了,他可能呢,把这个O文件发展,到时候呢,你要去写脚本。在这里面写配个脚本也可以,它后面会讲到知道吧,你会看到,诶这个so文件它不在这里,它在什么目录下,那个时候你写个脚本就可以了,明白吧。
28:08
啊,力下来是按照这个有历的工程下的结构,那么我们现在来放这里,你啥也不用动,你看加va有没有想。对不对,这三个就行好。那么呢,我脚本的意思就是在build这里面要就这些配置,你就可以认为是脚本,知道吧,这意思我把它叫做脚本或者叫配置了啊,不用想配置啊,这样明白通俗易懂一些,好,那同学们这个小小的知识点呢,就是我给大家做的一个回顾,这就是我们C调加,就是C调Java的一个回顾,而且当做整个上一次的一个回顾啊,希望大家能听懂,好。
我来说两句