一个人如何开发一款 App?

3个月前 (01-11) 0 点赞 0 收藏 0 评论 8 已阅读

我在南中医三年,一个人开发维护小轻Kiyomi

最初只有选课功能,本质上是一个特别封装的webview,其实说白了就是拿我小站客户端改的

但刚发出来的时候因为是唯一一个在当时支持手机选课的app,得到了远超我预期的欢迎程度

后来加了一键登陆,本质就是一个简单的密码保存界面,然后学校SSO网页上js自动提交账号密码

再后来加了体育选课,就是把主activity复制了一个改改菜单和地址

再后来加了很多什么教材系统啊校园卡系统啊还有雨课堂入口等等,甚至把书加加音频解析集成进来了,这时候我仍然保持每个功能单独一个activity,所以功能添加效率并不高

然后3.0的时候,我寻思我不能再这么一个个加activity了,开发效率太低了。于是我搓了两套简单的框架,一套是普通的单Webview,扩展了大量与系统原生api交互的js接口,代号Vanilla,扩展接口包括启动其他app,画中画,切换UA等等,甚至包括执行终端命令(所以我后来在小轻里用Vanilla重写了UXBoost),还可以扩展几个原生按钮以及在指定条件下触发注入js。第二套则是一个双Webview框架,侧边栏用第二个Webview做菜单,用来控制主Webview。这两套框架搓出来之后,我的功能添加速度就快多了,陆续添加了药典下载,分析化学计算器,考证查分等一大堆功能

然后4.0的时候,为了进一步把功能更新和底层更新独立开,我做了热扩展,可以直接添加指定格式定义好的json作为扩展功能,首个热扩展就是超星后台16倍速,这项功能在当时可以说是完全独一无二的,没有任何竞争者,我用了一种比较离谱的操作来劫持播放速度,就和后来写的国图下载脚本一样,扭曲,但能跑

截至我离开南中医停止更新,在小轻的生命周期里,小轻一直比南中医官方app更快更强,即使收费也难抵用户热情,小轻的官方群最高接近500人,但有超过一半的用户并未加入官方群,可以说在南中医每20个人就有一个人用小轻

小轻在生命周期里保持着多项最快记录,刷饭卡平均从点击到展示二维码只需要0.9秒,主界面启动速度在主流旗舰机上均小于100ms,甚至在某一次官网选课系统崩溃情况下仍然能正常选课,那一次小轻帮助了超过200人抢到自己想要的课

小轻也拥有自己的虚拟形象,设定是一个身高172的热爱汉服的飞机场(划去)少女,这个设定是当初按照我理想中的对象的标准设计的

反破解我最初是360加固,毕竟对学校内使用的,南中医里会脱360壳的人一只手都能数的过来

但后来觉得360加固体积太大,就上开源的dex2c方案了

签名校验是自己写的一套算法,没有任何一键过签名校验技术可以过,为什么呢,因为我干了一个在正常人看来非常离谱的操作,我直接去读取证书文件第八行计算md5和内置值比较,一键过校验的技术都在hook packagemanager,没人想到我用了一个非常暴力的办法校验签名。后来我干了一个更极端的操作,安装包仅v2+v3签名,检测到v1签名文件存在就退出,反正那时候我只支持9.0+了没有v1签名不是问题

小轻的开发方式也比较少见,因为我是做逆向破解出身的,小轻的开发完全没有用到android studio,全程都是我用逆向的方式手搓smali,主要依靠mt管理器,所以如果尝试逆向小轻,你会发现smali语句不会出现一些d8或者dx特有的传值习惯

小轻的PDF阅读器功能后来独立成了KiyomiPDF,前些日子发布了2.0版本

基于pdfjs打造的一个足够轻量化的pdf阅读器,欢迎各位体验

而现在因为在小轻中吃到了套壳的舒服,我现在也在逐渐转向尽可能使用PWA而不是开发原生app

例如我这一年里开发的545在线(昨天是545在线的上线一周年)

这是一个完全基于网页PWA开发的项目,但能提供APP一样的体验,可安装到本地也可以只是在浏览器中使用,界面和传统APP接近,但又可适配大屏,大屏会采用略有区别的更适合大屏的界面和交互

总之,一个人开发APP完全可行

截至到目前我并未接受过任何计算机相关的专业教育,如果你有计算机相关教育背景,对你来说难度只会更低

一个人如何开发一款 App?

本文收录在
0评论

登录

忘记密码 ?

切换登录

注册