知识改变命运 学习成就未来!

天津创世纪信息技术有限公司大学生就业创业培训|大数据云计算培训|专、本科学历教育取证培训|行业资格认证培训|航空票务就业培训|

022-58715975

安卓工程师最想解决的技术难点

文章来源:天津创世纪信息技术有限公司   点击:   更新时间:2018-11-09 09:28:31
摘要:现在国内的安卓就像是是三体里面的黑暗森林。应用商想方设法的在你的手机里存活下去甚至挤掉对方的手机应用。手机制造商又想方设法的维护手机内存及电量,犹如地球文明与三体文明。...
      国内的安卓就是三体里面的黑暗森林。应用商在想方设法为了在你的手机上生存下去制造属于自己的保活方法甚至挤掉其他应用,而手机制造商在想方设法维护用户的手机的电量和内存平衡。是不是很像地球文明和三体,以及歌者文明呢?

1、TextView和文本显示需要重新设计

第一,TextView文字排版有很多智障BUG,典型的比如全半角混合文本断行错误(这个错误在安卓6.0以前很多情况下无解,别怀疑,我都尝试改framework了),maxLines与Ellipsize冲突等等

 

第二,安卓文本绘制的测算很奇葩,是依据ascent与baseline来计算字体大小,这就意味着你设置 TextView 的字体大小为比如20dp 的时候(视图是依据文本的top和bottom计算的),匹配内容高的视图的大小事实上要大于20dp,字体越大,差异越大。这往往导致安卓在进行文本行布局设计是,不能像 iOS 一样精确,特别是大字体的情况下(个人经验是字号18dp以上)

 

第三,由于对 Spannable、Edit 之类的支持,TextView事实上是一个很重的组件,一个组件里封装了太多的功能,但事实上大部分情况下大家使用 TextView 只是为了显示一行字而已,所以 TextView事实上是RichEditText 扮演了 Label 的角色,极大浪费了系统性能。

 

2、AAR的设计很智障

 

讲真,我情愿使用jar包加资源文件,aar包和 jar包的区别在于,aar包是需要编译的而jar包不一定需要,而且,aar包在编译的时候是不生成R.java的,只生成R.txt,其中的区别大家自己体会。

 

3、缺少官方的代码加壳机制

 

可以参考一些大厂的做法,可以选择将编译的dex和arsc加壳封装成二进制加密文件,并提供一套更有效的二次打包防止策略,目前官方提供的签名机制与混淆方案安全性无限接近0。

 

4、自定义xml资源属性不能被索引

 

比如declare-styleable和attr定义的自定义xmlns与属性目前 IDE 并不能索引到和补全,给撸码的流畅性造成了一定的阻碍,不理解给这个东西加个索引和补全的难点在什么地方。

5、R.java不能自定义

 

你可以不推荐开发者修改 R.java,但不应该完全阻止一些情况下开发者修改 R.java(我知道事实上是可以改的,但在 Android Studio的 Gradle 托管机制下很麻烦,过去ant倒是挺好改的)。

 

6、缺乏一个好的官方loading组件

 

目前大多数 loading 都是用对话框实现的,但由于智障般的 WindowLeak 存在,使用对话框做 loading 会出现各种奇葩问题,如果用视图做 loading,又必须解决 back 键问题,建议官方给 Activity 添加一个loading显示和自定义机制。

 

7、建议官方给第三方推送建立一个标准

 

由于总所周知的原因,安卓的官方推送在我朝是不能用的,但官方有没给第三发推送制定标准,导致用了第三方推送的情况下各种混乱。

 

8、更好的 JNI 支持

 

虽然已经有了一定的改善,但目前进行 Native 开发依然比较麻烦,希望官方再推出一个 JNI-Module,方便开发者进行 Java + C/C++联合开发。

 

9、更好的内存 GC 与泄露监察工具

 

可以参考下Leakcanary,调试模式下,通过 ADB 抓取 APP Runtime时的GC与泄漏信息

 

10、ADB 能不能给我加个input touchscreen down/move/up ?

 

一定要用sendevent好烦啊!我要模拟个滑动事件,还得先去取屏幕设备id,残。

 

11、缺少官方二维码扫码库

 

第三发的ZXing和ZBar在没有优化的情况下性能烂得一批,iOS强多了,这个还要引申出另一个问题就是安卓智障的自动对焦。

 

12、更好用的横竖屏切换响应式框架


 

13、碎片化

当然说好的统一呢?统一推送联盟会员不少,一年了?啥都没做出来。

14、答应我,能不能WebView 崩溃的时候别拉着主进程一块儿死

15、内存使用管理,滥用内存的问题能不能给解决

16、统一规范吧,求你了。各厂商各玩各的,导致适配很麻烦的。

来源:知乎

本周精华


X