Inevitable

文字所表现出来的美丽、恐惧。。还有率真之类的东西,我觉得在其他事物中还是很难寻得的。

0%

安卓开发 App-MessageEncrypt

第一个Android App。 前段时间他问我PGP的事情。的确安卓上没有适合并且适用的PGP加密软件,那就自己写一个呗。于是我开始了我的第一个Android开发。

我还特意没有选Java作为开发语言,我选择了kotlin。kotlin的可读性的确要比java强一些,除去它的各种令人头疼的特殊符号。虽然前几年Google宣布kotlin成为了Android开发的官方语言,但真的去仔细翻一翻官方文档,很多范例仍旧是Java的。那就只能看其他人写的类似程序片段,或者再github搜索相关api,看看其他人的做法。但是有些人的范例特别老,Api版本跟你不一样,这时候就要注意了。或者有的时候一个相同的功能有多种调用api实现的方法,虽然有的是错的或者有坑。

kotlin官方是宣称自己和java是百分之百的兼容。自己也提供了可以把java代码转为kotlin的工具。有的时候还是比较好用的,比如说匿名函数的生成。我对kotlin的匿名函数把握的很差劲,这个官方工具就帮了我不少的忙。但是它经常会犯一些低级错误。变量的声明每次都会错。而且初始化方面和java的变量也不同。我遇到最麻烦的事情就是kotlin的变量作用域。if里面的变量就只能再if中有效,catch也是。匿名函数的闭包也很强,对于新手来说,如何传导数值就成为了一个问题。解决方案便是以参数的方式传入,或者在class的开头,function的外面声明几个变量。这个几个变量的作用域还是挺大的,基本涵盖了整个class。

不得不吐槽的是,我百分之八十的时间都花在了研究如何使用api上,程序逻辑倒是不怎么花时间。感觉Android开发对于新手来说就是查字典。

程序的设计也是变动了很多此。从一开始的悬浮球设计到现在的文字选单设计。为了方便使用,我的想法是做成google translate那样,选中文字后,就会有一个悬浮球在手机屏幕右侧,一点击便可以查询。我找了很多,虽然有找到类似的设计,但是我看不大明白。抄下来,左改改右改改也是改不明白。后来我换成了选中文字后,在文字选择菜单处点击可以加密的方法。这个方法的点击次数与悬浮球设计是相同的。但是问题是很多app都是自己写的文字菜单,我的app的加密选项就无法显示。令人欣慰的是,当你打字的时候,那个输入框的文字选择菜单都是原生的,没有被修改过。

本来我打算的工作流程是,选择文字,点击加密,进行加密操作后,返回之后密文就已经替换了你原来选中的那些文字。但是Android的api似乎不允许我这么做。当用户点击加密的时候,activity进行跳转的同时,选中的文字就已经被替换了。

由于我没有过多进行适配和兼容的测试,所以倒也没有什么烦心的bug出现。

由于时间的原因,我还有其他事情要做,所以开发的时间比较短,而且我对android开发也比较陌生。在这样资源受限的情况下,我逐渐的领悟到什么叫保持简洁,关注于核心功能。先把核心功能开发出来。其他的东西再一步一步的加上去。我把复杂的PGP替换成了AES加密。ui没有进行专门设计,签名,散列值校验也都没做。

写完了第一版以后,接下来的问题就变成了维护,更新和写新的project怎么取舍了。

Github上的Readme也还没更新。Android Studio上整合的github插件是真的好用,它的conflict的处理非常的直观。日常简单使用完全足够。

Github链接,Google Play链接

欢迎关注我的其它发布渠道