前言

鉴于上一篇写的文章,这里就来试试开发一个 app。

由于本人多年未写代码,技术已经严重退化。这里就借助 AI 来进行开发。

连接 Gemini

由于本人电脑上此前已经安装了 Android Studio,相关配置之类的全部跳过。

使用 Gemini 需要从 Android Studio 上面登录 Google 账号,但是 Android Studio 不走系统代理,好几次尝试登录失败。

查阅相关技术文章后找到了解决办法:

开启 Clash 之后,去系统设置界面里找代理服务器设置,然后抄到 AS 的代理设置里。

之后再登录 Google 账号之后,就能使用 Gemini 了。

不过,还要考虑一下 Gemini 的可用区域或国家(比如目前香港并不在可用地区)。

之后通过一些协议,以及配置 Gemini 可访问的项目范围,就可以继续使用了。

搭建框架

由于现在的 AS 变化太大了,加上自己很久不写代码。看着 activity_main.xmlMainActivity.kt 两个文件自己都发懵。所以先问问 Deepseek 这是什么。

非常通俗易懂,Deepseek 深度思考的过程中考虑到我是个新手,列举都十分浅显易懂,最后还给出了学习建议。

回到 AS,通过 xml 编辑器的 Design 视图,把 EditTextButton 两个控件直接拖进来。

架子搭好了,接下来问问 Gemini:

很好,它能理解中文,这我就放心了。

(Gemini 的回答复制出来后会丢失排版,上面的回答是我自己重新排版的)

Gemini 给出的解答非常详细,而且它不是在在源代码上改动,而是告诉我解决办法,可以自己复制代码进去。

把代码复制进去运行了一下。

(因为忘了截图,这里只能口头描述了)

界面下方 1/4 的位置变为了 WebView,在文本框里输入网址,点击按钮提交以后,在下面显示出来。

但是测试几下就发现存在问题:默认以 http 打开,但是现在网址大部分网站都是 https 了。

这次我尝试交给 Deepseek 来处理:

我发现自己表述有点问题,重新修正了一下:

我试着把代码复制回去,但是并没有起作用,于是我又再问 Gemini。

实际阅读后发现,Gemini 其实只改了 button.setOnClickListener,因为我在和 Deepseek 讲的时候,Deepseek 并不知道有一个按钮监听事件。所以代码没有起作用。

而且我之前也没有仔细读代码,没注意到之前写的 if (url.startsWith("http://") || url.startsWith("https://")) 这个判定。

不过从结果上来说,至少是把最基本的功能实现了。

独立 WebView

接下来我打算把 WebView 放到单独的 Activity 里面,这样子既符合操作逻辑也方便对 WebView 单独处理。

不过稳妥起见,我还是先问问 Deepseek。

好吧,那就直接开工。

经过之前的教训,凡是要直接改代码的地方,我就直接问 Gemini:

看上去给的都非常详细。

我觉得一定没什么问题,满怀信心地点击了运行。

然后,app 闪退了……

赶紧看看 logcat 记录的错误日志

这里非常贴心地在错误旁边加了个 Ask Gemini,直接可以把错误信息发给 Gemini 进行分析。

一番折腾发现是自己没把之前在 MainActivity.kt 里面的代码清理干净…… OTZ

解析地址

接下来就是比较麻烦的部分。

首先,以抖音视频为例,以用户的角度来说,操作步骤如下:

通过 app 的分享功能获取到文本:

1
4.66 复制打开抖音,看看【西诺说影的作品】站直啰,别趴下(第一视角) 冯巩主演,一部让人看完... https://v.douyin.com/i5chLVyT/ W@M.jp OKj:/ 09/17 

提取出短链接:

1
https://v.douyin.com/i5chLVyT/

浏览器的UA使用PC模式,获取到网址:

1
https://www.douyin.com/video/7479005522700635418

通过网址提取到视频ID:

1
7479005522700635418

将视频 ID 给开放端口:

1
https://open.douyin.com/player/video?vid=7479005522700635418

将网址放进浏览器里打开


把步骤分开拆解,一步步来。

首先,先局限于处理抖音链接。

首先先对EditText的内容进行判定:

接下来再要求 Gemini 改代码:

到这里,判定功能实现了。

先写到这里,之后再研究。


🎵李宇春 - 下个,路口,见
🎵李宇春 - 下个,路口,见