时间:2021-05-19
一、几句话
二、详细
Android SDK
把你的Android SDK放置在你的主目录里或其他与应用无关的地方。一些IDEs在安装的时候会把SDK关联上,并把SDK放在IDE的同一个目录下。当你需要升级(重装)IDE或者更换IDE时你就会发现糟糕之处啦。另外,如果你的IDE在一个user账户下而不是在root下运行的话,就不要把SDK放在系统级目录下,否则在使用时需要 sudo 权限,
Build System
默认的选择是 Gradle。Ant限制比较多而且太大。使用Gradle,你可以很轻易的做到:
-编译不同的flavours 或应用的 variants
-创建简单的 类-脚本 任务
-管理和下载依赖
-自定义keystores
-等等
Android的Gradle插件同样被Google指定为新的标准编译系统,而且Google不断为其升级。
项目结构
有两种流行的选择:旧的Ant & Eclipse ADT项目结构;新的Gradle & Android Studio项目结构。你应该选择后者。如果你的项目使用旧的结构,那么换掉吧。
旧结构
新结构
new-structure├─ library-foobar├─ app│ ├─ libs│ ├─ src│ │ ├─ androidTest│ │ │ └─ java│ │ │ └─ com/futurice/project│ │ └─ main│ │ ├─ java│ │ │ └─ com/futurice/project│ │ ├─ res│ │ └─ AndroidManifest.xml│ ├─ build.gradle│ └─ proguard-rules.pro├─ build.gradle└─ settings.gradle新结构主要的不同在于拆分了'源代码集' (main,androidTest),这是来自Gradle的理念。
使用最高级别"app"有利于将你的app和其他你的应用所引用的库项目(如:library-foobar)做区分。然后settings.gradle保持应用对这些库的索引,而app/build.gradle可以指向这些库。
Gradle配置
通用架构请遵循Google's guide on Gradle for Android;
小任务(脚本),你可以使用Gradle来制作小任务而不是Shell、Python或Perl等,具体参考Gradle's documentation;
密码。在你应用的build.gradle中你需要为发布编译定义 signingConfigs。具体如下:
不要像下面这样写,这样会出现在你的版本控制系统里:
相反,你应该创建一个不会被添加到版本控制系统里的gradle.properties文件
KEYSTORE_PASSWORD=password123KEY_PASSWORD=password789这个文件会被gradle自动导入,所以你可以在build.gradle这样使用:
signingConfigs { release { try{ storeFile file("myapp.keystore") storePasswordKEYSTORE_PASSWORD keyAlias"thekey" keyPasswordKEY_PASSWORD } catch(ex) { thrownewInvalidUserDataException("You should define KEYSTORE_PASSWORD and KEY_PASSWORD in gradle.properties.") } }}(如果使用Maven可参考原文档)
库
Jackson是一个Java库,它可以实现对象和JSON数据的相互转换。Gson 也是一个类似的不错选择。不过我们觉得Jsckson更好因为它支持多种方式来处理JSON:流式,内存树模型和传动的JSON-POJO数据绑定。但是,记住,Jackson比GSON更加庞大,所以你要酌情考虑,如果你想避免 65k methods limit那最好用GSON。其他选择:Json-smart 和 Boon JSON
网络、缓存和图片。使用Volley 或者Retrofit。Volley也可以用来加载和缓存图片。如果你选择Retrofit,你可以用Picasso 来加载和缓存图片。然后使用 OkHttp 来执行有效的HTTP请求。这三种:Retrofit、Picasso和OkHttp都来源于同一样公司,所以它们互相补充。OkHttp 能用来与 Volley 相连接。
RxJava是一个响应式编程库,换句话说,处理异步事件。(具体可参考原文档)
Retrolambda 是一个Java库,它帮助你的Android或者其他早于JDK8平台上使用Lambda表达式。(具体可参考原文档)
最后,记住dex方法限制,不要使用太多库。(Android应用,当被打包成dex文件时,有一个最大限制:65535个引用方法[1][2][3]。如果你超过了限制就会发生严重错误。因此,不要使用刚过多库,使用 dex-method-counts 工具来决定使用哪些类从而保持在限制内,尤其要避免使用Guava库,因为它包含超过13k方法)
Activities和Fragments
Fragments应该是你在Android部署UI界面的默认选项。Fragments可以在你的应用里重用。我们推荐使用Fragements而不是 activities 来绘制界面基于以下几点:
Java包结构
在Android应用程序里的Java结构接近MVC结构(Model-View-Controller)。在Android里,Fragment和Activity实际上都是控制器类。而从另一角度来看,他们又是用户交互的一部分,也就是说属于视图View类。
因此,我们很难严格区分Fragment(或Activity)是控制器还是视图。所以从Java包角度来看,我们最好把Fragment放在它们自己的fragments包里,然后Activity放在最高级的包里面(遵循上文提出的建议)。当然,如果你想有2个或以上的Activity,那你就创建一个activitys包。
这样的话,整个结构看起来就是一个典型的MVC结构。一个Models包包含POJOs,用来转化API接口获取的Json数据,一个views包包含Views,notifications,action bar views,widgets等。Adapters是一个中间层,位于数据和视图之间。但是,它们通常需要通过getView()来输出View视图,所以你可以把adapters放在views包的子包位置。
一些应用程序级别、仅属于Android系统的控制器类,应该放在managers包里。各种各样的数据处理类,例如DateUtils可以放在utils包里。与后台服务器交互的类应该放在network包里。
总之,从与服务器交互到与用户交互的整体架构可设计如下:
资源文件
命名
遵循加前缀的惯例,类似type_foo_bar.xml,如:fragment_contact_details.xml,view_primary_button.xml,activity_main.xml。
组织布局文件
如果你不知道如何规范化一个布局XML文件,可参考下面惯例:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯。代码编写规范使用范围:J2EE项目开发。包命名规范:目的:包的命名规范应当体现
检查url规范化设计。url越短越好、目录层级尽量减少、可描述性文件名、url中包含关键词、url中字母要小写、使用连字符是实现url设计规范化的最重要体现,这
在Android项目的开发,由原来的eclipse中对Android项目开发,但是google不在对eclipse的ide上开发,由原来的eclipse转移到A
前言从历往经验来看,开发一个新项目,往往在刚开始部署项目,到项目的正式交付,以及交付后的后续维护,功能增强等过程,都需要对项目的一些已有结构和逻辑进行调整。因此
全面规范化生产维护(TotalNormalizedProductiveMaintenance,简称:TnPM),是规范化的TPM,是全员参与的,步步深入的,通过