安卓篱笆
标题:
安卓开发:“要”“不要”你说了算!
[打印本页]
作者:
GuiTarvvm2098
时间:
2017-11-30 04:05
标题:
安卓开发:“要”“不要”你说了算!
[attach]371[/attach]
开发Android应用的过程中,不能只满足于实现功能,应该遵循一些准则,使得你的代码优雅并且便于维护和扩展。这些准则之一就是我们应该做到如下几“要”和几“不要”。
Need
要
要使用Gradle以及Gradle推荐的工程结构
把密码以及敏感信息放在gradle.properties中
受限于65k method limit,尽量使用轻量的库
使用第三方库解析JSON数据
使用styles来避免layout xml中重复的属性
使用Genymotion模拟器(此模拟器真的很快)
必须使用Proguard混淆代码
Needn't
不要
不要自己写Http Client, 使用Volley或者OkHttp库
不要把一个styles.xml写得很大,尽量拆分
colors.xml不要写得复杂,只定义一个调色板就ok
dimens.xml也不要写得复杂,只定义通用的尺寸
不要把View的层级写得很深
项目结构Structure
Google推荐使用Gradle & Android Studio开发Android项目,新的工程结构是这个样子的:
Gradle配置builde.gradle
在我们app的builde.gradle文件中,我们需要针对release build定义signingConfigs , 也许我们会这么写:
这种写法是不推荐的,因为密码是敏感信息,我们应该将其放置gradle.properties中,应该这样:
然后build.gradle文件应该这样写:
当心dex方法超出65536限制,避免使用过多,过大的第三方库Android应用,当打包成dex文件的时候,方法数不能超过65536个。如果超过这个限制,打包的时候就会报错,尽量少使用第三方库。当我们要引入一个第三方库,同时有多种库选择的时候,我们要尽量选择放法数少的那个库,尽量保持轻量,我们可以使用dex-method-count来检测方法数。
Json解析analysis如果我们项目中需要用到Json数据解析,我们不要重复造轮子,尽量使用第三方库。优秀的Json解析库有Jackson、Gson、Json-smart、Boon JSON,推荐Gson, 因为Gson库更轻量,更好地避免放法数过大。避免layout重复属性avoid几乎每个工程都需要用到styles, 因为它对于一些重复定义的属性来讲,非常地方便。对于应用中的大多数文字内容来说,至少我们应该有一个通用属性,例如:
对于layout中的TextView, 我们这么引用属性:
不单单对于TextView, 对于其它控件:Button, ImageView等都需要定义通用的属性,在开发过程中,我们还应该持续性地对重复定义的属性进行抽象。
使用Genymotion模拟器Genymotion
工欲善其事必先利器,Android自带的模拟器一直被吐槽,速度太慢,太卡,开发效率降低地不是一星半点。Genymotion成功解决了我们的苦恼。除了速度快之外,Genymotion还能模拟GPS点,模拟网络链接等等。
使用ProGuard混淆代码ProGuard
ProGuard是用来压缩和混淆Android项目代码的工具,从安全和隐私角度考虑,我们是必须要混淆我们的代码的。
通常我们通过配置Gradle文件,当发布Release Apk的时候使用ProGurad压缩:
Android framework已经包含了默认的混淆配置,在SDK_HOME/tools/proguard/proguard-android.txt文件中。如果我们需要自定义哪些文件需要混淆,哪些文件不需要混淆,我们需要在my-project/app/pruguard-ruls.pro文件中做相应配置。
避免ProGuard去除掉需要的类或者类成员,使用keep选项:
-keep class com.xx.project.MyClass { *; }
避免ProGuard混淆某些类或者类成员,使用keepnames选项:
-keepnames class com.xx.project.MyClass { *; }
使用Volley或者OkHttp库Volley&OkHttp
不要自己写Http Client, 使用Volley或者OkHttp库。
Http Client开源解决方案有好几个,okhttp, Retrofit, android-async-http和Volley, 在平时项目的开发中,我们应该选择哪种解决方案呢?
okhttp与async http.
okhttp 和 async http是一个基础的通信库,都很强大,但需要自己封装使用才更方便。另外okhttp已经被谷歌官方用在android源码中了。
Retrofit 与 Volley
Retrofit和 Volley是属于比较高级点的封装库了。
如果是标准的RESTful API,那么用Retrofit会非常爽!网络交互部分代码量可以减少90%。同时支持Gson,契合度很高。
另外,Retrofit和okhttp是亲兄弟,建议一起用,okhttp是底层库,能够支持一些非标准的HTTP方法,比如PATCH方法。
Volley自己的定位是轻量级网络交互,适合大量的,小数据传输,如果你的项目比较大,那么目测还得把volley再次封装才会好用一些。
拆分style split
不要把单个style文件写得很大。
我们不能只写一个styles.xml, 把单个文件写得很大,难以维护。
Android SDK支持其他文件,styles文件只要有XML标记<style>就可以。因此我们也许会有这些style文件:styles_home.xml,styles_item_details.xml,styles_forms.xml。style文件必须放在resalues下面。
colors.xml简单点 colors.xml
colors.xml尽量保持简单,不能什么颜色都定义在里面。
Don't do this:
我们定义一个调色板就可以了。
Instead, do this:
dimens简单点 dimens
我们也应该定义一个典型的间距和字体大小, 一个好的dimens.xml示例如下:
不要把View层级写得很深 View
我们在写静态布局的时候,往往为了实现布局,不注意就把view嵌套得很深,如下一个反面教材:
这样写,会带来很多问题,首先是性能问题,体验效果会不好。另外一个问题详见StackOverflowError。
因此,尽量保持我们的view层级扁平:学习如何使用RelativeLayout, 如何优化我们的layouts以及如何使用<merge>标签.
当然,这里只是列举的部分“要”与“不要”。实际开发中,还有更多“要”与“不要”。同学们在学习的过程中,要善于总结,避免重复走一些弯路。
彼岸繁华三千,智游愿意做你们梦想的“摆渡人”。智游教育现开设Html5、UI、Python、PHP、ios、Android、大数据、网络运营、网络安全工程师、VR、动画导演特训班等十二大课程,铁血教育,军事化管理,项目推进式教学,让你的梦想与情怀落地。
想了解更多?
那就赶紧来关注我们微信公众号:智游臻龙集团
欢迎光临 安卓篱笆 (http://www.okapk.cn/)
Powered by Discuz! X3.2