粉丝9032获赞2.9万

好,在这一讲中呢,我们来说一下怎么去配置 angela 的,就是 adb, 他的一个操作, 嗯,首先呢第一步呢,我们去下载安装 gdk, gdk 呢就是加瓦环境啊,为什么要用加瓦环境?因为按住爱的开发呢,他需要用到加瓦环境,所以说呢,我们也需要先配置好 gdk, 那配置好,这是 gdk 呢,就是在我上面的文档里面有,大家跟着操作就 ok 了。 那下下边呢,就简单说一下怎么配置这个安卓,安卓的就是 fdk 啊,就是 adb 命令 我们去下载这个安卓 c 六啊,那安卓 c 六呢,就是你可以去搜索安卓 c 六啊,那第一个就是他的一个官网啊,那在这边呢,我们就可以去进行啊,对应的下载啊, ok 啊,这是下载 okay, 那下载下来之后啊,就是说直接当录的啊,我们这边呢根据他的就同意他的协议啊,我们去下载, 嗯,那这个下载速度呢?也是啊,就是说也是比较快的,我们可以看到啊,那在这边呢大概需要几分钟的时间吧啊,几分钟的时间就可以,哎,下载成功啊, ok, 好, 好,这个用 c 六,下载好之后呢,我们就打开文件啊,其实就是装装一下啊, 安装,下载完成之后进行安装好,那在这边呢我们来看一下。 ok, 好,选择是 这边安装的话就是使用默认使用啊,使用这个下一步啊,下一步进行安装,使用他的默认的安装选项啊,安装即可使用默认的安装选项。 好,那这边的话我们就点击下一步啊,这边呢有一个就是装这个安卓熏器啊,就是模拟器,模拟器的话就是可以 啊,可以不用不用,管他装若不装都无所谓啊。好,那下边的话在这边呢,这是他的一个安装路径,那同样的安装路径呢,也是使用那个什么呀?使用默认的啊安装路径。 为什么使用末端的安装路径啊?嗯,因为他其实也占不了多大空间啊,可能 也就两三个 g 这样啊。啊,有地方两三个 g 好大呀。其实你现在呢有 c 盘一般都,嗯,都默认都,其实都都挺大的啊,默认的安装入境为了是等一会我们配置环境变量的时候, 如果你跟我这边不一样啊,那我们配置环境变量的时候呢,可能就会给这个关掉啊,好,可能就会。嗯出现一些问题,所以说我建议大家呢就是使用默认的安装方式啊进行安装。 那我们现在安装安装 c 六呢,他其实就是按座位的开发工具啊,当我们不做开发啊,我们可以安装这个开发工具。安装这个开发工具之后呢,为的主要就是可以安装那个最新版的一些, 比如说那个 idk 啊啊,还有一些其他的功能啊,其他功能就是我们做测试啊,能够用到的。 嗯 ok 啊,因为装装车的开发工具之后呢,你再去安装,他是安装的比较比较全面啊,比较全面一点。好,我们现在看他正在安装,等他装好之后 点击下一步啊,那这边的话就是安装完成之后呢?点击什么呀?点击这个完成就 ok 了啊,点击非内饰好。 好,哎,这个是安装完成 好,安装完成之后呢,我们打开这边呢,我们选择导入任何的配置,因为我们之前也没有干什么呀,也没有配置过,所以说呢,安装完成啊, 倒入可以吃好,点击, ok, 好,那这边呢,我们可以看到这个是安卓贼久他的一个开发的界面 啊,就是说他的软件打开的界面啊,好,等他加载啊, 好,那在这边呢,他提示你要不要就是去设置这个代理啊,这边呢选择选择取消啊,也就是说呢,我们不用去设置代理啊,不用去设置代理,选择取消。 ok, 那下边呢,在这边呢,他说要不要共享这个数据啊?你共享也可以,不共享也可以啊,那下边我们就是点击这个啊,就默认点击下一步啊, 点击下一步就 ok 了,所以说好,这边呢就是第一次啊,第一次 使用啊,只用会提示一些基本的配置啊,使用默按,就是说这边都是有默按的就 ok 了啊,默按的就 ok 了,你下一步。 好,这个是主题啊,这,这无所谓了,在这边呢,大家可以看到这个是安装 sdk 啊,这边有一个路径,大家可以看一下。路径呢,需要 一组啊,这个是安装 idk 的路径,等会呢,我们会使用到这 idk 的路径啊,使用到 idk 的路径,比如说选择下一步 i d k 的路径呢,每个同学的都不一样啊,因为是装在不同的电脑上。 ok, 下边进行这个安装 i d k 啊,好,那带 在这边的话,我们需要去,大家可以看到,在这边呢,就是需要去点击啊,点击这个接受他们的协议,你看这边有新号啊,都需要去点击一下什么呀,点击一下这个 接收啊,接收这个协议,也就是说第一步呢,先选中啊,先选中这这个地方啊,选中完之后呢再去点击啊, 啊,同意啊,同意协议啊,这是第一步啊,然后这是第二步, ok, 好,那同意协议之后呢可以点击什么呀?第三步啊,也就是说非内饰, ok, 非内饰这边呢,他会自动给我们去从网上下载最新的 pk 啊,这边是同意 协议啊,好,那这边呢会开, 我们可以看到这边他会自动帮我们去下载啊,下载并安装啊, ok, 会自动联网下载好, 自动联网下载最新的啊,最新的 idkidk 软件。 好,那这边的话就需要等待啊,根据这个网速的快慢啊,需要等待一会网速的快慢需要等待等待一会,哎, 好,我们可以看一下,现在正在进行下载安装啊,下载之后呢,他会 自动去帮我们去把那个啊进行安装啊,进行安装好,那这边呢选择是,嗯,他安装完成之后呢,点击 finish, 点击分类式之后呢啊,就是在这里边呢,点击这个 idk manager, idk manager 呢,可以看到那个 idk 的一个路径,我们需要去配置配置那个配置一下环境变量啊,点击这个 ok, 好, 现在的话就是配置环境变量,配置环境变量。 ok, 好, 点开好,点开之后呢,在这边呢有一个路径,呃,其实就是我们刚才装那个 idk 的什么呀? idk 的目录好,复制一下这个路径, ok, 好,打开,打开环境变亮啊,可以呢,在这边的话我们可以去搜索,比如说编辑系统环境变亮, okay, 系统环境变量打开之后呢,在环境变量里边呢?新建啊, 新建一个安卓的后好,也就是点下边这个系统环境变量啊,新建。 听见环境变量,环境变量里边呢?我们输入啊,输入一个安 joy 的 home, 安 joy 的 home, 那安卓的 home 呢?里边里边呢?跟上刚才那个什么呀?跟上刚才的路径,这其实就是我们的安卓的 dk 的路径。把这个路径呢复制到什么呀?复制到环境变量里边, ok, 那这里边呢?就是一个新建一个系统环境变量 输入对应的词,好,那这边就是这个,嗯, android home 按这个。哎呢你可以是什么呀?可以是打写啊, 然后这 ohome 里边的 h 也可以是大写。好,那路径呢?路径的直,路径的直就是 路径的,就是上面安装的啊,就是安装的 dk 的路 滤镜, ok, 好,能配置完成之后呢?点击确定啊,点击确定之后呢?我们再找到什么呀?找到这个 pass 在 pass 里边呢,编辑一下啊,比如说找到这个系统环境变量里边的 pass, ok, 点击编辑, ok, 嗯,哎,编辑里边的输入啊,点击新建。新建一个什么呢?新建一个就是我们刚才里边的 enjoy 的 home, 按桌位的 home, 注意这个皮也可以大写好。按桌位的 home 里边呢。嗯,大家来看一下,就是我们 打开这个安卓的 home 呢,听说这个路径 好,这个路径 ok, 大家这个路径呢?大家可以看到在这个 adfrim toast 里边呢,有 adb, 所以说呢,我只需要把 android idk 后边啊,后边这个路径呢?加到什么呀?加到环境变量里边就 ok 了,哎,对,这斜杠啊,反斜杠啊,骨路子里边的路径都是反斜杠,那下边呢?再加一个爱心键,一个 两个环境变量,两个路径还是按住位的控好,注意都不要敲错了,第二个路径是哪一个呢?第二个路径是我们找, 嗯,找这个 toss boss bin 里边呢,比如说有 ulo mr view 啊,这个路径,这个路径呢也给它加到环境变量里边,好,注意 路径反斜杠。那么加完之后呢?啊,加完之后,这是两个,两个路径啊,两个路径。 ok, 编辑也可以直接在我这个上边的删除 两个路径添加进来, 按进来之后呢就 ok 了啊,就 ok 了。好, 点击确定,确定,确定,打开密任行窗口, cmd 输入 adb, ok, 我们可以看到啊,这边有很多输出,说明什么?说明我们的 enjoyed a d b 命令啊,已经 ok 了。好,好,那这个呢,就是配置什么呀?配置这个按拽的这个环境啊, 中输入 bb。 好,那这个的话就。

好,哈喽,大家好,好,我们今天继续学习这个安卓开发啊,购物商城实战系列教程。好,我们上一期视频已经学习了,将这个购物车的数据,对吧?我们批量的生成一个订单, 对吧?我们也也创建了这个订单的表啊,那么我们今天去来这个,实现这个 ui, 好, 我们来到这个项目中啊,嗯,找到这个啊,默认 fragment 里面,然后我们给个哎,给个啊,我们也是用现行布局啊,我们给个方向啊, 给垂直方向。好,我们写一个哎个列表啊, recycle view, 我 们给个 id 啊,我们给一个哎,加载布局文件, 我们叫这个 old old list 啊,并且一定要设置个列表啊, manage 这句话一定不能少啊,那我们去创建这个一个布局文件,我们也是一样的啊,给一个限行布局。 好,那么我们看这个 ui, 其实跟跟我们这个订单的 ui 效果,跟我们的购物车订单这个 ui 效果其实是差不多的啊,对吧?我们拿着过来啊,把这个布局文件复制一份啊,我们加这个 卡德尼斯的啊,拿过来去改一改,怎么改?我们来教大家怎么改奥德尼斯的,那么复制黏贴,对吧?那么把这个不要就可以了啊,加和减不要看看 啊,那么这个数量一般是这个乘一乘二,对吧?乘二乘三对吧?这种效果好,那么我们这个布局文件就已经写好了,这种效果 好,我们只要是一个哎,限,只要是一个啊,这个列表空间,对吧?那么我们一定需要一个 adapt, 我 们去创建叫 odenis 的 adapt 啊,啊, t e r odenis a d a d a b t e r 啊,继承一个 点,我们把这个后啊自定义的后的写了啊,是蛮后的, 去记住点 v u 后的,我们去实现你们的构造方法,好,我们可以了,然后我们的点蛮后的,我们去实现你们的方法。 好,然后的话,我们肯定要一个实体,对吧?好,我们有一个实体啊,我们 void 一个, 那么我们的实体是不是跟这个购物车也很像,对不对?我们也拿过来啊,复制,我们把这个不要,我们加 card 哦,加 o 的 id, 那么又是另一样,那么这个 product id 就 不要了,那么这个字段都要啊,那么有两个字段还多了,对吧?一个地址, 那么还有一个手机号目标,那么我们提供 get 和 set 的 方法,快捷快捷键啊,建立的啊,我们 construct 啊,全选就可以了, 那么还有 get 和 set 方法,我们也是一样的啊,进来的 get 和 set, set 后面全选,那么可以了,我们在这里啊,我们需要接受一个集合默认设置啊, 好,那么这里,哎,这个大小就是这个几何的大小,那么在这里就是加这个布局文件,对吧?我们 delete, 点,我们复制到上下文点 delete 点, delete, 点 o 的, 给个空,我们返回一个 v u, 好, 我们接受一个蛮有蛮厚的类型,对吧?好,那么我们去 n u 一个厚的, 把这个丢进去。好,那么这里就是绑定数据嘛,啊,绑定数据,那么首先在这里,我们是不是啊?抽象空间,找到空间,对吧?我们看看 啊,那么这个也是一样的,我们把这里拿过来啊,我们在这里找卡的,这下面的,我们拿过来就可以了啊,我们看看, 对吧?一二三四,没问题啊,我们也收到,我们去把这个空间找到,我们这里没有放的 vivo 八 id 啊,我们用的艾特码 vivo 放的 vivo 八 id, 这个写上去,我们把这个啊改一改,我们还有一个空的 啊,可以了,那么在这里绑定数据,对吧?我们将这个啊,拿一个数据点 get 艾特 position 啊,飞一个 alt 应付对象,那么在这里设置数据 数据怎么设置啊?我们后台点啊 com 的 点 c 的, 这个是,那么有一个,对吧?这个啊,屏上这个 hold, 点 get 数量就可以 hold, 点 set 一 麦机, set 一 麦机为锁死那个一麦机锁死 hold, 点啊,抬头 set 啊, 点这个价格点的 press, 那 个 press, 那 么这个价格是硬的类型的,我们一定要设置时序类型,我们拼接一个空串就可以了。好,我们就可以了啊,我们 r w 就 写完了。 好,我们回到这个 fragment 里面去,那么第一步是不是我们把这里改一改? 好,我们去接收一下 啊,也是一样的啊,轴式画空间 定义出来 啊,那么空间不要突出了啊,千万注意啊,我们把这个改一改啊,那么我们写一个啊,黄 t v t 可以 的,里面啊,那么这个方法上面一个转换线,对吧?那么这个是因为这个方法已经过时了,但是可以用啊,这个没问题啊,我们在这里是不是就要获取到这个订单里面的数据,对吧?啊?这个订单里面的数据,那我们怎么去获取,对吧? 好,我们看看获取数据,获取数据。好,我们来到这个 a d b 里面啊,按照 o 的 d b 号牌里面,那么这里是插入数据,是吧?那么我们在这里查询数据, 查询订单数据啊,那么在这里也是可以拿过来直接用, 我们在这里啊,对吧?获取所有, 那我们怎么去改啊?在这里改,比如说在这里我们叫 quarry or other miss, 那么一定要根据用户名单去找找嘛?啊?我们需要个 u 是 name, 对 吧?我们,那么我们在这里就要把这个改一改啊,我们对应的 把这个字典改一改,叫 o 大 d u 是 name, 这个, 那么开头价格 com 的, 那么啊,这个地址, 那么还有一个,哎,手机号, 一二三四五六七八,我们看看这个子弹对不对啊?一一二三四五六七八,好,没问题,对吧? 那么这个表明不就不加右闪,对不了,我们加这个 o 的, 对不? 那我们在这里啊,我们接受一个 o 等于 four, 我 们在这里也是一样的,我们给我们加这里要改改都要改啊, 我们加又是那样的大小。 我们这个图片,我们图片是 steam 类型的啊, get into 我 们这个图片还有这个 title, title 是 steam 类型的啊, 好,我们价格,价格是,哎,这个 steam, 哎, steam 类型的改改, 还有这个数量啊,这个数量也是硬盘类型的,这个的键是啊,地址手机号,那么这个也是,哎,这个数据类型 我们扭一个,哎,我们直直接连接到这个集合里面去扭一个啊,我的,我们把这个添加进去,用声音 好,可以了,我们看看有没有错,也没问题啊,那么在这里还还需要去改改,对吧?我们这个条件是什么呀?对吧?那我们条件这个之前有,是不是我们的这个 看里面是不是也有,对吧?我们是不是可以拿过来啊,我们修改,我们啊查询,对吧?我们是不是可以拿过来? 我们,我们这里只需要个 user name 查询条件,对吧?把这个放进去,那么这里,哎,我们看看,对吧?我们条件是什么?我们啊,这个 user name, 对 吧? 我们就可以了,所以这个只要学会了一个,哎,侦查检查,其实所有的侦查检查都是通用的啊, 如果说你学会了这个订单啊,购物车里面的整张开叉的逻辑,那么购物车啊,那么订单那就不在话下了,对吧?但是,哎,一呼噜发飙啊,只是里面的一些字段不一样,那次个语句啊,大同小异,对吧? 好,我们拿到这个 order fragment 里面啊,我们获取数据, 点 get instance, 那 么在这个 fragment 需要一个上下文,我们叫 get activity 啊,点啊,很快,我们也是一样的,我们,哎,我们用这个 u s 音符点 get, 我 们做一个判断, 那么就可以把它查出来哦,需要一个用户名,点 get instance, 点 返回一个这个订单集合,那么我们在这里就可以去设置数据,那么首先就是这个 apple 啊,那么在这里我们还去设置设置 apple 台, 那么啊,点 shift alt, 那 么叫 alt, 那 么在这里我们去,哎设置数据, 点 shift, 看一下这 shift 吗? 我们在这里啊,提供一个设置数据的方法啊,那么我们写上 word set list, 那 么我们接受一个集合 word list, 我 们在这里 s 点, 那么这里啊,一定要调用这个啊, node node, 返回 delete, 新建的,一定要去刷新啊,啊,一定要调用 好,我们在这调用一下,点 s c 的, 把这个点进去,好,我们去运行看看效果, 让我们看看,没有问题啊。好,我们就没问题啊,看看这种效果就出来了,比如说我们还去添加一个数据。嗯, 好,我们去看看啊,我们这购物车里面有没有数据,哎,有一条啊,那么我们去点击这个结算。好,我们就可以了,有条数据了,但是在这里面为什么没有?为什么?刚才是三条,应该有四条,对吧?为什么啊?我们去看这里面啊,这里面 我们后台里面应该有四条数据,对吧?为什么呀?像之前也是一样的啊,跟之前的问题是一样的啊,那么我们点击它的时候,对吧?那么是不是要去刷新数据?我们在这里啊, 我们在这个哎, main activity 里面,我们也是一样的,我们在这里,哎,购物车的时候,我们订单,我们订单的时候也是要去加载数据,对吧? 我们在这里啊,我们点 off, 没有这个方法,对吧?当我们去这个写个,我们去夹加载一下数据,对吧? 那么我们把这个方法啊放到这里面去,我们直接在这调用就可以了,对不对啊?调用就可以了,看一下或者数据做个判断,哎,没问题,对吧?我们再去看看啊, 我们登录,嗯,看一下,也有饲料数据了,对吧?好,我们再去啊, 再去啊,添加成功看看啊,我们计算 看一下,哎,就有了,没问题,对吧?好,那么我们这个订单已经完成了,对吧?没有问题了。好,我们在这里啊,还要做个小小的优化,比如说这个购物车里面没数据,我不能,我点击结算,是不是就不能操作?好,我们在这里去实现一下啊, 在这个看看啊,这个购物车页面啊, word, 我 看在这里点击结算的时候,嘿,我们在这里是不是就要做一个判断 啊,对吧?我做个判断,怎么判断?如果,哎,我们查出来这个,这个购物车里面,哎,这个没数据,也就是说,哎,这个 color, 历史点 size 等等于零,哎,我们就不要去做 任何操作,对吧?我们钥匙,那么我们就去生成订单啊,我们清空购物车,并且重新加载数据,那么在这里你为零的时候,我们给个友好的提示,对吧? 给的, 那么在这里给个友好的提示,我们叫,哎,您还没有选择商品, 好,我们去看看效果啊,我们点击登录,比如说,哎,我什么都没有,对吧?勾折,我们接上,哎,那么你还没有选择商品,那么这个逻辑就对了啊,我们再去点一点 去接上,哎,没问题,对吧?没问题,你看这个效果也来了啊,那么这个订单,哎,我们就实现了,基本上啊,啊,我们这个整个一个, 哎,这个购物商城的整个项目啊,我们的难点啊,我们基本上都已经到这一节课,基本上已经学完了啊,那么我们这个订单也现在也没法去删除,对吧?好,我们加一个长按删除啊,我们来到这个 a double 的 里面, 我们在这里写一个,哎,长按事件啊,长按删除, 好,我们 hold 点, 点 item 啊,点 shift, 昂浪,有一个,我返回一个 to, 那 么在这里我们需要一个写一个结果去回掉 in the face 啊,那个 on item, 我 们写一个 on item click listen, 好, 我们回掉一个 on item on html click, 我 们接受一个当前的选择,哪个商品啊?我们这样,这样 or 等于 four, 那 么我们也可以去接受一个,哎, project 线, 这个 project 线也用不到,但是可以再这么去写着啊。 好,我们记住 get 和 set 方法,那么我们一般 get 不要啊,我们只要 set, 我 们在这里做个,哎,回掉,如果不等于弄, 我们就回掉房间的这个对象,我们叫 o o 等音符,我们把这个模式选拿过来。好,我们再回到这个 fragment 里面,我们在这里是不是有个点击事件啊? 点击事件, 好,我们,哎,点 写的啊,艾特肯定不认识的,有一个我们就会掉了。好,我们在这里啊,我们写一个啊,打一个对话框,是否要删除,对吧?我们啊,捏一个 not, 我 们转入这个上下文,我们一定要秀出来啊,慢慢一根秀,这个方法一定不能少。好,我们在这里去设置啊,念式调用啊, shift 它的运行提示, 点 set message, 确认,要删除吗? 确认要删除订单吗?点 set 点确认, 我们回掉,然后或者是取消, 这个是确定啊, 这个是确定,那么这个是取消啊, 取消就什么不用做嘛?啊,那么确定,哎,我删除的时候,我们是不是要,哎,我们就去删除。好,那么是在这个,哎, db 里面,我们是不是少了一个哎,删除的一个射口语句啊?删除, 但是订单跟这个购物车的删除是不是一样的啊?我们也是一样的啊,拿过来直接用。 那么这个,哎,为了看数据,我们把这个之前,之前啊,我们把这个 close 给关闭了,我们把这里改改,我们叫 o 的 o 的, 那么这个 id, 我 们叫 o 的 id 了啊,我们加入这个 o 的 id, 我 们看看这个有没有问题 啊,定义的啊,表明啊,根据谁来删除条件啊?那么根据 order id 来删除没问题。那么回到 order fragment 里面来。好,我们调用一下, 点 good get instance 啊, get 上下文,点啊,我们定义的插入这个, 我们在这里啊, alt 点 delete 啊, alt 啊 d, 我 们,哎,也是一样的,我们加个空转啊,四圈 and 类型变四圈类型,我们加个空转就可以了,对吧?选择 返回一行,如果这个行大于零就删除成功。第四, 那么否则就是删除,删除失败嘛, 怎么办?那么删除成功,那么是不是我们要去重新去加载一次数据啊?我们要把这个页面去刷新啊,那么直接调用 note, 对 的,我们也可以了。好,我们去看看, 我们登录没问题,我们删除。确认。要删除吗?我们确认没问题,没问题。 好,那么我们这个订单也完成了啊,那么我们在这里还有一个小小的优化啊,就是我们在这个, 哎,这个购物车点击结算的时候,我们这里的这个地址和这个手机号是写实的,对吧?我们在这个, 欸, cut, 欸, fragment 里面啊,我们在这里啊,那么我们在这里的时候是不是也要欸,给一个的士框,对吧? and dialog, 对 吧?我们给个的士框,我们输要输入这个,欸,这个地址和这个手机号啊,那么我们下一期视频来完善一下。好,今天就讲到这里。


大模型部署到手机难吗?我跟你说,这三个方法真的能搞定?带你走进时代潮流,了解更多官,上周,我的朋友小王,一个普通的 android 开发工程师给我发了一条消息,我尝试把大模型部署到手机,跑了一天一夜都没成功,这玩意是不是太难了? 我校告诉他,根据最新的行业报告,现在已经有超过百分之三十的移动应用都在尝试集成 ai 模型,而部署成功率已经从去年的百分之十五提升到了现在的百分之六十以上,关键是要找对方法。其实大模型部署到手机确实有难度,但绝不是不可能。 第一个方法是模型轻量化,现在很多开源工具可以把上百 gb 的 大模型压缩到几百 mb, 比如用知识蒸馏技术。 我上周刚帮小王把一个七 b 参数的模型从十五 g b 压缩到八百韩币,运行速度反而快了百分之二十。第二个方法是选择专用硬件加速框架,比如 tensor flow light 或者 on x rantai, 它们专门针对移动设备做了优化, 能充分利用手机的 gpu 和 npu。 你 可以先在 pc 上验证模型效果,然后一键转换到移动端。 第三个方法是动态加载策略,别想着把整个模型都塞进手机内存,可以设计一个智能缓存系统,只加载当前需要推理的部分。我去年做过一个项目, 就是这样让一个原本需要六 gb 内存的模型在二 gb 内存的手机上流畅运行的。如果你也在尝试把大模型部署到手机,建议先从模型压缩开始,选择合适的目标参数,循序渐进。你觉得这三个方法里,哪个对你最有帮助?